微服务设计部署3 - Inter-Process Communication
简介
在一个monolithic应用程序中,组件彼此调用是通过语言级别的方法或函数调用完成的。相反地,一个基于微服务的应用程序是运行在多台机器上的分布式系统。每个服务实例通常是一个独立的进程。
因此,如图3-1所示,服务之间需要使用一种 IPC 机制来进行交互。
在我们讨论具体的 IPC 技术之前,让我们先来看看各种交互设计思路。
Interaction Styles
当为一个服务选择 IPC 机制时,首先应该思考服务之间是如何进行交互的。存在很多客户端-服务器交互方式。可以从两个维度来划分交互方式。第一个维度,交互是一对一还是一对多的:
- One-to-one:每个客户端请求只被一个服务实例处理
- One-to-many:每个客户端请求被多个服务实例处理
第二个考虑维度,交互是异步的还是同步的:
• Synchronous–Theclientexpectsatimelyresponsefromtheserviceandmighteven block while it waits
• Asynchronous – The client doesn’t block while waiting for a response, and the response, if any, isn’t necessarily sent immediately.
- 同步:客户端希望得到服务的及时响应,在得到响应以前甚至可能会一直阻塞
- 异步:客户端在等待响应时不会阻塞,服务端也不必立即响应结果
下表总结了各种交互方式。
有以下几种 one-to-one 的交互方式,既有同步的也有异步的:
- Request/response:客户端向服务发起请求,客户端希望响应结果能立即到达。在一个基于多线程的应用程序中,处理请求的线程可能会因为等待响应而阻塞住
- Notification:也被称作 one-way request,客户端向服务发起请求,但不需要响应
- Request/async response:A client sends a request to a service, which replies asynchronously The client does not block while waiting and is designed with the assumption that the response might not arrive for a while.
有以下两种一对多交互方式,都是异步的:
- Publish/subscribe:客户端发出通知消息,该消息将被0个或多个感兴趣的服务消费
- Publish/async responses:A client publishes a request message, and then waits a certain amount of time for responses from interested services
每个服务通常会是使用以上这些交互方式的一种组合。对某些服务来说,使用一种IPC 机制就可以了,而其他服务可能会需要使用一种组合方案。
图3-2显示了,当打车软件中的用户发起一个行程时,软件中的所有服务可能是如何交互的。
图示叫车服务使用了notifications、request/response和 publish/subscribe 三种交互方式的组合。例如,乘客的智能手机发送了一个notification到 行程管理服务请求搭载。行程管理服务采用request/response 方式调用乘客管理服务来验证乘客账户是否在线。然后行程管理服务创建行程,并采用 Publish/subscribe 方式去通知其他服务,包括分配司机服务,该服务职责是定位一个有效的司机。
在已经了解了交互方式后,让我们看看如何来定义 API。
Defining APIs
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ian Goodfellow:生成对抗网络 GAN 的公式是怎样推导出来的
昨天,谷歌大脑研究科学家、《深度学习》的作者之一Ian Goodfellow在Twitter推荐了他最喜欢的两个机器学习“黑魔法”(Theory Hack)。Ian Goodfellow还是生成对抗网络GAN的提出者,利用这两个技巧,他在著名的GAN论文中推导了一个公式。 很多时候,我们想用代数/微积分来分析神经网络的最优行为。神经网络模型通常非常复杂,用代数方法来实现权重衰减或许可行,但想用代数方法来解决神经网络中大多数函数的参数优化问题就会太过复杂。 为了得到一个不那么复杂的模型,一个常见的直觉方法是使用线性模型。线性模型很好,因为它能很好的解决凸优化问题。但线性模型也有缺点:它过于简单,很多神经网络能做的事情线性模型不能做。这样,解决方法就简化了。 Theory Hack#1:将神经网络建模为一个任意函数(因此可以优化所有函数f的
- 下一篇
工业级嵌入式主板助力物联网行业发展
物联网是物与物、人与物之间的信息传递与控制。在智能化时代,物联网是倍受推崇的,其应用极为广泛。涉及智能交通、环境保护、平安家居、智能消防、工业监测、楼宇照明管控等多个领域。 嵌入式技术日趋成熟,嵌入式产品网络化需求在不断的增长,特别是在我国的市场潜力巨大。物联网就是在这一形势下诞生的。嵌入式设备无所不在,有嵌入式技术的地方才会有物联网的应用,从专业角度讲,物联网就应该是嵌入式智能终端的网络化形式。 目前,物联网领域对嵌入式硬件的要求还是很严苛的,数据处理的能力要求很强大,还必须能连续长期稳定运行,有些还处于条件恶劣的工业环境,同时有的情况对功耗的要求也是有硬性指标的。现在各家专业计算机硬件生产商都在根据市场需求与功能细分,不断推陈出新各种计算机硬件,以适应市场与客户对产品的新需求。 在“物联网”飞速发展的大背景下,行业对数据采集的需求也是日趋旺盛。低功耗、高安全性、性能强大、产品稳定可靠、性价比高成为市场需求. 朗锐智科(www.lrist.com)一直以来深耕嵌入式领域,奉献了无数品质过硬的嵌入式软硬件产品。在嵌入式领域有长达数十载的研发、生产、销售、服务等经验,有能力为物联网行业提...
相关文章
文章评论
共有0条评论来说两句吧...