写点什么

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

2019 年 10 月 27 日

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

当前在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何基于 Kafka 实现消息推送呢?本文作者将以阿里云 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 感兴趣的一起交流。


实操视频演示链接:https://v.qq.com/x/page/d3013wzs3tp.html


作者简介:


元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工作。本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative)。


2019 年 10 月 27 日 08:001994

评论

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

npm version 使用详解

Leo

前端 npm 语义化 版本控制

如何读IPO招股说明书(2)到哪儿下载招股书?

赵新龙

IPO 上市 招股说明书

演讲的秘诀

伯薇

个人成长 演讲 追求极致 完美主义

二叉树先序中序后序的非递归实现

Kenn

算法

小技巧:ssh -D 让终端访问或下载快一点

LinkPwd

Linux Shell

哪儿有真实靠谱的数据,说谎话必须负责的那种?| IPO招股说明书(1)

赵新龙

阿里巴巴 IPO 旷视科技 数据

Nginx学习

陈雷雷

nginx nginx编译 安装 PHP-FPM 和 Nginx

二叉树的先序中序后序递归实现

Kenn

算法 递归

曾国藩的人生“六戒”

泰稳@极客邦科技

身心健康 个人成长 心理学

程序员陪娃漫画系列——吃饭

孙苏勇

程序员 生活 程序员人生 陪伴 漫画

您到底要说什么?

水色

死磕Java并发(5):线程详解,Java开发这么久,这些线程的基础知识你确定都会了?

七哥爱编程

Java Java并发 线程

迷茫时,想想能为这个世界做些什么就好了

泰稳@极客邦科技

身心健康 个人成长 团队协作

怎么写出bug的

三爻

说说疫情下的新常态该怎么应对

CD826

疫情 新常态

专家的直觉和你的直觉

池建强

书摘 直觉

如何避免把中台变成外包团队

松花皮蛋me

数据中台

对开发人员有用的定律、理论、原则和模式

松花皮蛋me

Java 设计模式

我为什么不愿在公众号发文章,却愿在写作平台发

小天同学

微信公众平台 产品 反馈 写作平台

浅谈行业软件

孙苏勇

软件 思考 转型

我们是时候降低对完全自动驾驶的期望了

赵钰莹

自动驾驶 AI

媒体的经营 03 | 很显然,媒体卖广告是最没有前途的

邓瑞恒Ryan

创业 媒体 商业模式

不知不觉,写了10000字了

小天同学

写作 个人感想 思辨

“IPO上市扒层皮”,以阿里巴巴为例看看公开了什么 | 如何读IPO招股书(3-b)

赵新龙

阿里巴巴 IPO 招股说明书

JCJC错别字检测JS接口新增CORS跨域支持

田春峰-JCJC错别字检测

媒体的经营 02 | 媒体/内容行业的主要变现方式

邓瑞恒Ryan

创业 投资 商业

回"疫"录(5):不见面,云拜年

小天同学

疫情 回忆录 现实纪录 纪实

人生一大误区:做到80%就不错了

池建强

个人成长 自我管理

OpenCV 在 Android 上的应用

fengzhizi715

android OpenCV 计算机视觉

判断链表是否有环

Kenn

算法 链表 双指针 Brent

“IPO上市扒层皮”,以阿里巴巴为例看看公开了什么 | 如何读IPO招股书(3-a)

赵新龙

阿里巴巴 IPO 招股说明书

4月17日 HarmonyOS 开发者日·上海站

4月17日 HarmonyOS 开发者日·上海站

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