成都 html5网站,数据查询网站,网络营销案例分析1000字,网站底部怎么修改在微服务集成——《微服务设计》读书笔记文章中#xff0c;我们说过服务间的消息传递有几种方式#xff0c;一种是请求/响应技术#xff0c;另一种是基于事件的机制。
RPC#xff08;远程过程调用#xff09; RPC是Remote Procedure Call的简称。 这是请求/响应技术的一种… 在微服务集成——《微服务设计》读书笔记文章中我们说过服务间的消息传递有几种方式一种是请求/响应技术另一种是基于事件的机制。
RPC远程过程调用 RPC是Remote Procedure Call的简称。 这是请求/响应技术的一种它使用本地调用的方式和远程进行交互如SOAP、Thrift等比如我们常使用的WebService和Java RMI就是这种类型。它先在本地生成桩代码然后通过桩代码进行远程调用。 RPC会带来一些问题如Java RMI其耦合性较紧同时RPC会对调用进行大量的封装和解封装同时修改接口时会造成服务的提供方和调用方都要修改。 REST REST是受Web启发而产生的一种架构风格REST风格包含的内容很多Richardson的成熟度模型http://martinfowler.com/articles/richardsonMaturityModel.html其中有对REST不同风格的比较。 REST本身并没有提到底层应该使用什么协议最常用的是HTTPHTTP本身提供了很多功能这些功能对于实现REST风格非常有用比如HTTP的动词GET、POST、PUT等就能很好地和资源一起使用。 在使用REST时传输的数据格式是XML还是JSON这个没有一个定论。 基于HTTP的REST也有缺点1.它无法帮你生成桩代码2.在要求低延迟的场景下每个HTTP请求的封装开销可能是个问题使用TCP、UDP可能更合适。 基于事件的异步协作 这种方式主要有两个部分需要考虑微服务发布事件消费者接收事件机制。 消息队列如RabbitMQ可以同进处理上述两方法的问题。生产者使用API向代理发布事件代理可以向消费者提供订阅服务并且在事件发生时通知消费者。这种代理甚至可以跟踪消费者的状态如标记哪些消息是该消费者已经消费过的。这种系统通常具有较好的可伸缩性和弹性但这么做会增加开发流程的复杂度因为你需要一个额外的系统即消息代理才能开发及测试服务。 另一种方式是使用HTTP来传播事件ATOM是一个符合REST规范的协议可以通过它提供资源聚合的发布服务当服务提供方发生改变时只需要简单地向该聚合发布一个事件即可消费者会轮询该聚合以查看变化。它的缺点是HTTP不擅长处理低延迟的场景而且使用ATOM的话用户还需要自己追踪消息是否送达及管理轮询等工作。 异步架构有其复杂性比如消息丢失了怎么办消息重试失败了怎么办消息重发了怎么办消息请求崩溃了怎么办我们可以通过设置最大重试、黑名单、白名单等措施来解决这些问题。但这也意味着复杂性的增加。 参考 《微服务设计》Sam Newman 著 / 崔力强 张骏 译
相关文章
微服务的概念——《微服务设计》读书笔记微服务架构师的职责——《微服务设计读书笔记》建模:确定服务的边界——《微服务设计》读书笔记微服务集成——《微服务设计》读书笔记
原文地址http://www.cnblogs.com/gudi/p/6624917.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注