2

关于Broker的二三事

 2 years ago
source link: https://kairbon.github.io/2021/11/11/Broker/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
文章时效性提示

这是一篇发布于 168 天前的文章,部分信息可能已发生改变,请注意甄别。

关于Broker的二三事

说起Broker其实第一次见到是在公司的一个中间件上,这个中间件使用broker的语义去创建一个服务,当时就有些疑惑。今天又在一篇技术文章中发现了这个关键字眼,遂研究之。

Broker在维基百科的定义如下:A broker is a person or firm who arranges transactions between a buyer and a seller for a commission when the deal is executed. A broker who also acts as a seller or as a buyer becomes a principal party to the deal. Neither role should be confused with that of an agent—one who acts on behalf of a principal party in a deal.

一句话解释就是类似中间人/中介的角色,供给方和需求方的中介。在kafka的架构中,broker是真正持有Topic的核心中的核心,因此在kafka的传统架构中,通常使用zookeeper去保证这部分的高可用性。

可以看到,在kafka的场景中,broker不仅是一个抽象的概念(可以通过代码去操作它,描述它),也是一个相对独立的实例。(部署结构上,broker也可以独立部署去服务)

而在其他的场景下我也发现了broker,比如传统的很多服务发现和注册中心(或者叫做软路由)其实就是一个broker,比如阿里常用的HSF的服务注册和发现模块。也是有着许多高可用的保证方案支持。

从整体的结构上都是极其重要的一环。

进过一番探索,感觉其实broker就是一个基础的词语,它在不同的场景有着不同的实现。但本质其实就是个中介。

  1. 首先你可以收拢和管理所有的生产方和消费方的连接。基于这个连接做一些事情。比如路由和篡改消息。
  2. 其次Broker对生产方和消费方提供完全不同的服务。 1.降低生产方和消费方的对接成本。2.保障生产方和服务方的中间资料。

但可能也会造成一些问题。比如:

  1. 中心化导致的性能热点和可用性问题。因此需要为其配备高可用方案。
  2. 一些简单的服务和需求使用broker反而会造成浪费。比如A和B想要达成某种特殊协议,走点对点的方式即可,成本和稳定性和可控程度高。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK