QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:002599

    评论

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

    TARS 染色日志|收集记录特定日志

    TARS基金会

    微服务 运维 日志 日志分析 TARS

    HTML(五)——建立表格

    程序员的时光

    程序员 大前端 七日更 28天写作

    阿里用5大核心技术+10大高级框架+200个经典案例全面解答了并发网络编程

    996小迁

    编程 架构 面试 笔记 亿级流量

    讨论:Service层的接口是不是多此一举?

    xcbeyond

    Java 接口管理 28天写作

    区块链高水平专业人才稀缺成发展掣肘

    CECBC

    区块链人才

    重学JS | 玩转File API

    梁龙先森

    面试 大前端 编程语言 28天写作

    干货|更通用的P2P网络协议栈——Libp2p

    QTech

    IPFS Libp2p

    联发科推出天玑1200,新一年的头道“5G甜点”究竟滋味如何?

    脑极体

    35+的测试人都去哪儿了?所谓“青春饭”真的只是在贩卖焦虑吗?

    程序员阿沐

    编程 程序员 软件测试 教程 测试工程师

    nodejs中使用worker_threads来创建新的线程

    程序那些事

    多线程 nodejs 并发控制 程序那些事 子线程

    听了微信创始人张小龙的演讲,更加坚定Filecoin的光辉未来

    时空云

    分布式存储 IPFS Filecoin

    2020出行之变(一):自动驾驶的“跃渊”时刻

    脑极体

    《认识产品经理》课后总结

    DB

    产品经理训练营

    1121212

    熙羽1

    Nginx实现在局域网内真正的ip_hash负载均衡​

    会飞的猪

    认识产品经理(第一章上)

    让我思考一会儿

    数字货币交易所APP开发|数字货币交易所软件系统开发

    系统开发

    数字人民币带来更好支付体验 没有网络时也能使用

    CECBC

    数字人民币

    中金数据集团与腾讯云合力拓展信息安全、区块链业务领域

    CECBC

    区块链产业

    Seata RPC 模块的重构之路

    阿里巴巴云原生

    阿里云 开源 云原生 RPC seata

    Soul网关源码阅读(十)自定义简单插件编写

    Java 源码阅读 网关

    云原生的理解

    JiangX

    容器 云原生 数字化转型 数字化 28天写作

    DBA 的效率加速器——CloudQuery v1.3.2 上线!

    BinTools图尔兹

    数据库 运维 开发日志 dba 数据库管理工具

    亲历者说 | 完整记录一年多考拉海购的云原生之路

    阿里巴巴云原生

    阿里云 容器 微服务 云原生 dubbo

    Spring Boot 中集成Redis

    武哥聊编程

    Java redis springboot SpringBoot 2 28天写作

    虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录

    刘悦的技术博客

    Python 面试

    大数据知识专栏 - MapReduce 的 Reduce端Join

    小马哥

    大数据 hadoop mapreduce 七日更

    Redis 学习笔记 09:数据库

    架构精进之路

    redis 七日更 28天写作

    python+requests接口测试基础

    测试人生路

    软件测试

    区块链交易所软件开发|区块链交易所APP系统开发

    系统开发

    关于Dapper实现读写分离的个人思考

    yi念之间

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