作者:禅与计算机程序设计艺术
1.简介
随着互联网应用场景的不断扩张、人们对实时数据处理需求越来越强烈,消息队列(MQ)系统也在逐渐发展壮大。Kafka 是 Apache 开源的分布式消息系统,它是一个分布式、高吞吐量、可扩展且高容错的平台。相对于其他 MQ 系统而言,Kafka 有以下优点:
- 支持多种消息存储格式,例如文本、日志、JSON、XML等;
- 可以通过分区机制实现横向扩展,可以将数据水平拆分到多个服务器上;
- 通过分片机制提供可靠的数据持久化能力;
- 提供了消费者offset记录功能,保证了消息的顺序消费;
- 社区活跃、文档丰富、支持良好,有大量商用案例; 不过,作为一个分布式、多副本的数据存储系统,它的最大缺陷就是其易失性导致的性能下降、可用性问题。为了解决这些问题,目前业界提出了多种高可用方案,包括 Zookeeper 选举、Raft协议、分区副本选举等等。但由于这些高可用方案都依赖于外部组件或系统,运维成本较高,因此不适用于实际生产环境。另一方面,单个消息中间件集群中存在单点故障的风险,因此要确保整个集群的高可用性是非常关键的。
Kafka 在高可用性方面的难题主要是如何确保以下四个目标:
- 消息的不丢失:当集群中的一台服务器宕机或网络中断发生时,集群应该仍然能够正常工作,不会影响已经发布到 Broker 的消息。
- 服务的高可用:集群中任意多的节点都可以正常服务。
- 数据的一致性:集群中的所有分区的数据都是相同的,即使某些分区出现了数据丢失的情况也不影响整体数据的正确性。
- 节点的快速恢
本文转载自: https://blog.csdn.net/universsky2015/article/details/132914041
版权归原作者 禅与计算机程序设计艺术 所有, 如有侵权,请联系我们删除。
版权归原作者 禅与计算机程序设计艺术 所有, 如有侵权,请联系我们删除。