服务器进程间RPC长连接实现的思考
最开始比较系统的接触rpc应该还是在支付宝实习的时候,当时给的任务就是利用netty写一个java的rpc框架,然后后期还有了接入config的需求,这应该算的上是自己比较全面的接触到类似于分布式,服务化等概念。
rpc只是一种概念,可以有很多种的实现方式,可以直接http来做,接触到很多公司后端服务之间的调用就是直接通过http来做的,这种实现的方式好处就太多了,简单,现成可用的库很多,缺点也很多,性能,系统伸缩性等都有比较明显的限制。
更加成熟的分布式后端解决方案应该还是类似于阿里的那一套基于服务化的系统设计,一般情况下都有一个config中心,用于注册进程和服务的信息,进程之间直接建立连接发起rpc请求,对于业务层面,一般情况下都是提供比较简洁的同步接口,类似于如下:
service = config.get_service("fjs")
res = service.hello("你好")
通过这种同步的rpc方式,构建出可伸缩的后端系统。(个人觉得这里提供如上的一种简洁的同步的api接口是非常重要的,因为也接触过node.js的一些rpc方案,通过注册回调的方式来实现rpc来回,感觉这对上层写业务来说是一种灾难,这方面node.js确实感觉没有太好的方案,好像fib.js不错,ja