产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

    评论

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

    搭建网站/APP最全准备攻略

    前嗅大数据

    小程序 建站 APP发布

    Java中多线程安全问题实例分析

    叫练

    Java 多线程 什么是多线程 多线程与高并发

    住建部等六部门:广泛运用区块链等技术,建设智慧物业管理服务平台

    CECBC

    物业生活

    Java进阶文档:彻底搞懂JVM+Linux+MySQL+Netty+Tomcat+并发编程

    Java架构之路

    Java 程序员 架构 面试 编程语言

    记一次MapReduce的内存溢出

    AI乔治

    Java mapreduce 架构 内存溢出

    传统巨头抢占区块链场景高地 医疗、汽车、金融成为热门赛道

    CECBC

    区块链 金融

    一文为你详解Unique SQL原理和应用

    华为云开发者联盟

    数据库 sql unique

    面向全场景模块化设计 京东智联云的服务器部署有多灵活?

    京东科技开发者

    服务器 云主机

    EMAS远程日志 - 移动端问题排查利器

    移动研发平台EMAS

    阿里云 运维 日志 监控告警 应用

    浅谈JDK并发包下面的分治思想及分治思想在高并发场景的运用

    AI乔治

    Java 架构 jdk 分布式 多线程与高并发

    好久不见!这份Spring全家桶、Docker、Redis架构大礼包免费赠送

    Java架构之路

    Java 程序员 架构 面试 编程语言

    Shell脚本命令常用技巧

    MySQL从删库到跑路

    shell脚本编写

    AWS 助力贝壳VR看房走出国门,升级全球居住服务新体验

    亚马逊云科技 (Amazon Web Services)

    AWS

    信任的传递——为什么我们需要第三方授权?

    张凯峰

    证书 身份认证

    耗时一个月整理的97道大厂Java核心面试题出炉,精心整理,无偿分享

    Java架构之路

    Java 程序员 架构 面试 编程语言

    云图说 | 云上资源管控有神器!关于IAM,你想知道的都在这里!

    华为云开发者联盟

    服务 权限管理 iam

    一口气说出四种幂等性解决方案,面试官露出了姨母笑~

    不才陈某

    Java 分布式 接口

    如何在数智化时代少走弯路? 这里有100个案例可以借鉴

    京东科技开发者

    DevOps 云原生

    图文回顾丨北京「解构云原生:企业数字化转型新支点」沙龙

    Rancher

    k8s rancher

    附PPT丨AI和云原生时代的数据库进化之路

    dbaplus社群

    数据库 云原生

    建信金科大咖访谈:金融衍生品定价与建行实践

    金科优源汇

    金融科技 金融创新

    80%Java开发者面试都问的SpringBoot你竟不会?看完这些笔记足以

    Java架构之路

    Java 程序员 架构 面试 编程语言

    我和阿里P7差的不是薪资?而是Redis+微服务+Nginx+MySQL+Tomcat

    Java架构之路

    Java 程序员 架构 面试 编程语言

    第13周作业

    饭桶

    面试被问高并发一脸懵?那是你没看过我整理得高并发回答模板

    小Q

    Java 学习 面试 高并发 性能调优

    太赞了!滴滴开源了一套分布式ID的生成系统...

    Java架构师迁哥

    即构实时音视频多中心调度设计

    ZEGO即构

    第十三周学习总结

    饭桶

    云南区块链电子发票全面推广啦!

    CECBC

    区块链 纳税人

    Elasticsearch 新机型发布,性能提升30%

    腾讯云大数据

    大数据 elasticsearch Elastic Stack

    VACUUM无法从表中删除死元组的三个原因

    PostgreSQLChina

    数据库 postgresql

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