写点什么

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
    • 3.0x
    • 2.5x
    • 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:002747

    评论

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

    如何做好一场技术分享

    Hockor

    团队管理 个人成长

    解密数据仓库LLVM技术神奇之处

    华为云开发者联盟

    数据仓库 LLVM 算子 GaussDB(DWS) 底层虚拟机

    docker、k8s 面试总结

    yuexin_tech

    Docker k8s

    紫光展锐解除楚庆CEO职务,内部员工爆料那些不为人知的内情!

    IC男奋斗史

    芯片行业思考

    聊聊 Pulsar: Pulsar 分布式集群搭建

    老周聊架构

    云原生 Apache Pulsar 3月月更

    Go语言实战之数组的内部实现和基础功能

    山河已无恙

    Go 语言 3月月更

    从理想照进现实,浅谈“算力网络”

    鲸品堂

    东数西算

    今儿直白的用盖房子为例,给你讲讲Java建造者模式

    华为云开发者联盟

    Java 设计模式 对象 建造者模式 对象构建模式

    [银行面试系列]1 进入银行之前必须了解的20个问题

    暖蓝笔记

    3月程序媛福利 3月月更

    从用户输入URL到页面展示,这中间发生了什么?

    Tristan

    前端 浏览器

    如何打造良好的分享氛围

    Hockor

    团队管理 技术分享

    初识工业互联网

    劼哥stone

    工业互联网

    期待!Fedora 36 发布日期和新功能

    Ethereal

    什么是元宇宙?为何要关注它?——解码元宇宙

    CECBC

    比特币突破4.4万美元!美欧制裁或推动俄罗斯资金转向加密货币

    CECBC

    开发电脑用 Windows 还是 Mac

    HoneyMoose

    Mybatis的where标签,竟然还有这么多不知道的!

    CRMEB

    读一篇博客,写一段代码,每天写写Python自然就会了,每日Python第1天

    梦想橡皮擦

    Python 3月月更

    当TIME_WAIT状态的TCP正常挥手,收到SYN后…

    华为云开发者联盟

    TCP syn 报文 TIME_WAIT RST报文

    面试官:GRE 和 IPsec 隧道有什么区别?

    Ethereal

    presto实战读书笔记

    聚变

    selenium的实现原理

    红毛丹

    自动化测试 自动化测试框架 selenium 3月程序媛福利 3月月更

    详解用OpenCV绘制各类几何图形

    华为云开发者联盟

    OpenCV 图像处理 图像 几何图形

    将本地代码同步到gitee和github中去

    布衣骇客

    Git Commit #Github

    遵循Promises/A+规范,深入分析Promise实现细节(基础篇)

    战场小包

    JavaScript 前端 Promise 3月月更

    NFT商城游戏系统开发技术

    薇電13242772558

    NFT

    性能测试中Disruptor框架shutdown失效的问题分享

    FunTester

    Disruptor 性能测试 接口测试 高性能队列 FunTester

    Linux小技巧:如何在 Vim 中显示行号?

    Ethereal

    千万级学生管理系统的考试试卷存储方案

    晨亮

    「架构实战营」

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