分布式系统的那些事儿(三) - 系统与系统之间的调用

系统与系统之间的调用通俗来讲,分为本地同一台服务器上的服务相互调用与远程服务调用,这个都可以称之为RPC通信。浅白点讲,客户访问服务器A,此时服务器要完成某个动作必须访问服务器B,服务器A与B互相通信,相互调用,A访问B的时候,A挂起,等待B的响应,B响应返回相应的数据个A,A再返回给用户,这就是一个很简单的栗子。

举个常见栗子,用户上传图片,用户上传图片首先会经过自身的服务器,然后再对图片进行处理,此时图片处理放在图片服务器中进行,那么我们只需要调用图片服务器提供的接口即可,然后等待响应返回的图片地址,此时我们队它进行额外的处理,保存到数据库然后在返回到前端进行显示。

再不明白就说说这次的顺丰和菜鸟数据安全事件,就是你调用我我调用你这样的一些列RPC通信。

其实在多年以前,系统之间的通信通过建立tcp协议来进行交互,非常麻烦,而现如今使用RPC的话那么就简单的多了,很多细节方面的事我们无需关注,比如socket啊,数据的转换啦解析啦等等。

RPC通信在系统之间的主要数据格式会以json为主,当然也有xml的形式,但是不多,不过很多老系统还是都会以xml为主。

在传输过程中,系统和系统之间的通信通过网络,而通信并不会保证每次都会成功,所以各类错误也一定要完善,就像咱们有时候对接第三方接口那样,会提供很多的错误码供我们分析,甚至还有超时请求的响应时间配置等等。对于这一系列的异常以及错误,我们一定要捕获并且处理,不然在顶端的客户不知道系统发生了什么而一直等着,这样是不人性化的。

系统之间通信收到网络的影响很多时候响应会比较慢,此时的用户可能会在客户端多次点击按钮,这样被调用的服务端就会执行多次,那么就要考虑系统的幂等性,这个不多说了,以前的帖子里有讲过。

​(未完待续)

 

posted @ 2017-06-08 09:08  风间影月  阅读(3637)  评论(0编辑  收藏  举报