Netty+Zookeeper实现一个类似Dubbo的RPC框架

一、说明

1、RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。

2、Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty是一个基于NIO的客户,服务器端编程框架,通俗的讲,Netty封装了Socket处理,方便使用了。

3、ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

4、Dubbo是阿里巴巴开发的一个分布式服务框架,是为了解决之前垂直应用架构出现的一些问题。具体请查看参考文档3。


二、实现步骤

具体实现步骤请查看参考文档1——轻量级分布式 RPC 框架,在该篇文章末尾有源代码下载地址(https://github.com/luxiaoxun/NettyRpc)。文章里面有项目实现的步骤和代码说明。


三、总结

写这篇文章的目的,并不是积累工作中遇到的知识点(经验教训),而是记录一个有趣有用的例子(即参考文档1中的项目),并表达一下激动的心情。Netty的基本原理(基于事件驱动异步的Socket通信)很简单,Zookeeper也是一样(服务提供方到Zookeeper注册,服务调用方通过Zookeeper找到调用服务的地址),不过在上面的例子中却是有Netty、Zookeeper、Java代理、多线程编程和Spring注解等知识点的一个很好融合的项目。项目不大(源代码才100K多),实现也很简单,注释也比较清晰,让自己受益良多,在此感谢项目的开发者!



参考文档:

1、http://www.cnblogs.com/luxiaoxun/p/5272384.html 一个轻量级分布式RPC框架--NettyRpc

2、http://my.oschina.net/huangyong/blog/361751 轻量级分布式 RPC 框架

3、http://lippeng.iteye.com/blog/1907279 Netty

4、http://doc.okbase.net/congcong68/archive/112508.html Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

5、http://blog.csdn.net/dcx903170332/article/details/49472015 DUBBO启动为啥不用web容器启动



猜你喜欢

转载自blog.csdn.net/tongdao/article/details/51417153