zoukankan      html  css  js  c++  java
  • 消息中间件---kafka

    1.实现原理:kafka依赖于zk(zookeeper),将所有的kafka服务器注册到zk服务器上,并建立长连接(zk保存着kafka的broker节点信息)

    2.核心组件:broker、topic、partition(分区)、producer、consumer以及message

    broker:就是一台kafka节点

    topic:消息主题,包含了多个partition;每一个消息都会表示成一个递增的序号,存在在partition中

    partition:由一个一个的消息组成;

    producer:生产者;

    consumer:消费者

    3.发送过程以及消费过程

    1)发送过程:选择一个topic发送消息(send(tipoc、key、value));底层是通过计算key以及value的序列化值,找到相应的partition,将消息保存在partition的末尾;

    2)消费过程:监听一个topic主题,通过id(offsert--偏移量)指定消息消费的地址,然后consumer会保存当前的id消息-作为下次消费的id起点...

    4.Broker:(相当于一个kafka节点)

    5.优点:

    1) 消费者可以根据需求灵活的指定offset(id);

    2)保证消息的不变性,依赖于每个consumer的offset(每个consumer的offset互不影响)保证了线程的安全;

    3)高可用,消息以partition为一个单元体,分配到多个server当中,并以partition进行备份。

    6.缺点:(kafka依赖于zk,故需要考虑到zk的缺点)

    由于zk是中心化的节点,包含leader与follower节点,那么在选举过程当中,所有的节点都挂起,不能够访问,在选举阶段,数据存在丢失.

  • 相关阅读:
    Redis使用初步
    Servlet Java Web开发(3.1) request response
    TcpClient例子(2)更robust的程序
    C#多线程之ManualResetEvent,Thread,ThreadPool,BackgroudWoker
    使用TcpClient的例程
    C#中多线程修改UI
    C# 多线程之异步回调
    Servlet Java Web开发(3) request response和编码
    Eclipse 和MyEclipse下Servlet Java Web开发(2)
    Eclipse 和MyEclipse下Servlet Java Web开发(1)
  • 原文地址:https://www.cnblogs.com/lq-93/p/12674444.html
Copyright © 2011-2022 走看看