<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kafka on Mi&amp;Bee Blog</title><link>/tags/kafka/</link><description>Recent content in Kafka on Mi&amp;Bee Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>蓝宝石的傻话</managingEditor><lastBuildDate>Sat, 25 Nov 2023 00:00:00 +0000</lastBuildDate><atom:link href="/tags/kafka/rss.xml" rel="self" type="application/rss+xml"/><item><title>eBPF系列之：DeepFlow 扩展协议解析实践（MongoDB协议与Kafka协议）</title><link>/posts/telemetry/deepflow-agent-proto-dev/</link><pubDate>Sat, 25 Nov 2023 00:00:00 +0000</pubDate><guid>/posts/telemetry/deepflow-agent-proto-dev/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E6%A6%82%E8%BF%B0"&gt;概述：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%A6%82%E4%BD%95%E5%88%86%E6%9E%90%E4%B8%80%E4%B8%AA%E5%8D%8F%E8%AE%AEmongodb"&gt;如何分析一个协议(MongoDB)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E5%8D%8F%E8%AE%AE%E6%96%87%E6%A1%A3%E7%9A%84%E5%88%86%E6%9E%90%E6%80%9D%E8%B7%AF"&gt;协议文档的分析思路&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mongodb%E5%8D%8F%E8%AE%AE%E6%93%8D%E4%BD%9C%E7%A0%81%E8%AF%B4%E6%98%8E%E8%A1%A8"&gt;MongoDB协议操作码说明表&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%AF%B9%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E6%93%8D%E4%BD%9C%E7%A0%81op_msg%E5%88%86%E6%9E%90"&gt;对最常见的操作码&lt;code&gt;OP_MSG&lt;/code&gt;分析&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%9C%A8deepflow-agent%E6%89%A9%E5%B1%95%E4%B8%80%E4%B8%AA%E5%8D%8F%E8%AE%AE%E8%A7%A3%E6%9E%90%E9%87%87%E9%9B%86"&gt;在&lt;code&gt;DeepFlow Agent&lt;/code&gt;扩展一个协议解析采集&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#deepflow-agent%E7%9A%84%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3%E6%A6%82%E8%A6%81"&gt;&lt;code&gt;DeepFlow Agent&lt;/code&gt;的开发文档概要&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%BB%A3%E7%A0%81%E6%8C%87%E5%BC%95"&gt;代码指引&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E5%8D%8F%E8%AE%AE%E5%B9%B6%E7%94%A8%E4%B8%80%E4%B8%AA%E5%B8%B8%E9%87%8F%E6%A0%87%E8%AF%86"&gt;定义一个协议，并用一个常量标识。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%B8%BA%E6%96%B0%E5%8D%8F%E8%AE%AE%E5%87%86%E5%A4%87%E8%A7%A3%E6%9E%90%E9%80%BB%E8%BE%91"&gt;为新协议准备解析逻辑&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E5%AE%9A%E4%B9%89%E7%BB%93%E6%9E%84%E4%BD%93"&gt;定义结构体&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%AE%9E%E7%8E%B0l7protocolparserinterface"&gt;实现 &lt;code&gt;L7ProtocolParserInterface&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%88%A9%E7%94%A8wasm%E6%8F%92%E4%BB%B6%E6%89%A9%E5%B1%95deepflow%E7%9A%84%E5%8D%8F%E8%AE%AE%E9%87%87%E9%9B%86"&gt;利用&lt;code&gt;Wasm&lt;/code&gt;插件扩展&lt;code&gt;DeepFlow&lt;/code&gt;的协议采集&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#kafka%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90"&gt;&lt;code&gt;Kafka&lt;/code&gt;协议分析&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#kafka%E7%9A%84header%E5%92%8Cdata%E6%A6%82%E8%A7%88"&gt;&lt;code&gt;Kafka&lt;/code&gt;的&lt;code&gt;Header&lt;/code&gt;和&lt;code&gt;Data&lt;/code&gt;概览&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#kafka%E7%9A%84fetch-api"&gt;Kafka的Fetch API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#kafka%E7%9A%84produce-api"&gt;Kafka的Produce API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#kafka%E5%8D%8F%E8%AE%AEdeepflow-agent%E5%8E%9F%E7%94%9F%E8%A7%A3%E7%A0%81"&gt;Kafka协议DeepFlow Agent原生解码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#deepflow-agent%E7%9A%84-wasm-%E6%8F%92%E4%BB%B6"&gt;&lt;code&gt;DeepFlow Agent&lt;/code&gt;的 &lt;code&gt;Wasm&lt;/code&gt; 插件&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#wasm-go-sdk-%E7%9A%84%E6%A1%86%E6%9E%B6"&gt;Wasm Go SDK 的框架&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E6%8F%92%E4%BB%B6%E4%BB%A3%E7%A0%81%E6%8C%87%E5%BC%95"&gt;插件代码指引&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E7%BB%93%E8%AF%AD"&gt;结语&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E5%8E%9F%E7%94%9Frust%E6%89%A9%E5%B1%95"&gt;原生Rust扩展&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#wasm%E6%8F%92%E4%BB%B6%E6%89%A9%E5%B1%95"&gt;Wasm插件扩展&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E9%99%84%E5%BD%95"&gt;附录&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position:relative; padding-bottom:75%; width:100%; height:0"&gt;
&lt;iframe src="//player.bilibili.com/player.html?isOutside=true&amp;aid=921401645&amp;bvid=BV1Nu4y1A7ZC&amp;cid=1345829549&amp;p=1&amp;autoplay=false" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position:absolute; height: 100%; width: 100%;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="概述"&gt;概述：&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;MongoDB&lt;/code&gt; 目前使用广泛，但是缺乏有效的可观测能力。
&lt;code&gt;DeepFlow&lt;/code&gt; 在可观测能力上是很优秀的解决方案，但是却缺少了对 &lt;code&gt;MongoDB&lt;/code&gt; 协议的支持。
该文是为 &lt;code&gt;DeepFlow&lt;/code&gt; 扩展了 &lt;code&gt;MongoDB&lt;/code&gt; 协议解析，增强 &lt;code&gt;MongoDB&lt;/code&gt; 生态的可观测能力，简要描述了从协议文档分析到在 &lt;code&gt;DeepFlow&lt;/code&gt; 内实现代码解析的过程拆解。&lt;/p&gt;</description></item></channel></rss>