
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
进程间通信是程序员在学习计算机编程开发的时候需要重点关注的一个问题,下面我们就通过案例分析来了解一下,微服务架构进程间通信基础知识分析。
1、交互方式的类型
一对一交互:
请求/响应:一个客户端向服务端发起请求,等待响应;客户端期望服务端很快就会发送响应。在一个基于线程的应用中,等待过程可能造成线程阻塞。这样的方式会导致服务的紧耦合;
异步请求/响应:客户端发送请求到服务端,服务端异步响应请求。客户端在等待时不会阻塞线程,因为服务端响应不会马上返回;
单向通知:客户端的请求发送到服务端,但是并不期望服务端做出任何响应;
一对多交互:
发布/订阅方式:客户端发布通知消息,被零个或多个感兴趣的服务订阅;
发布/异步响应方式:客户端发布请求消息,然后等待从感兴趣的服务发回的响应;
2、API的演化
语义化版本控制:用于指定如何使用版本号,并且以正确的方式递增版本。其由3部分组成:
MAJOR:对API进行不兼容的修改时;
MINOR:对API进行向后兼容的增强时;
PATCH:进行向后兼容的错误修复时;
规范:MAJOR.MINOR.PATCH;
进行次要并且向后兼容的改变:对ADP的附加修改更换或功能增强。其包括:
添加可选属性;
向响应添加属性;
添加新操作;
进行主要并且不向后兼容的版本:需要服务在一段时间内同时支持新旧版本的API时;
3、消息的格式
消息格式会影响进程间通信的效率、API的可用性和可演化新。使用跨语言的消息格式尤为重要;
基于文本的消息格式:
举例:JSON、XML;
好处:可读性高、自描述性,有良好的向后兼容性 [消息接收方只需挑选他们感兴趣的值,忽略其他];
弊端:信息冗长,解析文本需要额外的性能效率开销;
二进制消息格式:
举例:Tars、Protocol Buffers、Avro;
好处:提供强类型定义的IDL(接口描述文件),用于定义消息;编译器会根据这些格式生成序列化和反序列化代码;
弊端:不得不采用API优先的方法进行服务设计
4、解决局部故障的思路与方法
开发可靠地远程过程调用代理:使用Netflix描述的方法,可以包括以下机制的组合;
网络超时:在等待针对请求的响应时,不要做成无限阻塞,而是设定一个超时,用来保证不会一直在无响应的请求上浪费资源;
限制客户端向服务器发出请求的数量:把客户端能够向特定服务发起的请求设置一个上限,如果请求达到上限,就让请求立刻失败;
断路器模式:监控客户端发出请求的成功和失败数量,如果失败的比例超过一定的阈值,就启动断路器,让后续调用立即失败。如果大量请求都以失败告终,说明被调服务不可用。经过一定时间后,客户端继续尝试,如果调用成功,则移除断路器;
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。