• 微服务架构中的进程间通信


    应用层服务发现机制

    Eureka 高可用的服务注册表

    应用层服务发现的好处:可以处理多平台部署的问题
    弊端:你需要为你使用的每种编程语言提供服务发现库;开发者负责设置和管理服务注册表,这会分散一定的精力。因此,最好使用部署基础设施提供的服务发现机制


    平台层服务发现模式

    Docker 和 k8s等部署平台都有内置的服务注册表和服务发现机制。部署平台为每个服务提供DNS名称、虚拟IP地址和解析为VIP地址的DNS名称。客户端向DNS和VIP发出请求,部署平台自动将请求路由到其中一个可用服务实例。因此,服务注册、发现和请求路由完全由部署平台处理,还包括负载均衡

    VIP:虚拟IP

    好处:完全由部署平台处理;服务端和客户端不包含任何服务发现的代码
    弊端:仅限于支持使用该平台部署的服务。


    基于异步消息模式的通信

    由于通信是异步的,因此客户端不会堵塞和等待回复
    消息的顺序、检测和丢弃重复的消息,以及作为数据库事务的一部分发送和接收消息

    无代理的消息架构
    消息的构成:
    消息头部和消息主体构成;标题是名称与值对的集合,描述正在发生发送的数据的元数据。除此之外,消息头部还包含其他信息,比如:发件人或消息船体基础设施生成的唯一消息ID,以及可选的返回地址,该地址指定发送回复的消息通道。消息正文以文本或二进制格式发送的数据。

    消息的类型:
    文档:仅包含数据的通用消息,接收者决定如何解释它。对命令式消息的回复是文档消息的一种使用场景
    命令:类似RPC请求,指定要调用的操作及参数
    事件:领域事件,标识领域对象的状态发生了变动,,例如:Order、Customer

    消息通道:消息通过消息通道进行交换,发送方中的业务逻辑调用发送端接口,该接口底层封装通信机制,发送端由消息发送适配器实现。

    类型:
    点对点:一对一交互方式;常用于命令式消息
    发布-订阅:一对多的交互方式


    无代理消息: ZeroMQ是一种流行的无代理消息技术,它既是规范,也是一组适用于不同变成语言的库,支持各种传输协议,包括:TCP/UNIX风格的套接字和多播。

    好处:
    允许更轻的网络流量和更低的延迟。中间省略了消息代理的网络延迟
    消除了消息代理可能成为性能瓶颈或单点故障的可能性
    具有较低的复杂操作性,因为不需要设置和维护消息代理

    弊端:
    服务需要了解彼此的位置
    可用性降低,消息交换时,双方都需要在线
    在实现确保消息成功投递等较复杂功能的挑战性很大


    有代理的消息架构:RabbitMQ、Kafka、Apache ActiveMQ

    好处:
    松耦合:发送方不需要知道接收方的网络位置
    消息缓存:消息代理缓冲消息,直到消息接收方能够处理他们
    灵活的通道
    明确的进程间通信

    弊端:
    潜在的性能瓶颈:幸运的是,许多消息代理都支持高度的横向扩展
    潜在的单点故障:幸运的是,大多数消息代理都是高可用的
    额外的操作复杂性:消息系统是一个必须独立安装、配置和运维的系统组件


    选择消息代理,需要考虑的因素:
    支持的变成语言
    支持的消息标准
    消息排序
    投递保证
    持久性
    耐久性
    可扩展性
    延迟
    竞争性接收方

    深入探究下基于消息的架构可能遇到的一些设计问题:
    处理并发和消息顺序

  • 相关阅读:
    稳扎稳打Silverlight(68) 5.0 XNA 之绘制 3D 图形
    稳扎稳打Silverlight(65) 5.0绑定之通过 ICustomTypeProvider 绑定动态生成的属性
    千呼万唤 HTML 5 (4) 文本语义元素
    千呼万唤 HTML 5 (8) 画布(canvas)之绘制图形
    稳扎稳打Silverlight(66) 5.0其它之自定义 XAML 扩展标记, 通过 XNA 处理声音效果, 支持矢量打印, 统计连击的次数
    千呼万唤 HTML 5 (9) 画布(canvas)之承载媒体
    梦想成真 XNA (2) 绘制精灵,绘制文字
    千呼万唤 HTML 5 (6) 表单元素之 input 元素
    梦想成真 XNA (10) 3D 模型的碰撞检测
    稳扎稳打Silverlight(64) 5.0绑定之 Style 中的 Setter 支持绑定, 绑定父级链上的元素, 隐式指定数据模板, UI 上数据更新的触发方式
  • 原文地址:https://www.cnblogs.com/jjfan0327/p/15069396.html
Copyright © 2020-2023  润新知