导读
从 2019 年 4 月份打算开源到 2021 月 1 月 14 号实现开源,历时 22 个月终于修成正果,一路走来实属不易,没有前端、设计、产品,咱们找实习生、合作方、内部资源反对,滴滴 Kafka 服务团队人员也几经调整,外部迭代了 3 个大版本,咱们最终还是克服重重困难做到了!一经开源取得了社区用户宽泛的认可,截止以后 Star 达到 1150,钉钉用户冲破 540 人,滴滴开源 Logi-KafkaManager 一站式 Kafka 监控与管控平台浏览 1W+UV。
01 滴滴 Logi-KafkaManager 简介
Kafka 作为滴滴大数据音讯队列,每天承载万亿级音讯的生产与生产,面对 100GB/S+ 峰值采集流量,服务了公司内近千 Kafka 用户,托管了数十 Kafka 集群,数万 Kafka Topic,单集群 >300+Broker。历经四年打磨积淀,围绕滴滴 Logi-KafkaManager 打造了滴滴 Kafka 平台服务体系,外部满意度达到 90 分。
滴滴 LogI-KafkaManager 是面向 Kafka 用户、Kafka 运维人员打造的共享多租户 Kafka 云平台,专一于 Kafka 资源申请、运维管控、监控告警、资源治理等外围场景。一经开源广受社区用户青睐,收费体验地址:http://117.51.150.133:8080/kafka,账户 admin/admin,欢送 Star。
02 为什么要开发
滴滴 Logi-KafkaManager
滴滴外部有几十个 kafka 集群,450+ 的节点,每周 500+UV 用户,须要实现 topic 创立、申请、指标查看等操作;每天运维人员还有大量 topic 管控、治理、集群运维操作。因而咱们须要构建一个 Kafka 的管控平台来承载这些需要。咱们调研了社区同类产品,在监控指标的欠缺水平、运维管控的能力、服务经营的理念都无奈很好的满足咱们的需要。
03 滴滴 Logi-KafkaManager 性能亮点
产品化设计之关注点拆散
业界开源的 KafkaManager 定位是一个面向运维人员的监控工具,在滴滴咱们定位是全托管 Kafka 服务工具型平台产品,针对的人群辨别为 Kafka 用户、Kafka 运维。
- Kafka 用户:关注的是 Topic 相干的操作,Topic 资源申请与扩容、Topic 指标监控、Topic 生产告警、Topic 音讯采样、Topic 生产重置等。
- Kafka 运维:关注的是 Kafka 集群相干的操作,集群监控、集群装置、集群降级、集群 Topic 迁徙、集群容量布局等。
Kafka 业务运行过程数据化
作为消息中间件,Kafka 最外围的能力就是音讯的生产、生产,用户高频的问题都与此相关,作为服务提供方,咱们须要具体的感知 Topic 的生产生产在服务端各个环节耗时,疾速界定到底是服务端还是客户端问题,如果是服务端问题,出在哪个环节,如下图所示:
- 申请队列排队工夫 (RequestQueueTimeMs)
- Broker 本地解决工夫 (LocalTime)
- 申请期待近程实现工夫 (RemoteTimeMs)
- 申请限流工夫 (ThrottleTimeMs)
- 响应队列排队工夫 (ResponseQueueTimeMs)
- 响应返回客户端工夫 (ResponseSendTimeMs)
- 接管到申请到实现总工夫 (TotalTimeMs)
通过将这些服务端运行指标,以 Topic 粒度出现,显著的晋升了服务用户的效率,如下图所示:
Kafka 服务保障强管控
Kafka 各语言客户端版本泛滥,官网也只有精力保护 Java 版的 SDK,滴滴受限于服务人力,没有进行客户端版语言与版本管控,服务端拓展实现强管控客户端元信息的能力。
- 拓展服务端能力,强感知客户端的链接地址,协定类型,不便后续引擎对用户行为的感知与强管控。
- 拓展实现 Kafka 服务端的平安认证能力,通过账号机制记录利用元信息,包含人员信息、业务信息、权限信息;通过 Topic 创立管控,记录压缩类型、Partiton、Quota 等元信息,在服务端实现了对客户生产、生产能的强管控。
最佳实际之专家服务积淀
多年 Kafka 服务经营教训,咱们积淀了大量的服务保障最佳实际,联合利用场景,截止目前构建了以下几项专家服务,后续咱们会继续打磨与欠缺。
- Topic 集群散布不均迁徙:不同 broker 上 leader 数目不均;同一个 broker 上不同磁盘 leader 散布不均;同一个 topic 在 broker 上不同磁盘散布不均。咱们须要发现热点,给用户举荐迁徙打算。
- Partitont 有余扩容提醒:依据单 Partition 承载流量,依照业务场景与底层硬件资源进行被动扩容提醒,扩容规范:滴滴的实际是 TPS 场景:单 Partition 3MB/S;IOPS 场景:单 Partition 10 条 /S。
- Topic 有效资源下线:针对线上继续一个月 Topic 无流量,无生产生产链接的资源,告诉用户进行被动资源开释。
04 滴滴 Logi-KafkaManager 架构
平台设计之初,咱们就基于开源的理念进行平台建设,遵循了依赖精简、分层架构、能力 API 化、100% 兼容历史开源版本的准则,整体架构如下:
- 资源层:滴滴 Kafka 引擎和 KafkaManager 除了 zookpeer 之外只依赖 msyql,依赖精简,部署不便;
- 引擎层:以后滴滴 kafka 引擎版本是 2.5,咱们在此基础上开发了一些本人的个性,如磁盘过载爱护、IO 线程池拆散、Topic 创立资源分配优化等性能,并且齐全兼容开源社区的 0.10.X kafka 版本;
- 网关层:引擎层之上滴滴设计了网关层,提供了平安管控、topic 限流、服务发现、降级能力;
- 服务层:基于 kafkaGateway 咱们在滴滴 Logi-KafkaManager 上提供了丰盛的性能,次要有:topic 治理、集群监控、集群管控能力;
- 平台层:别离针对普通用户和运维用户,提供不同的性能汇合,尽可能的将一些日常应用中的高频操作在平台上进行承接,升高用户的应用老本,同时外围能力 API 化,不便用户生态对接。
写在最初
我的项目开源只是万里长征的第一步,产品还须要继续的打磨与建设,但行好事莫问前程,感激那些已经为这个我的项目付出致力的童鞋们,特地是以后团队的兄弟们,过来一年十分不容易,开源的技术幻想让咱们严密的团结在一起,以此文向开源的领路人章文嵩致敬!
滴滴 Logi-KafkaManager 是 2021 年团队开源幻想的一小步,是滴滴 Logi 日志服务套件整体开源打算的重要组成部分,欢送关注 Obsuite 公众号或者退出 Logi 滴滴用户钉钉群,给咱们的产品提出宝贵意见,也欢送小桔子们举荐给有须要的技术童鞋!