2019 年 04 月 - 4 文章

kafka源码分析(一)- KafkaProducer

  |   0 评论   |   0 浏览

Kafka自定义了一套网络协议,只要遵循这个标准,就能向kafka发送消息,也可以从kafka中拉取消息。kafka有多个版本的生产者实现。我们这篇文章讲述的是Java版本的消费者实现-KafkaProducer,能轻松实现同步、异步发送消息、批量发送、超时重发等复杂的功能。 1.KafkaProducer基本流程 基本流程如下: producerInterceptors对消息进行拦截 Serializer 对消息的key和value进行序列化 partitioner 为消息选择合适的partition RecordAccumulator收集消息,实现批量发送 Sender从RecordAccumulator 获取消息 构造ClientRequest 将ClientRequest交给NetworkClient,准备发送 NetworkClient将请求放入KafkaChannel的缓存 执行网络IO,发送请求 收到响应,调用ClientRequest的回调函数 调用RecordBatch的回调函数,最终调用每个消息上注册的回调函数 消息发送的过程,涉及两个线程的协同工作,主线程将业务数....

我的开源

  |   0 评论   |   0 浏览
  1. personNote JavaScript 🤩1  ⭐️0  🖖2 个人项目.LeetCode算法题解题思路及代码 开发中用到的Groovy脚本 Java代码。有Nio,多线程等 TcpClient / TcpServer 2. solo-blog 🤩1  ⭐️0  🖖0  🏠http://www.guobingwei.tech ✍️ 走码观花 - 端木羽晨的个人博客 3. car-intelligent-hardware Java 🤩1  ⭐️0  🖖0 4. miniProgram JavaScript 🤩1  ⭐️0  🖖0 微信小程序 5. spring-boot HTML 🤩1  ⭐️0  🖖0 spring boot项目框架,一个博客 6. guobingwei.me CSS 🤩1  ⭐️0 &nb....

mac 下Apache Kafka 源码构建

  |   0 评论   |   0 浏览
  1. Java环境安装 Java 环境需要jdk 8及以上。大家都会安装,省略 2. gradle 环境安装 gradle版本必须是5.0以上,我本地已经安装过gradle,只能版本比较低,需要升级,mac 下命令如下: brew upgrade gradle 如果首次安装的话执行 brew install gradle 卸载重装使用命令: brew reinstall gradle 3. scala环境安装 brew update brew install scala 4. kafka源码构建 下载源代码到本地,然后构建 cd kafka_source_dir gradle

ZooKeeper源码分析(五) - 数据与存储

  |   0 评论   |   0 浏览

这篇文章我们来看下zk底层数据存储的技术细节,在ZooKeeper中,数据存储分为内存数据存储和磁盘数据存储 1. 内存数据 ZooKeeper的数据模型是一棵树,可以类比为一个内存数据库,存储了整棵树的内容,包括节点路径,节点数据及其ACL信息等,ZooKeeper会定时将这个数据存储到磁盘上。接下来看一下几个关键的数据模型。 1.1. DataTree ZooKeeper内存数据存储的核心组件,代表了内存中一份完整的数据 。 DataTree 的数据结构如下: 1.2. DataNode DataNode是数据存储的最小单元,包含着对父节点的引用。还有其他几个属性 byte [] data : 保存节点的数据 Long acl: acl map长度 StatPersisted stat :节点状态 Set<String> children : 当前节点的子节点列表 还提供了几个操作接口: 添加子节点:往set集合中添加子节点信息 public synchronized boolean addChild(String child) { if (children == n....