介绍KafkaKafka是一款基于发布与订阅的消息系统。用生产者客户端API向Kafka生产消息,用消费者客户端API从Kafka读取这些消息。Kafka使用Zookeeper保存元数据信息。Kafka0.9版本之前,除了broker之外,消费者也会使用Zookeeper保存一些信息,比如消费者群组的信息、主题信息、消费分区的偏移量(在消费者群组里发生失效转移时会用到)。到了0.9.0.0版本,Kafka引入了一个新的消费者接口,允许broker直接维护这些信息。Kafka中的概念消息&批次Kafka的数据单元被称为消息。消息就好比数据库里的一个“数据行”或一条“记录”。消息由字节数组组成,所
作者|vivo互联网服务器团队-YouShuo副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情。CruiseControl作为Kafka的运维工具,它包含了Kafka服务上下线、集群内负载均衡、副本扩缩容、副本缺失修复以及节点降级等功能。显然,CruiseControl的出现,使得我们能够更容易的运维大规模Kafka集群。备注:本文基于Kafka2.1.1开展。一、 Kafka负载均衡1.1生产者负载均衡Kafka客户端可以使用分区器依据消息的key计算分区,如果在发送消息时未指定key,则默认分区器会基于roundrobin算法为每条
作者|vivo互联网服务器团队-YouShuo副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情。CruiseControl作为Kafka的运维工具,它包含了Kafka服务上下线、集群内负载均衡、副本扩缩容、副本缺失修复以及节点降级等功能。显然,CruiseControl的出现,使得我们能够更容易的运维大规模Kafka集群。备注:本文基于Kafka2.1.1开展。一、 Kafka负载均衡1.1生产者负载均衡Kafka客户端可以使用分区器依据消息的key计算分区,如果在发送消息时未指定key,则默认分区器会基于roundrobin算法为每条
接下来就一起看看在Pular里,topic和broker之间到底如何相处的吧。TopicDiscoveryPulsar作为多租户消息系统,具有层级命名空间,这个在之前我们也提到了「Tenant&Namespace」相关概念。除去前两层,第三层就是topic。那么Pulsar如何把topic分配给brokers呢?首先看图理解一下层次化结构。image.png一个Pulsarinstance内部,有很多租户,就好比一个公司有多个不同的部门。往下细分又有不同的业务线(对应namespace),业务线里可能又有不同的主题(对应topic)。所有的topic在Pulsar集群里以树状结构连存,所以to
接下来就一起看看在Pular里,topic和broker之间到底如何相处的吧。TopicDiscoveryPulsar作为多租户消息系统,具有层级命名空间,这个在之前我们也提到了「Tenant&Namespace」相关概念。除去前两层,第三层就是topic。那么Pulsar如何把topic分配给brokers呢?首先看图理解一下层次化结构。image.png一个Pulsarinstance内部,有很多租户,就好比一个公司有多个不同的部门。往下细分又有不同的业务线(对应namespace),业务线里可能又有不同的主题(对应topic)。所有的topic在Pulsar集群里以树状结构连存,所以to
本篇博客会从源码层面,验证在RocketMQ基础概念剖析,并分析一下Producer的底层源码中提到的结论,分别是:Broker在启动时,会将自己注册到所有的NameServer上Broker在启动之后,会每隔30S向NameServer发送心跳之前的文章中,我们知道了RocketMQ中的一些核心概念,例如Broker、NameServer、Topic和Tag等等。Producer从启动到发送消息的整个过程,从源码级别分析了Producer在发送消息到Broker的时候,是如何拿到Broker的数据的,如何从多个MessageQueue中选择对应的Queue发送消息。但是由于篇幅原因,文章开头
本篇博客会从源码层面,验证在RocketMQ基础概念剖析,并分析一下Producer的底层源码中提到的结论,分别是:Broker在启动时,会将自己注册到所有的NameServer上Broker在启动之后,会每隔30S向NameServer发送心跳之前的文章中,我们知道了RocketMQ中的一些核心概念,例如Broker、NameServer、Topic和Tag等等。Producer从启动到发送消息的整个过程,从源码级别分析了Producer在发送消息到Broker的时候,是如何拿到Broker的数据的,如何从多个MessageQueue中选择对应的Queue发送消息。但是由于篇幅原因,文章开头