赞
踩
现在的大规模系统中,经常会将它们做一些服务化拆分,这个过程也叫做微服务,而微服务会带来一些新的问题,主要有两个:
第一个问题可以用RPC框架来解决。只要涉及到网络通信,我们就可能用到RPC,RPC是解决分布式系统通信的一大利器
RPC 的作用就是体现在这样两个方面:
RPC VS Web Service
那么项目在使用了RPC框架之后,会发生什么变化呢?
在性能上的变化是不可忽视的。举个例子:
那么,我们要如何优化RPC的性能,从而尽量减少网络调用对性能的影响呢?(也就是说,RPC框架对性能的要求是非常高的)
一次完整的RPC过程如下:
从上图中国可以看到,有网络传输的过程,也有奖请求序列化和反序列化的过程。所以,如果要提升RPC框架的性能,需要从网络传输和序列化两方面来优化。
怎么做呢?需要做的是:
在选择序列化的时候需要考虑哪些因素呢?
综合上面的几个考虑点,序列化备选方案主要有以下几种:
那么,如何选择这几种序列化协议呢?建议
如刚才所讲,RPC 是解决应用间通信的一种方式,而无论是在一个大型的分布式应用系统还是中小型系统中,应用架构最终都会从“单体”演进成“微服务化”,整个应用程序会被拆分成多个不同功能的应用,并把它们部署在不同的服务中,而应用之间会通过RPC进行通信,可以说RPC对应的是整个分布式应用程序,是“经络”一样的存在
但是拆分完的系统怎么保持跟未拆分前的调用方式一样呢?我们总不能因为架构升级,就把所有的代码都推倒重写一遍吧。
RPC框架能够帮助我们解决系统拆分后的通信问题,并且能让我们像调用本地一样去调用远程方法。利用RPC我们不仅可以很方便的将应用程序从“单体”演进成“微服务”,而且还能解决实际应用开发过程中的效率低下、系统耦合等问题,这样可以使得我们的系统架构整体清晰、健壮,应用可运维度增强
当然 RPC 不仅可以用来解决通信问题,它还被用在了很多其他场景,比如:发 MQ、分布式缓存、数据库等
RPC提供了一种透明调用机制,让使用者不必显示的区分本地调用和远程调用。RPC 虽然可以帮助开发者屏蔽远程调用跟本地调用的区别,但毕竟涉及到远程网络通信,所以这里还是有很多使用上的区别,比如:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。