技术架构的发展从单体到分布式,是一种顺势而为的架构演进,也是一种被逼无奈的技术变革。架构的复杂度能够体现公司的业务的复杂度,也能从侧面体现公司的产品的发展势头是向上的。
和传统的单体架构相比,分布式多了一个远程服务之间的通信,不管是soa还是微服务,他们本质上都是对于业务服务的提炼和复用。那么远程服务之间的调用才是实现分布式的关键因素。
而在远程通信这个领域,其实有很多的技术,比如Java的RMI、WebService、Hessian、dubbo、Thrift等RPC框架,现在我们接触得比较多的应该就是RPC框架dubbo以及应用协议Http。其实每一个技术都是在某一个阶段产生它的价值,随着架构的变化以及需求的变化,技术的解决方案也在变。所以我们才需要不断的学习
我在前面的几次课,讲到了RPC的底层原理,服务与服务之间的调用无非就是跨进程通信而已,我们可以使用socket来实现通信,我们也可以使用nio来实现高性能通信。我们不用这些开源的RPC框架,也可以完成通信的过程。但是为什么要用现成的框架呢?
原因是,如果我们自己去开发一个网络通信,需要考虑到
1. 底层网络通信协议的处理
2. 序列化和反序列化的处理工作
但是这些工作本身应该是通用的,应该是一个中间件服务。为整个公司提供远程通信的服务。而不应该由业务开发人员来自己去实现,所以才有了这样的rpc框架,使得我们调用远程方法时就像调用本地方法那么简单,不需要关心底层的通信逻辑。