最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Knative 实战:基于 Kafka 实现消息推送

  • 2019-11-11
  • 本文字数:1582 字

    阅读完需:约 5 分钟

Knative 实战:基于 Kafka 实现消息推送

背景

消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列 for Apache Kafka 广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。


结合 Knative 中提供了 KafkaSource 事件源的支持, 可以方便的对接 Kafka 消息服务。


另外也可以安装社区 Kafka 2.0.0 及以上版本使用。

在阿里云上创建 Kafka 实例

创建 Kafka 实例

登录消息队列 Kafka 控制台, 选择【购买实例】。由于当前 Knative 中 Kafka 事件源支持 2.0.0 及以上版本,在阿里云上创建 Kafka 实例需要选择包年包月、专业版本进行购买,购买之后升级到 2.0.0 即可。


部署实例并绑定 VPC

购买完成之后,进行部署,部署时设置 Knative 集群所在的 VPC 即可:


创建 Topic 和 Consumer Group

接下来我们创建 Topic 和消费组。


进入【Topic 管理】,点击 创建 Topic, 这里我们创建名称为 demo 的 topic:



进入【Consumer Group 管理】,点击 创建 Consumer Group, 这里我们创建名称为 demo-consumer 的消费组:


部署 Kafka 数据源

部署 Kafka addon 组件

登录容器服务控制台,进入【Knative 组件管理】,部署 Kafka addon 组件。


创建 KafkaSource 实例

首先创建用于接收事件的服务 event-display:


apiVersion: serving.knative.dev/v1kind: Servicemetadata:  name: event-displayspec:  template:    spec:      containers:      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/eventing-sources-cmd-event_display:bf45b3eb1e7fc4cb63d6a5a6416cf696295484a7662e0cf9ccdf5c080542c21d
复制代码


接下来创建 KafkaSource:


apiVersion: sources.eventing.knative.dev/v1alpha1kind: KafkaSourcemetadata:  name: alikafka-sourcespec:  consumerGroup: demo-consumer  # Broker URL. Replace this with the URLs for your kafka cluster,  # which is in the format of my-cluster-kafka-bootstrap.my-kafka-namespace:9092.  bootstrapServers: 192.168.0.6x:9092,192.168.0.7x:9092,192.168.0.8x:9092  topics: demo  sink:    apiVersion: serving.knative.dev/v1alpha1    kind: Service    name: event-display
复制代码


说明:


  • bootstrapServers: Kafka VPC 访问地址

  • consumerGroup: 设置消费组

  • topics:设置 Topic


创建完成之后,我们可以查看对应的实例已经运行:


[root@iZ2zeae8wzyq0ypgjowzq2Z ~]# kubectl get podsNAME                                    READY   STATUS    RESTARTS   AGEalikafka-source-k22vz-db44cc7f8-879pj   1/1     Running   0          8h
复制代码

验证

在 Kafka 控制台,选择 topic 发送消息,注意这里的消息格式必须是 json 格式:



我们可以看到已经接收到了发送过来的 Kafka 消息:


[root@iZ2zeae8wzyq0ypgjowzq2Z ~]# kubectl logs event-display-zl6m5-deployment-6bf9596b4f-8psx4 user-container
☁️ CloudEvent: valid ✅Context Attributes, SpecVersion: 0.2 Type: dev.knative.kafka.event Source: /apis/v1/namespaces/default/kafkasources/alikafka-source#demo ID: partition:7/offset:1 Time: 2019-10-18T08:50:32.492Z ContentType: application/json Extensions: key: demoTransport Context, URI: / Host: event-display.default.svc.cluster.local Method: POSTData, { "key": "test" }
复制代码

小结

结合阿里云 Kafka 产品,通过事件驱动触发服务(函数)执行,是不是简单又高效?


这样我们利用 Knative 得以把云原生的能力充分释放出来,带给我们更多的想象空间。欢迎对 Knative 感兴趣的一起交流。


实操视频演示


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    作者介绍


    元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工作。


    本文转载自公众号阿里巴巴云原生(ID:Alicloudnative)


    原文链接


    https://mp.weixin.qq.com/s/YRpxBNcKlWXdRuMrYaAzig


    2019-11-11 08:002410

    评论

    发布
    暂无评论
    发现更多内容

    第一次异地过年有感

    石君

    思考 情感

    EternalWallet为您提供快速、便捷、低价的国际汇款服务

    Geek_c610c0

    翻译:《实用的Python编程》01_05_Lists

    codists

    人工智能 后端 python 爬虫 列表 数据结构与算法

    程序员成长第五篇:如何选择城市工作?

    石云升

    程序员 2月春节不断更 选择城市

    3.Fiber(我是在内存中的dom)

    全栈潇晨

    React React Hooks react源码

    1480. 一维数组的动态和

    小马哥

    算法 七日更

    ElasticSearch.03 - 基本原理

    insight

    elasticsearch 2月春节不断更

    13. 如果自己写的 Python 程序出错了,怎么办?

    梦想橡皮擦

    python 爬虫 2月春节不断更

    给hugo博客添加评论功能

    远鹏

    Hugo 静态博客 utterances

    【LeetCode】数组拆分Java题解

    Albert

    算法 LeetCode 2月春节不断更

    开发利器——C语言必备实用第三方库

    码哥比特

    c c++ Linux 后端 框架

    揭秘登上2021春晚舞台的黑科技-XR技术

    架构精进之路

    黑科技 vr 春晚 XR MR

    春节快过腻了?不妨关心下太空探索

    脑极体

    gradle中的增量构建

    程序那些事

    maven Gradle 程序那些事 构建工具

    第四章作业-编写一个用例文档

    秦挺

    【LeetCode】重塑矩阵Java题解

    Albert

    算法 LeetCode 2月春节不断更

    这是我的第一次JavaScript初级技巧

    我是哪吒

    JavaScript 学习 程序员 大前端 2月春节不断更

    写公号大半年,看看我都收获了些啥

    架构精进之路

    技术 总结 微信公众号 成长笔记

    消息队列Kafka:入门基础

    正向成长

    kafka

    C语言实用第三方库Melon开箱即用之多线程模型

    码哥比特

    c c++ Linux 后端 框架

    微信红包封面,2021年为啥突然火了?

    架构精进之路

    春节 微信红包封面 商业洞察

    2.react心智模型(来来来,让大脑有react思维吧)

    全栈潇晨

    React React Hooks react源码

    日记 2021年2月17日(周三)

    Changing Lin

    2月春节不断更

    IDEA插件:快速删除Java代码中的注释

    xiaoxi666

    Java 代码注释 JavaParser

    深度讲解背包问题:面试中每五道动态规划就有一道是背包模型 ...

    宫水三叶的刷题日记

    深度思考 面试 LeetCode 动态规划 数据结构与算法

    【活动回顾】4步2小时,搭建爆火的语音聊天室

    ZEGO即构

    字幕组时代落幕,翻译的未来可能是?

    字节跳动技术团队

    1.开篇(听说你还在艰难的啃react源码)

    全栈潇晨

    React React Hooks react源码

    【STM32】PWM 输出 (标准库)

    AXYZdong

    硬件 stm32 2月春节不断更

    今日笔记

    Nydia

    C语言第三方库Melon开箱即用之词法分析器使用

    码哥比特

    c c++ Linux 后端 框架

    Knative 实战:基于 Kafka 实现消息推送_语言 & 开发_阿里云容器平台_InfoQ精选文章