最大限度提高Event Streams实例的弹性
默认情况下,事件流实例具有弹性,并有多种保障措施,可防止可用性或数据丢失。 除自动故障切换外,所有实例均通过 3 个代理进行复制,以实现最大可用性。 此外,Event Streams还负责管理整个系统的资源利用率和实例限制,并主动进行监控(例如同步复制和磁盘空间利用率),以确保开箱即用的高可用性和数据持久性。 事件流通过威胁检测和漏洞扫描主动管理客户集群的安全性和合规性,并保证 MZR 的 SLA 高达99.99。 在使用Event Streams,要了解自己的责任,重点是客户的责任,其中包括备份报文有效载荷数据和实例数据,包括主题名称、数据和模式注册表数据(如果需要)。
如果需要灾难恢复计划(包括IBM Cloud的Event Streams,该计划可包括在发生灾难时在新区域配置一个新群集,并将任何配置或数据恢复到该群集,或者在另一个区域预先配置一个群集,并使用Event Streams镜像功能。 如果服务中断,客户有责任维护和执行此灾难恢复计划。 本页概述了用户可以采取的其他步骤,以便在群集和群集数据级别最大限度地提高其Event Streams实例的弹性。
集群弹性
1.实例删除恢复
所有 Event Streams 计划都可以在三天内恢复已删除的实例,超过三天,数据将不可逆转地被销毁。 您可以使用 IBM CloudCLI 检查回收状态,并强制或取消计划回收。
2.应用程序/客户端配置
将这些参数应用于您的应用程序,可以大大提高弹性并优化资源使用。 这些设置仅供参考,最终应根据您的应用需求进行权衡。 开源Apache Kafka文档 对这些参数及其重要性提供了更详细的解释。
设置 | 说明 |
---|---|
‘fetch.min.bytes=1 fetch.max.wait.ms=500’ | 空获取请求是一种浪费,因为它们消耗了服务器资源,却没有实际检索到有意义的数据。 fetch.max.wait.ms的默认值建议为500ms,但如果应用程序的 CPU 占用率较高,则可考虑减少客户端的运行次数或增加该值。 |
enable.idempotence=true 重试=Integer.MAX_VALUE' | 惰性生产者可进行重试并防止重复发送信息,从而确保数据生产过程中的精确一次性语义,并提高数据的耐用性。 |
acks=all | 这就保证了信息在所有副本中的传递和确认,从而实现最大的容错性。 |
3.监测和警报,以便及早发现异常情况
客户端可观察性:验证客户端是否处于活动状态且未被网络隔离非常重要。 在某些情况下,客户会向客户端输入大量数据,但客户端却接收不到这些数据,因此建议对客户端进行检测,检查数据是否到达服务器,并建立基准线,例如使用吞吐量和排队等待发送的未发送消息的数量。 根据您使用的客户端的不同,您可以采用不同的方式对客户进行仪表化。
消费者滞后:如果消费者严重滞后,且保留期接近极限,消费者就有可能丢失数据,因为日志段可能会根据保留政策被删除。
磁盘使用情况:监控事件流实例中的磁盘使用情况非常重要。 当磁盘使用量达到最大值时,将无法再创建主题分区,只能读取(而不是写入)数据。 如果不能容忍这种情况,应用程序就有可能失去可用性。 当磁盘使用量达到最大值时,您必须扩展实例或截断信息。
CPU 利用率:Event Streams建议在 CPU 利用率不超过 2/3 的情况下运行,以防止可用区丢失。 如果事件流群集的 CPU 占用率接近或接近建议的最大值,就有可能造成处理效率低下,并可能导致数据丢失。
吞吐量/容量管理:与 CPU 利用率类似,即使以峰值容量工作,Event Streams也建议不要超过最大吞吐量的2/3rds 这个缓冲区对于在维护期间或可用性区域发生故障时保护实例至关重要。 更多信息,请参阅“扩展企业计划容量”。
4.通过 Terraform 实现自动化
Event Streams建议使用 Terraform,它能让您按照“基础设施即代码”IaC)原则快速、可预测地创建和更改实例。 作为全面灾难恢复计划的一部分,您必须将所有 terraform 配置存储在安全且易于访问的存储库中。
5.使用Event Streams模式注册表
作为企业计划的一部分,Event Streams提供了一个模式注册表,可作为Kafka集群中的一个强化层,确保数据在生产者和消费者之间得到验证,并降低无法处理的数据进入系统的可能性。 点击此处了解有关使用Event Streams模式注册表的更多信息。
主题、模式和实例数据弹性
最大限度提高群集恢复能力的建议将有助于最大限度提高群集数据的恢复能力,但在某些情况下,单个主题、主题集或单个应用程序可能会受到影响,以下方法有助于预防和/或恢复群集数据。
1.及时更新客户端库,以发现漏洞并进行修复
使用最新的客户端程序库可确保您跟上最新的测试,不会错过可能对客户造成损害的修复。 最新的客户端库将提供最佳的可用性和更好的错误信息,最大限度地提高客户端和客户端数据的健康和可靠性。
2.应用程序配置
为了最大限度地提高主题的恢复能力,应针对潜在的停机时间配置保留期,以确保消费者能够在不丢失数据的情况下赶上进度。 我们建议将保留时间配置为超过消费者预期的最长停机时间。 例如,如果保留期少于 3 天,而应用程序经历了长时间的关闭(如长周末),则重启时数据丢失的风险很大。
3.软删除(仅限模式)
模式删除分为两个阶段。 删除的第一阶段保留了注册表中的模式,但对某些操作进行了隐藏。 如果不小心删除了模式,可以通过启用已禁用的模式来恢复。 点击此处 了解更多信息。