image.png

启动顺序

  1. namesrv集群启动(无状态),因为每一个namesrv都有全量数据,所以namesrv集群内的多节点互为备份,可以无限扩容。
  2. broker启动,与所有的namesrv保持长连接,定时发送心跳包,心跳包带有broker的ip端口+注册在该broker上所有topic信息。当所有broker都注册完毕后,namesrv就能整理出topic和broker机器列表的映射关系。
  3. 创建topic,创建时要指定创建在哪些broker上,用于后续broker上报给namesrv。
  4. producer启动,向namesrv的任意一个节点建立长连接(只有写数据需要保证一致性,而读数据无需保证,所以只有broker需要和所有namesrv节点保持连接,而producer和consumer只需要和单个namesrv保持连接,因为单个namesrv就保存了全量元数据,如果namesrv挂掉,那么只需要换一个namesrv节点即可。),获取topic关联的broker列表,并向master broker建立长连接,
  5. consumer启动,向namesrv的任意一个节点建立长连接,获取topic关联的broker列表,并向master broker和所有slave broker建立长连接。