服务注册与发现

2017-03-25
阅读 2 分钟
10k
在单体应用中调用往往局限在语言层面,也就是方法的调用。当服务被拆解,单体应用变成了多个服务之后,服务间“对话”就变成了一个重要的话题。目前最常见的方式是借助REST或RPC。还有一种方式是通过队列,其原理与RPC类似。

使用Akka Cluster Singleton实现集群单例

2017-01-10
阅读 2 分钟
6k
具体问题的描述就不在这篇文章赘述了,我们仅简单回顾一下第一种解决方案:覆写persistenceId()时,加一个UUID,这样三台服务器上的Actor就不会再共享journal。虽然这个方案已经可以解决问题了,但并不是最理想的。首先,现在的项目中只是用akka处理一些无状态的任务异步处理,但是将来肯定要用akka作更多的事情。比如,...

使用akka作异步任务处理

2017-01-08
阅读 5 分钟
7k
同步转异步是一种常见的优化手段,最近一次在做调优时便大量使用了这种方式。通常在一个业务场景中会包含多个操作,有些操作的结果需要让用户立马知道,但有些操作则不需要。这些用户不需要等待结果的操作,我们在编程的时候便可以异步处理。这么做最直接的效果就是缩短接口响应速度,提升用户体验。

使用ConstructR启动akka集群

2017-01-05
阅读 3 分钟
2.9k
akka集群有两种启动方式。一种是手动加入节点(在akka中节点叫做Node); 另一种是通过在配置中指定seed node。seed node是集群的通信节点,用来进行集群的创建和选举。通常我们会在配置文件中配置一系列的seed node,当新的节点想要加入集群时,只要与其中任何一个取得通信即可。需要注意,当启动第一个节点时,这个节点一...

使用Java获取服务器IP地址

2017-01-04
阅读 2 分钟
6k
{代码...} write on 2017-1-4

Scala和范畴论 -- 对Monad的一点认识

2017-01-04
阅读 6 分钟
8.3k
所有一切的开始都是因为这句话:一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已,有什么难以理解的。第一次看到这句话是在这篇文章:程序语言简史(伪)。这句话出自Haskell大神Philip Wadler,也是他提议把Monad引入Haskell。Monad是编程领域比较难理解的概念之一,大部分人都是闻"虎"而色变,更不用说把...

git rebase命令

2017-01-04
阅读 3 分钟
4.6k
我们在作分支合并的时候最常用的就是merge操作,但是执行merge之后,会产生一个新的commit,例如:Merge branch 'branch-1'。这个commit把两个branch合并到一起并作了一次新的提交。但是,如果使用rebase的话就会避免这个问题。我们来看一个例子,下边是我分别用merge和rebase之后的git log。

对创业公司技术选择的一些思考

2016-12-19
阅读 4 分钟
5.3k
在过去四年多的时间里我有四分之三的时间都是呆在创业公司,其中有一年的时间在ThoughtWorks度过。中途有一次机会进入大公司,但是考虑再三还是放弃了。转而加入了一个创业公司。就这几年在创业公司做技术的经历,来谈一下创业公司的技术选择。

Introducing FP in Java8

2016-12-17
阅读 8 分钟
2.4k
自从2013年放弃了Java就再也没有碰过。期间Java还发布了重大更新:引入lambda,但是那会儿我已经玩了一段时间Scala,对Java已经瞧不上眼。相比Scala Java 8 的lambda还是too young, too naive!再后来,我有机会学习了一下C#。虽然C#师承Java,但它已经是一门非常现代化的语言了,青出于蓝而胜于蓝。首先是LINQ,提供了...

一个关于写好代码的案例

2016-09-17
阅读 2 分钟
2.6k
今天上班修复一个bug的时候,发现自己原来写的一个函数已经被改的丑陋不堪。作为一个有原则的程序员,这样的事情最不能忍受,拯救代码之余,也有了下边的一些关于如何写好代码的想法。