远程调用服务的设计构思(zookeeper的一种应用实践)

来源:互联网 发布:Knn算法预测天气预报 编辑:程序博客网 时间:2024/06/13 07:52

总结远程调用技术:

1、通信技术:(netty技术)Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

2、序列化和反序列化技术:例如window下序列化的对象,可以在linux上进行重新构建。hadoop自己设计了一套序列化和反序列化机制。我使用的是hessian技术。

3、压缩技术:传输数据过大,那么对数据的压缩就会显得十分重要,这里我推荐一个压缩技术snappy,它是一种高效的压缩和解压缩包,google公司内部广泛使用的一种压缩技术。

4、高并发的技术:apache的common-pool是一个非常好的池技术,我们可以将线程都预先创建好,然后放入到common-pool池进行管理。

5、非侵入式:使用spring技术,当我们系统里把远程调用框架引入后,配置好相关的参数,我们可以把用于远程调用的方法定义在spring的配置文件里,那么在程序里调用的时候,利用spring直接获取这个bean,那么对于远程调用的开发就和我们在action里调用server的方法没啥区别了。

6、负载均衡:布式系统都离不开负载均衡,好的负载均衡可以充分利用好不同服务器的计算资源,提供系统的并发量和运算能力,少于10台服务器可以使用两种策略:一种是简单轮询,比如有6台服务端,我们会把第一个请求给第一台服务器,第二个请求给第二台,依次类推,等6台循环完毕,又从第一台开始;第二种是随机方式,即使用random函数,当然更多的服务器我就不知道有什么轮询机制比较好。


原创粉丝点击