一个例子
- 同样是typesafe的经典例子。
- 例子提供的服务是传输文本。当文本发给frontend节点,它会委派backend节点,backend执行转化任务,把结果返回给原来的客户端。
- 新的backend节点和frontend节点,都可以动态地在cluster上增减。
2.3.2的cluster还有些想实现的东西没有实现,包括:actor分区(负载均衡) actor handoff(临时故障时的actor处理) actor重新平衡(增减节点时有用) actor状态复制机制(类似做M/S作用)
2.3.2的cluster已经有的能力有:节点-集群-leader节点; membership; gossip协议同步状态; VECTOR CLOCKS保障顺序; 失败检测-节点不可达算法; seed节点-新节点加入时可以向这些节点发消息,但也是可以向任意成员发的; membership生命周期有joining up leaving exiting removed unreachable几种状态。
Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。
就是个壳子,方便原来做web开发的同学快速切入移动端开发。 本手记最终将生成“五四陈科学院”android版本和ios版本。
基础环境是rmbp,有java环境,有xcode环境。
随着所有的在高可用服务器设计上的炒作,以及nodejs背后的风行,我想关注一些IO的设计模式,却一起没有足够的时间。现在正在完成的一些研究,我想最好记下这些资料以备查。让我们跳上IO bus兜风去。
根据作的阻塞或非阻塞类型,以及IO的准备就绪、完成事件通知的同步和异步类型,一共有四种不同方式的IO。
总结这些年经验,进行构架演进的方向选择时,大致要做到下面的目标:
在使用java web container的时候,我们都在前面挡一层nginx,方便使用各种nginx的功能,设置成代理。 访问特别多的时候发现,服务器上存在大量的TIME_WAIT状态的连接。 经分析,可能是nginx早期版本的upstream还是使用的1.0的短连接代理,java container老是以1.0的方式主动断开进入TIME_WAIT状态,浪费了大量的连接。
春节期间收集的各种有意思的技术微博,这里是汇总帖。技术方向包括了分布式、开源、产品、关键领域,等等。排名不分先后。
各种数据库连接池性能对比 http://t.cn/zjVqSNg 结论:1) Druid是性能最好的数据库连接池,tomcat-jdbc和druid性能接近。2)proxool在激烈并发时会抛异常,完全不靠谱。 3) c3p0和proxool都相当慢,慢到影响sql执行效率的地步。4) bonecp性能并不优越,采用LinkedTransferQueue并没有能够获得性能提升
基础环境
rmbp
8G MEM
Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz 四核 八线程
oracle jdk 1.7.0_45
原理
如上图,是类似tomcat的nio实现过程,不过将queue换成了高性能的disruptor,可能会得到更好的性能。可调整参数为numAcceptors,numSelectors,numWorkersPerSelector三个值。
测试的代码位置在 https://github.com/54chen/disruptor_thrift_server 项目中的BenchmarkTest同时启动一个server,同时对其进行压测。