springcloud学习手册-微服务架构中的进程间通信

导读 | 通信即是连接

一、通信即是连接,事务与事务的交流就是通过通信传输的

【定义】 通信,指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法,任意媒质,将信息从某方准确安全地传送到另方。

引用「Chris Richardson 微服务系列」微服务架构中的进程间通信文章中说:

  1. 强调的是服务与服务间彼此的调用。
  2. 强调的是服务与服务间彼此的交互。
  3. 我们可以理解成,服务与服务间调用和交互就是通信。

二、哪调用或交互都有哪些风格呢?

【什么是IPC】首先要了解什么是是IPC?

IPC(Inter-Process Communication,进程间通信)。重要就是理解IPC就是进程之间的相互通信。类似于上面图说的一样,我们可以把进程比拟一个个体,个体与个体是要相互交流的,没有交流个体也没有存在的意义了。

那再引申一下个体与个体交流都需要什么方式呢?拿咱们人类举例子说明,人与人交流要靠语言、文字、通过书信、邮件、电话、短信等方式进行表达交流。那同样服务与服务间交流通信也是要有具体的方式和机制的:

引用「Chris Richardson 微服务系列」微服务架构中的进程间通信文章中说:

  1. 第一维度是服务间交互是一对一还是一对多; 一对一:每个客户端请求只会被一个服务实例处理。 一对多:每个请求将会被多个服务实例处理
  2. 第二个维度是交互是同步模式还是异步模式: 同步:客户端期望来自服务端的及时响应,甚至可能阻塞并等待。 异步:客户端等待响应时不会阻塞,对异步来讲,及时响应并不是必须的。

三、如何定义API

通常来说,使用 API 是更好的解决方式。API是服务与客户之间的契约。所以需要程序员使用一些接口定义语言interface definition language (IDL)准确定义服务API。

使用异步基于消息的通信模式,比如AMQP、STOMP。

引用「Chris Richardson 微服务系列」微服务架构中的进程间通信文章中说:

引用「Chris Richardson 微服务系列」微服务架构中的进程间通信文章中说:

当然,也可以,服务可以使用基于请求/响应的同步通信模式,比如基于Http的REST或者Thrift。

引用「Chris Richardson 微服务系列」微服务架构中的进程间通信文章中说:

引用「Chris Richardson 微服务系列」微服务架构中的进程间通信文章中说:

四、消息格式

这些通信模式有不同的消息格式,服务可以使用基于文本格式、方便阅读的JSON 或者 XML格式,也可以使用效率更高的二进制格式(比如Avro或Protocol Buffers)。

如果你是要消息机制,API就由消息频道和消息类型组成;

如果你使用http,API就是由URLs以及request/response格式组成。

五、总结

微服务需要使用进程间通信的机制进行交互,当设计你的服务如何通信的时候,需要考虑。

【注明】:本文有一些文字和图引用了,世界著名的软件大师 Chris Richardson微服务系列博客中的内容。(这位大师写的微服务非常好,在此表示敬意)。

声明:文章属于个人原创,转载请注明文章出处

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2017-12-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构

多研究些架构,少谈些框架(2)-- 微服务和充血模型

上篇我们聊了微服务的DDD之间的关系,很多人还是觉得很虚幻,DDD那么复杂的理论,聚合根、值对象、事件溯源,到底我们该怎么入手呢? 实际上DDD和面向对象设计、...

2805
来自专栏我是攻城师

如何实现Solr自定义评分查询

3357
来自专栏小石不识月

微服务编排

在 Jexia 中,我们相信微服务架构是组织我们的后端云的最佳方式 —— 它可以很好地进行关注分离(Separation of concerns),并为特定任务...

1708
来自专栏斑斓

剖析响应式编程的本质

基于Actor的响应式编程计划分为三部分,第一部分剖析响应式编程的本质思想,为大家介绍何谓响应式编程(Reactive Programming)。第二部分则结合...

3576
来自专栏木宛城主

浅谈 SOLID 原则的具体使用

SOLID 是面向对象设计5大重要原则的首字母缩写,当我们设计类和模块时,遵守 SOLID 原则可以让软件更加健壮和稳定。那么,什么是 SOLID 原则呢?本...

1909
来自专栏服务端技术杂谈

乐视支付架构

架构 乐视 订单架构 分库分表 构建一个支撑每秒十万只读系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等。每秒钟数十万数据更新操作,在任何...

3248
来自专栏李成熙heyli

性能优化三部曲之二——通用纯前端优化首屏时间

背景: 对构建的改造已经完成,目前构建的能力可以较为灵活地支撑进一步的优化 希望进一步减少首屏时间,将首屏时间控制在2秒以内 页面情况: 优化之前,并没有上报...

2659
来自专栏祝威廉

Spark Streaming 的玫瑰与刺

说人话:其实就是讲Spark Streaming 的好处与坑。好处主要从一些大的方面讲,坑则是从实际场景中遇到的一些小细节描述。

633
来自专栏Android 研究

Retrofit解析1之前哨站——理解RESTful

本篇文章是Retrofit的前哨站——理解RESTful。因为retrofit是基于RESTful架构。所以在讲解Retrofit之前,先来复习一下RESTfu...

463
来自专栏跨界架构师

如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展

上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下。

692

扫描关注云+社区