{"componentChunkName":"component---src-templates-best-practice-detail-tsx","path":"/best-practice/2020-08-07-ckafka","result":{"data":{"currentBlog":{"id":"d2255c44-05c8-5daa-b9fa-d3bdf84b36ce","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/202087/1596785478341-%E4%B8%89%E8%A1%8C_%E7%B4%AB%E8%89%B2.jpg","authors":["Mason"],"categories":["best-practice"],"date":"2020-08-06T00:00:00.000Z","title":"腾讯云 Serverless 云函数实现 CKafka 数据转存到 ES","description":"内附部署实战步骤，欢迎体验！","authorslink":null,"translators":null,"translatorslink":null,"tags":["CKafka","ES"],"keywords":"Serverless, Serverless Framework, CKafka","outdated":null},"wordCount":{"words":204,"sentences":51,"paragraphs":51},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-08-07-ckafka.md","fields":{"slug":"/best-practice/2020-08-07-ckafka/","keywords":["serverless","无服务器","云函数","函数","Ckafka","serverlesscloud"]},"html":"<h2 id=\"背景介绍\"><a href=\"#%E8%83%8C%E6%99%AF%E4%BB%8B%E7%BB%8D\" aria-label=\"背景介绍 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>背景介绍</h2>\n<p>腾讯云 Serverless 云函数是下一代通用计算平台，提供安全稳定、高效易用的低成本无服务器运行环境。随着 Kafka 社区的繁荣，越来越多的用户开始使用 Kafka 来做日志收集、大数据分析、流式数据处理等。而公有云上的产品 Ckafka 也借助了开源社区的力量，做了很多优化： </p>\n<ul>\n<li>基于 ApacheKafka 的分布式、高可扩展、高吞吐</li>\n<li>100% 兼容 Apache KafkaAPI（0.9 及 0.10）</li>\n<li>无需部署，直接使用 Kafka 所有功能</li>\n<li>Ckafka 封装所有集群细节，无需用户运维</li>\n<li>支持动态升降实例配置，按照需求付费（开发中）</li>\n<li>对消息引擎优化，性能比社区最高提升 50%</li>\n</ul>\n<p>同时，在公有云上，云函数也和 CKafka 做了深度联动，并推出了很多非常实用的功能。</p>\n<h2 id=\"运行原理\"><a href=\"#%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86\" aria-label=\"运行原理 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>运行原理</h2>\n<p>如下图，云函数可以实时消费 Ckafka 中的消息，比如做数据转存、日志清洗、实时消费等。并且，像数据转存的功能已经集成到了 Ckafka 的控制台上，用户可以一键开启使用，大大降低了用户使用的复杂度。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614350782-1596168246971-c8d410c1013ac117.png\"></p>\n<h2 id=\"方案优势\"><a href=\"#%E6%96%B9%E6%A1%88%E4%BC%98%E5%8A%BF\" aria-label=\"方案优势 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>方案优势</h2>\n<p>对比使用云主机自建 Ckafka Consumer 的方式，云函数帮用户屏蔽掉了很多不必要的开销：</p>\n<ol>\n<li>云函数控制台上可以一键开启Ckafka触发器，帮助用户自动创建 Consumer，并由云函数平台来维护组建的高可用；</li>\n<li>Ckafka 触发器自身支持很多实用的配置：支持配置 offset 位置、支持配置1~1万消息聚合条数、支持配置 1~1万次重试次数等；</li>\n<li>基于云函数开发的业务逻辑，天然支持弹性伸缩，无需额外搭建和维护服务器集群等。</li>\n</ol>\n<h2 id=\"常用场景\"><a href=\"#%E5%B8%B8%E7%94%A8%E5%9C%BA%E6%99%AF\" aria-label=\"常用场景 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>常用场景</h2>\n<p>如下图所示，借助云函数和 Ckafka 触发器，可以非常方便实现 CKafka 消息转存到 COS、ES、DB等，那本次也会借助云函数来替代 Logstash，实现 Ckafka 消息罗盘 ES。</p>\n<p>和使用 CVM 自建 Logstash 对比，云函数有以下优势：</p>\n<ol>\n<li>云函数自带 Consumer 组件，可自行聚合；</li>\n<li>云函数的模板函数已经实现了消息聚合和部分清洗能力，还可自行扩展；</li>\n<li>云函数集群自带高可用和监控日志能力，业务上线速度更快；</li>\n<li>云函数采用按实际使用收费，比自建集群费用更优，可以节省 50% 的费用。</li>\n</ol>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596615984824-1596168783490-010897670c0056a7.png\"></p>\n<h2 id=\"部署流程\"><a href=\"#%E9%83%A8%E7%BD%B2%E6%B5%81%E7%A8%8B\" aria-label=\"部署流程 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>部署流程</h2>\n<p><strong>前置条件</strong>（以广州地域为例）：</p>\n<ul>\n<li>开启 Elasticsearch 服务</li>\n<li>开启 Ckafka 服务</li>\n</ul>\n<h3 id=\"1-创建云函数\"><a href=\"#1-%E5%88%9B%E5%BB%BA%E4%BA%91%E5%87%BD%E6%95%B0\" aria-label=\"1 创建云函数 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 创建云函数</h3>\n<p>登录云函数控制台，选择地域后，新建函数，选择运行环境 Python3.6，搜索「Ckafka」，选中模板函数后，下一步。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614350557-1596168246971-c8d410c1013ac117.png\"></p>\n<p>在下一步中，点开高级设置：配置环境变量，如下：</p>\n<p>必填参数：<code class=\"language-text\">ES_Address</code>, <code class=\"language-text\">ES_User</code>, <code class=\"language-text\">ES_Password</code>, <code class=\"language-text\">ES_Index_KeyWord</code></p>\n<p>可选填入：</p>\n<ul>\n<li><code class=\"language-text\">ES_Log_IgnoreWord</code>（需要删除的关键词，缺省则全量写入，如填 <code class=\"language-text\">name</code>, <code class=\"language-text\">password</code>）</li>\n<li><code class=\"language-text\">ES_Index_TimeFormat</code>（按照天或者小时设置 Index，缺省则按照天建立索引，如填 <code class=\"language-text\">hour</code>）</li>\n</ul>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614350350-1596168246971-c8d410c1013ac117.png\"></p>\n<p>在高级设置中，配置私有网络，需要选择和 ES 相同 VPC，完成函数创建。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614349580-1596168246971-c8d410c1013ac117.png\"></p>\n<h3 id=\"2-创建-ckafka-触发器\"><a href=\"#2-%E5%88%9B%E5%BB%BA-ckafka-%E8%A7%A6%E5%8F%91%E5%99%A8\" aria-label=\"2 创建 ckafka 触发器 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 创建 Ckafka 触发器</h3>\n<p>在函数的【触发管理】页面，创建触发器，配置对应 Topic 的触发方式，提交后即可生效。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596616619034-1596181490939-37123857cce6c27b.png\"></p>\n<h3 id=\"3-查看-es-和函数运行日志\"><a href=\"#3-%E6%9F%A5%E7%9C%8B-es-%E5%92%8C%E5%87%BD%E6%95%B0%E8%BF%90%E8%A1%8C%E6%97%A5%E5%BF%97\" aria-label=\"3 查看 es 和函数运行日志 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 查看 ES 和函数运行日志</h3>\n<p><strong>查看函数运行日志</strong></p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614349205-1596168246971-c8d410c1013ac117.png\" alt=\"查看函数运行日志\"></p>\n<p><strong>查看 Kibana</strong></p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614349304-1596168246971-c8d410c1013ac117.png\" alt=\"查看 Kibana\"></p>\n<p><strong>扩展能力介绍</strong></p>\n<p>如果想要实现高级日志清洗逻辑，可直接在函数代码中修改逻辑。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614349279-1596168246971-c8d410c1013ac117.png\"></p>\n<p>针对函数的运行状态，可以自行配置监控告警，实时感知业务运行情况。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202085/1596614349245-1596168246971-c8d410c1013ac117.png\"></p>\n<hr>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a></li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#%E8%83%8C%E6%99%AF%E4%BB%8B%E7%BB%8D\">背景介绍</a></li>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86\">运行原理</a></li>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#%E6%96%B9%E6%A1%88%E4%BC%98%E5%8A%BF\">方案优势</a></li>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#%E5%B8%B8%E7%94%A8%E5%9C%BA%E6%99%AF\">常用场景</a></li>\n<li>\n<p><a href=\"/best-practice/2020-08-07-ckafka/#%E9%83%A8%E7%BD%B2%E6%B5%81%E7%A8%8B\">部署流程</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#1-%E5%88%9B%E5%BB%BA%E4%BA%91%E5%87%BD%E6%95%B0\">1. 创建云函数</a></li>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#2-%E5%88%9B%E5%BB%BA-ckafka-%E8%A7%A6%E5%8F%91%E5%99%A8\">2. 创建 Ckafka 触发器</a></li>\n<li><a href=\"/best-practice/2020-08-07-ckafka/#3-%E6%9F%A5%E7%9C%8B-es-%E5%92%8C%E5%87%BD%E6%95%B0%E8%BF%90%E8%A1%8C%E6%97%A5%E5%BF%97\">3. 查看 ES 和函数运行日志</a></li>\n</ul>\n</li>\n</ul>"},"previousBlog":{"id":"1f8be8e0-2d12-5df8-a762-f7ffc07ec3b4","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020812/1597230581474-002.jpg","authors":["粟俊娥"],"categories":["best-practice"],"date":"2020-08-12T00:00:00.000Z","title":"腾讯云 Severless-Express 项目开发和灰度发布最佳实践","description":"本文教你快速了解 Severless-Express 项目开发和灰度发布，全是干货！","authorslink":["https://github.com/June1991"],"translators":null,"translatorslink":null,"tags":["Serverless","Express"],"keywords":"Serverless, Serverless Framework","outdated":null},"wordCount":{"words":294,"sentences":64,"paragraphs":63},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-08-12-serverless-express.md","fields":{"slug":"/best-practice/2020-08-12-serverless-express/","keywords":["serverless","spa","云函数","serverless","express","feature","版本"]}},"nextBlog":{"id":"6d507007-0b1d-550a-b9b6-91c027567053","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/202084/1596530264670-1596526072902-%E7%AE%97%E5%8A%9B.jpg","authors":["Mason"],"categories":["best-practice"],"date":"2020-08-04T00:00:00.000Z","title":"腾讯云 Serverless 支撑「新东方」核心业务算力资源","description":"腾讯云 Serverless 无服务器计算，强计算型核心业务的算力保障。","authorslink":null,"translators":null,"translatorslink":null,"tags":["ffmpeg","Serverless"],"keywords":"Serverless, Serverless Framework","outdated":null},"wordCount":{"words":418,"sentences":67,"paragraphs":67},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-08-04-serverless-xindongfang.md","fields":{"slug":"/best-practice/2020-08-04-serverless-xindongfang/","keywords":["serverless","云函数","函数","转码","Serverless","视频","serverlesscloud","新东方"]}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"d2255c44-05c8-5daa-b9fa-d3bdf84b36ce","previousBlogId":"1f8be8e0-2d12-5df8-a762-f7ffc07ec3b4","nextBlogId":"6d507007-0b1d-550a-b9b6-91c027567053"}}}