标签:方式 磁盘 替换 机制 配置优化 strong 官网 nbsp style
消息系统经过多年使用和运维管理平台开发迭代,能较好支持支撑业务发展,公司主流语言为java,但缺乏一个基于Kafka二次封装简单好用的java客户端。遇到问题如下所示:
通过对客户端设计,希望达到如下目标:
Kafka管理平台:Apollo配置中心只是负责存储配置信息及接受客户端监听,指令下发是通过Ykafka管理平台进行的。管理员负责维护Ykafka管理平台修改热配置信息,然后同步给Apollo,Apollo推送给相应客户端
Apollo配置中心:所有Kafka集群共用一个分布式Apollo集群配置服务,用于管理所有集群的客户端配置信息,并进行动态更新管理,按照某一维度下发给相应客户端,客户端根据获取的热配置信息,进行相关管理操作。
MetaServer:所有Kafka集群共用对等节点的MetaServer集群服务,主要为存储客户端认证和权限信息,启动时获取认证信息,运行时通过cache来check,存储服务为分布式,避免单点故障。支持热配置启停开关
客户端(Producer和Consumer):客户端启动时不能直接访问Kafka集群,先要请求MetaManager服务,经过授权赋予相应权限资源后,才能访问Kafka集群授权资源。同时客户端通过Apollo监听相应配置,通过自身监听变更获取操作信息
注意事项:Apollo客户端能否优雅兼容多个AppID的问题,目前的结论是,一个客户端只能使用唯一的appId,如何A->B→C服务依次依赖,就会有冲突会被替换掉可能,那如何解决呢?
答曰:官网中关于namespace关联的情况,是通过类似于类继承的方式来实现配置继承的,可以实现配置复用。
热配置设计支持功能:
按级或作用域范围生效热配置,它们分别为集群、group、topic
新增功能特性:
容灾支持:
SLA支持:
标签:方式 磁盘 替换 机制 配置优化 strong 官网 nbsp style
原文地址:https://www.cnblogs.com/lizherui/p/12642014.html