热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微服务架构中的进程间通信(交互方式、消息格式)

一、交互方式在为服务选择的API选择进程间通信机制之前,首先要考虑服务与其客户端的交互方式。交互方式的选择影响应用程序的可用性。交互方式可以帮助选择合适的集成测试策略。交互方式分为

一、交互方式

在为服务选择的API选择进程间通信机制之前,首先要考虑服务与其客户端的交互方式。

交互方式的选择影响应用程序的可用性。


交互方式可以帮助选择合适的集成测试策略。

交互方式分为两个维度

1、一对一和一对多

一对一:每个客户端请求由一个服务实例处理;

一对多:每个客户端请求由多个服务实例处理。

2、同步和异步

同步:客户端请求需要服务端实时响应,客户端等待响应时可能导致阻塞;

异步:客户端请求不会阻塞进程,服务端的响应可以是非实时的。

交互方式组合见表格:



















 

一对一

一对多

同步模式

请求/响应(服务紧耦合)

异步模式

异步请求/响应

单向通知

发布/订阅

发布/异步响应


二、API版本

如何定义API取决于使用的进程间通信机制。如果使用的是消息机制,则API由消息通道、消息类型、消息格式组成;如果使用的是HTTP,则API由URL、HTTP动词以及请求和响应格式组成。

语义化版本控制

作用:指定如何使用版本号、并且以正确的方式递增版本号。

要求:版本号由三部分组成-MAJOR.MINOR.PATCH。必须按照如下方式递增版本号:

MAJOR:对API进行不兼容的更改时

MINOR:对API进行向后兼容的增强时

PATCH:向后兼容的错误修复时;


 三、消息格式

消息格式的选择会对进程间通信的效率、API的可用性、可演化性产生影响。

消息的格式分为两类:文本、二进制。

基于文本的消息格式


常用的:JSON、XML

好处:可读性高、自描述的,允许消息的接收方只挑选它们感兴趣的值。对消息结构的修改可以做到很好的后向兼容。

弊端:消息过于冗长,特别是XML;解析文本引入的额外开销,尤其是消息较大时。

JSON消息:命名属性的集合;XML消息:命名元素和值的集合。

二进制消息格式

常用的:Protocol Buffers、Avro(提供类强类型定义的IDL-接口描述文件,用于定义消息的格式)

 笔记来自:《微服务架构设计模式》一书,作者 [美] 克里斯·理查森 著,喻勇译  第三章P63-70


推荐阅读
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • zuul 路由不生效_Zuul网关到底有何牛逼之处?竟然这么多人在用~
    作者:kosamino来源:cnblogs.comjing99p11696192.html哈喽,各位新来的小伙伴们,大家好& ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Unit4博客&课程总结Unit4作业的架构设计本单元作业的设计我分为了三个模块处理:模型构建+预处理+任务函数,前两部分即为整个图的完整构建,第三部分即为实现题目要求的查询方法。 ... [详细]
author-avatar
mobiledu2502879767
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有