摘要

  前面我们已经解释获取和更新metadata以及重要性,那么如何给topic 发送数据?

  kafkaclient和broker通信,有很多种情况,核心的broker提供的接口有6个

元数据接口(Metadata API),生产消息接口(Produce API),获取消息接口(Fetch API)

    偏移量接口(Offset API),偏移量提交接口(Offset Commit API),偏移量获取接口(Offset Fetch API)

如何发送数据,只要研究一下生产消息接口就有一个简单了解啦,贴一下,JSON版本的API,方便理解(根据源码改的,实际请求API非JSON这种序列化方式,而是自定义的序列化的方式)

1,从上面可以看出kafka-client,每次发送消息的时候,不是一条一条发,而是有一个集合这种概念,kafka-client 将同一个topic的partition下的请求,都放到一起,构成messageSet
  2,然后按照topic分组,批量发送消息

   结合着kafka 消息模型(V0 版本)或许大家理解起来上面的json api,更容易

  crc32(4B):crc32校验值。校验范围为magic至value之间。
  magic(1B):消息格式版本号,此版本的magic值为0。
  attributes(1B):消息的属性。总共占1个字节,低3位表示压缩类型:
  key length(4B):表示消息的key的长度。如果为-1,则表示没有设置key,即key=null。
  key:可选,如果没有key则无此字段。
  value length(4B):实际消息体的长度。如果为-1,则表示消息为空。
  value:消息体。可以为空,比如tomnstone消息。

  具体实现

1,内存分配

kafka-client 不能无限制使用虚拟机内存,JVM还有其他线程需要内存,kafka-client可以使用的内存上限多少?,消息内存如何分配。

参考kafka-client 内存分配和管理  https://www.cnblogs.com/huxuhong/p/13651696.html

2,消息存储

kafka 支持海量数据发送,如果JVM内存存储这一块如果不够优秀,根本无法支持这么庞大的QPS。

参考 kafka-client 消息存储分析 https://www.cnblogs.com/huxuhong/p/13821491.html

3,消息序列化及发送

kafka 数据存储和发送的更多相关文章

  1. Spark Streaming接收Kafka数据存储到Hbase

    Spark Streaming接收Kafka数据存储到Hbase fly spark hbase kafka 主要参考了这篇文章https://yq.aliyun.com/articles/60712 ...

  2. 解决KafKa数据存储与顺序一致性保证

    “严格的顺序消费”有多么困难 下面就从3个方面来分析一下,对于一个消息中间件来说,”严格的顺序消费”有多么困难,或者说不可能. 发送端 发送端不能异步发送,异步发送在发送失败的情况下,就没办法保证消息 ...

  3. kafka 数据存储结构+原理+基本操作命令

    数据存储结构: Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的.每个topic又可以分成几个不同的partition(每个topic有几个partitio ...

  4. Kafka数据安全性、运行原理、存储

    直接贴面试题: 怎么保证数据 kafka 里的数据安全? 答: 生产者数据的不丢失kafka 的 ack 机制: 在 kafka 发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够 ...

  5. Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考

    Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考 在计算机世界中经常需要与数据打交道,这也是我们戏称CURD工程师的原因之 ...

  6. 小程序的数据存储,与Django等服务发送请求

    目录 官方文档 快速归纳 存取改删 1.wx存储数据到本地以及本地获取数 1.1 wx.setStorageSync(string key, any data) 存(同步) 1.2 wx.setSto ...

  7. kafka数据迁移实践

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:mikealzhou 本文重点介绍kafka的两类常见数据迁移方式:1.broker内部不同数据盘之间的分区数据迁移:2.不同broker ...

  8. Kafka文件存储机制及partition和offset

    转载自:  https://yq.aliyun.com/ziliao/65771 参考:  Kafka集群partition replication默认自动分配分析    如何为kafka选择合适的p ...

  9. Kafka文件存储机制及offset存取

    Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...

随机推荐

  1. dubbo,hessian过滤器filter使用

    Dubbo的Filter在使用的过程中是我们扩展最频繁的内容,而且Dubbo的很多特性实现也都离不开Filter的工作,今天一起来看一下Filter的具体实现. Filter(过滤器)在很多框架中都有 ...

  2. struts2学习总结

    https://www.cnblogs.com/wkrbky/p/5891237.html https://www.cnblogs.com/printN/p/6434526.html https:// ...

  3. C语言积累一点点

        778. 水位上升的泳池中游泳https://leetcode-cn.com/problems/swim-in-rising-water/ 839. 相似字符串组 https://leetco ...

  4. Sublime Text:性感无比的代码编辑器安装破解配置教程

    代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大.灵活的编辑器,相信你和我一样,都不会例外. 我用过 ...

  5. MySQL中没有FULL OUTER JOIN的处理

    FULL OUTER JOIN:SELECT column_name(s)FROM table1FULL OUTER JOIN table2ON table1.column_name=table2.c ...

  6. adb、package及activity

    1.   adb adb连接手机参考:https://www.cnblogs.com/mind18/p/12592252.html,中的三.5节 1.1.  adb介绍 ADB全名Andorid De ...

  7. 通过Portwigge的Web安全漏洞训练平台,学习SSRF

    前言 Portswigger是Burpsuite的官网,也是一个非常好的漏洞训练平台.其Web安全靶场地址为:https://portswigger.net/web-security/ 该靶场的训练内 ...

  8. 面试题:对NotNull字段插入Null值 有啥现象?

    Hi,大家好!我是白日梦. 今天我要跟你分享的话题是:"对NotNull字段插入Null值有啥现象?" 一. 推荐阅读 首发地址:https://mp.weixin.qq.com/ ...

  9. ElementUI表格行编辑单元格编辑支持(输入框,选择框)Demo

    嗯,需要做成这个样子,所以网上查了些资料.整理了下.提供几个一个思路.不足之处请小伙伴指出来.  普通版的table可编辑内嵌select选择框,输出框,编辑删除添加等 <!DOCTYPE ht ...

  10. VBA_headers_mapping

    Header Mapping--应对 Report Headers 的变化 Author : Collin_PXY 背景 在 RPA工作中,稳定的规则非常重要,因为 RPA项目就是基于规则而进行的,但 ...