异步通信在生活中的例子_【分布式系统遨游】分布式通信

为什么需要分布式通信

我们之前在讲分布式资源调度的时候,把分布式系统中的各个节点与操作系统的进程做了类比。我们知道,操作系统的进程之间由于需要数据的交换,是需要进程通信机制的。那么同理,分布式系统之间同样需要通信。在业务层面,每个分布式系统一般都承载着一个微服务,所以,微服务之间也一定是需要通信的。比如,我们各条业务线均需要查询用户中心微服务的数据等等。我们常用的通信方式有三种:RPC、发布-订阅、消息队列。

RPC

在传统的B/S模式中,服务端会对外暴露接口,然后客户端通过调用这个接口来完成二者之间的通信。那么在分布式系统中,我们同样也可以采用这种模式。但是,B/S 架构是基于 HTTP 协议实现的,每次调用接口时,都需要先进行 HTTP 请求。这样既繁琐又浪费时间,不适用于有低时延要求的大规模分布式系统,所以远程调用的实现大多采用更底层的网络通信协议。我们先用一张图俯瞰一下RPC的架构:

c5f8520c500e80b759efe40284c4a86b.png

在这里,订单系统进程并不需要知道底层是如何传输的,在用户眼里,远程过程调用和调用一次本地服务没什么不同。这,就是 RPC 的核心。即图中的第3步和第8步,对我们调用方是透明的。与我们经常使用的接口调用不同,图中的网络通信基本是基于TCP协议自己封装的一些协议。这样做可以约定通信双方的数据格式,从而让客户端封包和服务端解包更加快速,更加适用于分布式系统。这里的通信协议封装可参考Redis的RESP协议与FastCGI协议。

RPC的典型实现 - Dubbo

假设我们要自己去实现一个RPC通信框架,我们应该如何实现呢?假如我们用4个调用方与4个服务提供方,我们该如何管理他们呢?

8a281bf88c350006d72f3f76db3f9dfa.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值