cloudfoundry调用kafaka

概念:
kafka是一个分布式(distributed)、分区的(partitions)、多副本的(replicas)、多订阅者(subscribe),基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等.
大体流程
producer 产生数据,到kafka新建的topic,consumer订阅topic,获取数据。
我们公司通过cloundfoundry创建kafka的topic,每个topic 有10个partition,有3个副本

cf kafka create-topic topicname partitions 10 --replication-factor 3

优点:
时间复杂度O(1)的方式提供消息持久化能力
高吞吐量。
支持消息分区,分布式消费,同时保证partition内的msg sorted.
scale out 水平扩展。
发布与订阅:
producer发布的消息会被持久化到topic中去,然后subscriber从订阅的topic中拿取数据,一个订阅者可以订阅多个topic,因此可以取多个topic中的数据消息。
cloudfoundry调用kafaka_第1张图片
首先是broker: kafka集群包含多个服务器,服务器节点称之为broker.
broker用于存储topic的数据,每个topic有N个分区,集群中有N个broker,每个broker存储该topic的partition。
如果broker大于partition,则多余的broker不存储partition.
意思是每个partition应当有一个broker.
topic:
每条发布到kafka集群的消息都有类别,被称之为kafka.
partition
topic中的数据分割为一个或者多个partition.每个topic至少有一个partition,在partition中文件存储使用segment文件存储。在partition中的数据是有序的,在不同的partition见的数据是无序的。
producer
生产者就是发布者,该角色将消息发布到topic中去,broker接收到生产者发送的消息后,追加到数据的segment中去,生产者发送的消息,存储到partition中去,生产者可以指定数据存储的partition
consumer
从broker中读取数据,根据订阅的topic。
comsumer Group
每个consumer属于一个特定的Consumer Group,不指定则是到默认的consumer组中去,类似于你在k8s中创建的deployment资源不指定namespace则到defaultnamespace中去。
leader
每个partition存在多个副本,有且仅有一个leader,leader是当前负责数据的读写的partition.
Follower
Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步。如果Leader失效,则从Follower中选举出一个新的Leader。(类似于keepalived 主从)当Follower与Leader挂掉、卡住或者同步太慢,leader会把这个follower从“in sync replicas”(ISR)列表中删除,重新创建一个Follower。
cloud foundry与kafka
cf t -s int 切换到指定的space下
cf kafka target gtt-core-kafka-ref gtt-kafka-key 切换到指定的service下去
cf kafka topics 查询所有的topic
查询指定的topic:
cf kafka topic LBN.GTT.260f-9591-11ea-a9df-bd505.IDoc
创建一个kafka 的topic
创建一个10个partition,3个replication-factor 副本
cf kafka create-topic topicname partitions 10 --replication-factor 3
force删除topic
cf kafka delete-topic topicname -f

你可能感兴趣的:(kafka,分布式)