zoukankan      html  css  js  c++  java
  • 【转载】震惊了!原来这才是kafka!

    https://www.jianshu.com/p/d3e963ff8b70

    kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。

    生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。

    kafka对外使用topic的概念,生产者往topic里写消息,消费者从读消息。为了做到水平扩展,一个topic实际是由多个partition组成的,遇到瓶颈时,可以通过增加partition的数量来进行横向扩容。单个parition内是保证消息有序。

    每新写一条消息,kafka就是在对应的文件append写,所以性能非常高。

    大概用法就是,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉去指定Topic的消息,然后进行业务处理。

    关于broker、topics、partitions的一些元信息用zk来存,监控和路由啥的也都会用到zk。

    ls /brokers/

    创建一条记录,记录中一个要指定对应的topic和value,key和partition可选。 先序列化,然后按照topic和partition,放进对应的发送队列中。kafka produce都是批量请求,会积攒一批,然后一起发送,不是调send()就进行立刻进行网络发包。
    如果partition没填,那么情况会是这样的:

    1. key有填
      按照key进行哈希,相同key去一个partition。(如果扩展了partition的数量那么就不能保证了)
    2. key没填
      round-robin来选partition
  • 相关阅读:
    Java 注解
    java多线程
    webstorm配置Monokai-Sublime.jar主题
    express
    npm与package.json
    Node require方法加载规则
    js伪数组转数组
    node中的Console
    Node.js核心模块-url
    服务端渲染SSR和客户端渲染CSR
  • 原文地址:https://www.cnblogs.com/jing1617/p/13441814.html
Copyright © 2011-2022 走看看