微服务之通信

微服务架构中,服务与服务之间的通信,通常是采用轻量级的的通信方式 轻量级一般指与语言平台无关的协议

同步通信与异步通信

消息的传递,分为同步消息传递和异步消息传递

同步消息传递的场景:

当消息发送者希望在某个时间范围内收到响应,然后在进行下一个任务。基本上就是他在收到响应之前一直处于阻塞状态

异步消息传递的场景:

发送者并不要求立即收到响应,而且也不会阻塞整个流程。响应可有可无,发送者会执行剩下的任务

RPC(Remote Procedure Call)

RPC是指远程过程调用,有A、B两台服务器,一个服务部署在A服务器上,想要调用B服务器上应用提供的函数、方法,由于不再一个内存空间,不能直接调用,需要通过网络像调用本地方法一样,调用B服务的函数或者方法。如上的调用机制可能导致各个系统之间的耦合度较高

RESTFUL

以资源为核心,能够保持应用的无状态性,利于集群的水平伸缩,但是对于个系统或者各功能之间,如何标准化资源结构来确保能够接纳多样而标准的各方请求。

JMS(Java Message service)

JMS消息有queues和topic两种消息类型,支持事物,能够自定义消息格式(消息头、属性、内容)

queues生产/消费者模式
  1. 消息生产者生产消息发送到queues中,然后消息消费者从queues中取出并且消费消息
    
  2. 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息
    
  3. queue支持存在多个消费者,但是对于一个消息而言,只会有一个消费者可以消费
    
topic发布/订阅模式

消息生产者将消息发布到topic中,同时有多个消息消费者来订阅该消息,发布到topic中的消息会被所有订阅者订阅消费

参考:微服务架构与实践-王磊

猜你喜欢

转载自my.oschina.net/Alexyeh/blog/1621702
今日推荐