如何实现一个简单的RPC( 三 )


5、服务注册中心 正如之前提到的,要调用服务,首先你需要一个服务注册中心,告诉你对方服务都有哪些实例 。Dubbo的服务注册中心是可以配置的,官方推荐使用Zookeeper 。如果使用Zookeeper的话,要怎样往上面注册实例,又要怎样获取实例,这些都是要实现的 。
6、负载均衡 如何从多个实例里挑选一个出来,进行调用,这就要用到负载均衡了 。负载均衡的策略肯定不只一种,要怎样把策略做成可配置的?又要如何实现这些策略?同样可以参考Dubbo,Dubbo - 负载均衡
7、结果缓存 每次调用查询接口时都要真的去Server端查询吗?是不是要考虑一下支持缓存?
8、多版本控制 服务端接口修改了,旧的接口怎么办?
9、异步调用 客户端调用完接口之后,不想等待服务端返回,想去干点别的事,可以支持不?
10、优雅停机 服务端要停机了,还没处理完的请求,怎么办?
......
诸如此类的优化点还有很多,这也是为什么实现一个高性能高可用的RPC框架那么难的原因 。
当然,我们现在已经有很多很不错的RPC框架可以参考了,我们完全可以借鉴一下前人的智慧 。
后面如果有(dian)机(zan)会(duo)的话,也将和大家分享一下如何一步一步优化现有的这块RPC代码,把它做成一个小型RPC框架!
参考

  • 一本很棒的分布式书籍:《大型网站系统与Java中间件实践》
  • Dubbo 使用文档
  • Dubbo 源码开发手册




推荐阅读