• kafka 知识点


    Replica如何分布

    为了尽量做好负载均衡和容错能力,需要将同一个Partition的Replica尽量分散到不同的机器。如果所有的Replica都在同一个Broker上,那一旦该Broker宕机,该Partition的所有Replica都无法工作,那么这些Replica也就失去的意义。

    Replica如何同步

    当没有Replica的时候,producer向broker写入消息非常简单,当有很多Replica的时候是如何处理的呢?
    一般来说,对于这种情况有两个处理方法:

    1. 同步复制,当producer向所有的Replica写入成功消息后才返回。一致性得到保障,但是延迟太高,吞吐率降低。
    2. 异步复制,所有的Replica选取一个一个leader,producer向leader写入成功即返回,leader负责将消息同步给其他的所有Replica。但是消息同步一致性得不到保证,但是保证了快速的响应。

    而kafka选取了一个折中的方式:ISR(in-sync replicas)。producer每次发送消息,将消息发送给leader,leader将消息同步给他“信任”的“小弟们”就算成功,巧妙的均衡了确保数据不丢失以及吞吐率。具体的:

    1. 在所有的Replica中,leader会维护一个与其基本保持同步的Replica列表,该列表称为ISR(in-sync Replica),每个Partition都会有一个ISR,而且是由leader动态维护。
    2. 如果一个replica落后leader太多,leader会将其剔除。如果另外的replica跟上脚步,leader会将其加入。
    3. 同步:leader向ISR中的所有replica同步消息,当收到所有ISR中replica的ack之后,leader才commit。
    4. 异步:收到同步消息的ISR中的replica,异步将消息同步给ISR集合外的replica。


    原文:https://blog.csdn.net/C_J33/article/details/82730041

  • 相关阅读:
    jq 字符串去除空格
    wpf 加载资源文件
    wpf 寻找TreeView的子元素,并对其进行操作
    IIS发布MVC ASP.NET网站
    wpf Binding 小记录
    asp.net mvc表单异步提交
    把路径设置为全局变量
    MVC将服务器端的物理路径转换为服务器路径
    silverlight控件阴影效果示例
    NLP的12条前提假设
  • 原文地址:https://www.cnblogs.com/cag2050/p/10335690.html
Copyright © 2020-2023  润新知