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 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

客服系统微服务架构的演化

微服务要求 ? ? ? ? 服务协作 ? 服务治理 ? 服务治理 ? ? ? 1 怀疑第三方 坚持一条信念:“所有第三方服务都不可靠”,不管第三方什么天花乱坠...

3785
来自专栏nimomeng的自我进阶

xcbuild可用性分析报告

xcbuild是Facebook 出品的开源 App 构建工具,一款能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 的构建工具。

912
来自专栏Java学习网

13 年的 Bug 调试经验总结

编码 下面这些都是我经历过的会导致难点bug的问题: 1.事件顺序。在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会...

3035
来自专栏喔家ArchiSelf

NoSQL 之于大数据

关系型数据库几乎是许多开发者和DBA对于传统三层架构应用的唯一选择。使用这一场景有很多原因,数据建模方法,查询语言与数据交互,保证数据的一致性部署,并能够为复杂...

683
来自专栏杨建荣的学习笔记

MySQL备份恢复服务全景设计

对于MySQL方向的备份恢复设计,其实是作为数据保障工作最基础的事情了,备份的重要性就不需要反复强调了。对于数据备份的必要性我在团队内的一个要求就是,如果没有从...

661

内存数据网格主要特性简介

将主存储器用作存储区域而不是使用磁盘是并不是一种全新的尝试。你可以在日常生活中发现许多使用主内存DBMS(数据库管理系统)(MMDB)执行比磁盘快得多的情况。一...

2974
来自专栏大愚Talk

为什么要用Redis

最近阅读了《Redis开发与运维》,非常不错。这里对书中的知识整理一下,方便自己回顾一下Redis的整个体系,来对相关知识点查漏补缺。

1242
来自专栏owent

游戏服务器的不停服更新

我们目前的游戏第一次测试的时候笔记送匆忙,导致上线之后频繁更新。 比如BOSS战由于大区的人数和预期不一样导致的难度调整,或者是任务链或者数值调整,再加上一些...

1832
来自专栏用户画像

1.2.2 计算机网络协议、接口、服务的概念

协议就是规则的集合。在网络中药做到有条不紊地交换数据,就必须遵循一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及相关的 同步问题。这些为进行网络中...

742
来自专栏美团技术团队

Shield:支撑美团点评品类最丰富业务的移动端模块化框架开源了

引言 一直以来,如何能更高效地开发与维护页面是Android与iOS开发同学最主要的工作和最关心的问题。随着业务的不断发展,根据特定业务场景产生的定制化需求变得...

4189

扫码关注云+社区