Kafka运维平台设计实践

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在集群规模小,接入服务不多的情况下,我们一般都是通过命令或者客户端API的方式去运维Kafka,随着集群规模的增加,手动去运维的方式不利于我们统一运维Kafka集群和对接入服务进行管理。且对于高可用来说,缺少了很多例如:监控,告警,服务自愈等功能。

业务需求

在集群规模小,接入服务不多的情况下,我们一般都是通过命令或者客户端API的方式去运维Kafka,随着集群规模的增加,手动去运维的方式不利于我们统一运维Kafka集群和对接入服务进行管理。且对于高可用来说,缺少了很多例如:监控,告警,服务自愈等功能。

本文会先介绍一版“能用”的Kafka运维平台应该具备什么功能

功能需求

集群管理

从Kafka集群开始,也是平时开发接入的入口,我们知道Kafka集群由两部分组成

  • broker
  • zookeeper

从Kafka的角度来说,并不太关注zookeeper相关的数据,或者说应该由类似于zookeeper运维平台去关注,不过由于Kafka元数据存储在zookeeper,后续监控数据需要根据zookeeper去获取,所以平台上也是需要记录zookeeper地址。

所需功能:

  • 集群地址,用于连接kafka
  • zookeeper,用于获取kafka元数据
  • 集群节点概况

数据来源:

  • 管理平台数据
  • Broker数据

Topic管理

主题-Topic

Topic与集群是被包含的关系,逻辑视图上没有提现,但是在系统上要体现这一点。日常开发中,与Kafka的交互都是通过Topic,基本也是运维平台最核心的一块。

分区-Partition

Topic在Kafka中是个逻辑概念,实际交互是通过来确定交互对象的,所以也是一个主题的并发的上限。因此在对主题进行管理时,从创建时指定分区调整分区,再到运维过程中需要的对分区进行分配、重平衡,这些功能都需要包含在内。

相关API:

KafkaAdminClient.createPartitions 增加分区

KafkaAdminClient.alterPartitionReassignments 调整现有分区/副本,2.4新增

副本-Replica

除了分区之外,还有一个副本的概念,由一个主副本和多个从副本组成,Kafka通过多副本实现系统的高可用,对外交互的只有主副本,一般我们需要保证消息不丢失的情况,会将消息写到主副本后,并不返回消息写成功,而是等待其他从副本拉取主副本数据后再返回成功,保证所有副本都存在所有数据。管理功能需要包含副本调整

相关API:

KafkaAdminClient.createPartitions 增加分区

KafkaAdminClient.alterPartitionReassignments 调整现有分区/副本,2.4新增

消息

消息不停从生产端写入,而后被消费端读取,我们需要知道消息有没有写到broker,和提供消费回溯的能力

功能:

  • 消息查询

kafka是没有直接查询消息的API的,所以需要创建消费者,通过seek指定partition的offset,进而消费一定数据进行返回

相关API:

KafkaConsumer.offsetsForTimes 时间转换offset

KafkaConsumer.assign 分配分区

KafkaConsumer.seek 设置分区offset

  • 消息回溯:

和消息查询基本一致,有几点差异:

  • 消息回溯创建消费客户端时groupId与需要回溯的消费客户端相同
  • 需要获取需要回溯Topic下的所有partition进行seek
  • 需要提交重置后的offset

相关API:

KafkaAdminClient.listConsumerGroupOffsets 获取消费组所有订阅的分区和offset

KafkaConsumer.offsetsForTimes 时间转换offset

KafkaConsumer.assign 分配分区

KafkaConsumer.seek 设置分区offset

KafkaConsumer.commitSync 提交offset

监控告警

监控数据来源

除了与Kafka相关的功能性需求,运维平台必不可少的就是监控和告警,监控数据来源于Kafka的三端,都提供了JMX获取监控数据,通过任务定时抓取监控点数据。

告警规则

根据定时抓取到的监控点数据,配置告警规则,在达到预设阈值时,将告警信息推送到相关人员。

最后

在介绍了Kafka运维平台相关功能设计之后,相信大家也对运维平台有了一定的了解,当然这也只是达到“能用”的程度,还有很多功能未曾提及,例如,多租户的实现;管理相关的工单、审批;生产端、消费端相关功能;多集群备份、迁移等等。

写这类文章很难把握尺度,怕写少了不明白,写多了停不下来,(huoxu)以后有时间再写吧,感谢阅读。

目录
相关文章
|
1月前
|
运维 监控 Java
java乡镇卫生院、二甲医院云HIS运维平台源码
运营管理是综合管理系统的核心部分,由运营商和医疗机构管理人员使用,运营管理包括:机构管理、药品目录管理、用户管理、角色管理、字典管理、模板管理、参数设置、消息管理、售后服务、运营配置、外部系统11个子模块,实现机构、用户、角色管理、药品目录管理以及通用的字典管理;可以根据业务需要为各医疗机构定制病历模板和报表模板;可以对医疗机构收费外接设备进行参数设置,对业务进行配置;可以管理消息及售后信息等。
41 3
|
1月前
|
消息中间件 存储 负载均衡
Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
【2月更文挑战第21天】Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
166 4
|
1月前
|
运维 监控 持续交付
构建高效自动化运维体系:策略与实践
在数字化时代,企业IT基础设施的管理和维护变得日益复杂。为了提高效率、降低错误率并快速响应市场变化,构建一个高效的自动化运维体系至关重要。本文将探讨自动化运维的核心策略,并通过实际案例分析展示如何将这些策略应用于日常管理中,以实现IT运维的优化。
17 0
|
2天前
|
运维 前端开发 JavaScript
运维管理平台实现与学习心得
运维管理平台实现与学习心得
|
10天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
12天前
|
人工智能 运维 监控
构建高效自动化运维体系的实践与思考
【4月更文挑战第14天】在数字化转型的浪潮中,自动化运维作为提升系统稳定性和效率的关键手段,受到了企业的广泛关注。本文将深入探讨如何构建一个高效的自动化运维体系,涵盖从基础设施的搭建到流程的优化等多个方面。通过分析当前自动化运维的挑战及解决方案,文章旨在为读者提供一套实用的策略框架,帮助企业实现运维工作的高效化、标准化和智能化。
|
17天前
|
运维 监控 Kubernetes
构建高效自动化运维体系的实践与思考
【4月更文挑战第8天】在数字化时代,IT基础设施的复杂性日益增加,传统的手工运维模式已经难以满足快速响应和高效率的需求。本文将探讨如何通过自动化工具和策略构建一个高效的自动化运维体系,旨在提高系统的稳定性、减少人为错误以及优化资源分配。文章首先分析了自动化运维的必要性,接着介绍了实现自动化的关键技术和工具,并通过案例分析展示自动化运维体系的实际效果。最后,对自动化运维的未来发展趋势进行了展望。
|
20天前
|
机器学习/深度学习 传感器 运维
提升数据中心效能:智能运维策略与实践
【4月更文挑战第6天】在数字化时代,数据中心作为企业信息架构的核心,其稳定性和效率直接影响到业务连续性和客户满意度。随着技术的进步,传统的数据中心运维模式已经不能满足现代高效、智能化的需求。本文将探讨如何通过智能运维(AIOps)策略,结合大数据分析和机器学习技术,实现数据中心的自动化管理、故障预测及快速响应,以提升整体效能并降低运营成本。
|
30天前
|
运维 监控 数据可视化
现代化运维管理系统的关键特性及实践应用
随着信息技术的迅猛发展,现代企业对于运维管理系统的需求日益增长。本文将探讨现代化运维管理系统的关键特性,以及在实际应用中的重要性和优势所在,帮助企业更好地理解和应用现代化运维管理系统。
15 2
|
1月前
|
运维 Prometheus 监控
构建高效稳定的云基础设施:自动化运维策略与实践
在动态的云计算环境中,自动化运维(AIOps)已成为确保服务稳定性和效率的关键。本文将深入探讨构建高效稳定云基础设施的策略,重点关注自动化工具的选择、配置管理的最佳实践、持续集成与持续部署(CI/CD)流程的优化,以及监控和日志分析的重要性。通过这些策略的实施,企业能够减少人为错误,提高响应速度,并最终实现运维效率的显著提升。

热门文章

最新文章