写点什么

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

    评论

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

    Android网络请求心路历程,面试安卓工程师会问到那些问题

    android 程序员 移动开发

    Android自动化页面测速在美团的实践,百度、阿里、滴滴、新浪的面试心经总结

    android 程序员 移动开发

    Android菜鸟进字节跳动,居然是看了这个,Android技术篇

    android 程序员 移动开发

    Android超实用最全面试大纲(四),2021大厂Android知识点总结

    android 程序员 移动开发

    微信朋友圈的高性能复杂度分析

    stars

    架构训练营

    重磅!四大行正在大规模内测数字货币App 可凭手机号完成转账

    CECBC

    Android系统启动流程(一)解析init进程启动过程,安卓移动开发基础案例教程

    android 程序员 移动开发

    Android自定义view之模仿登录界面文本输入框(华为云APP)

    android 程序员 移动开发

    Android菜鸟进字节跳动,居然是看了这个(1),kotlin单例应用

    android 程序员 移动开发

    Android第三方库收藏汇总,移动应用开发框架

    android 程序员 移动开发

    Android篇:2019初中级Android开发社招面试解答(上,作为Android开发者

    android 程序员 移动开发

    Android系统架构与系统源码目录,灵魂一问-如何彻底防止APK反编译

    android 程序员 移动开发

    Android组件化开发的意义何在?,androidui开发框架

    android 程序员 移动开发

    Android自定义View之游戏摇杆键盘实现(一),android开发计算器界面

    android 程序员 移动开发

    Android研发大厂面试记:阿里,字节,腾讯android面试题目

    android 程序员 移动开发

    Android程序员现状:没有架构师的命,却得了架构师的病

    android 程序员 移动开发

    Android篇:2019初中级Android开发社招面试解答(中,跨平台app开发框架排名

    android 程序员 移动开发

    Android网络请求心路历程(1),2021Android开发现状分析

    android 程序员 移动开发

    android自定义View——仿九宫格解锁,kotlin缺点

    android 程序员 移动开发

    Android自定义控件(神级)+MediaRecoder录音,android开发基础应用

    android 程序员 移动开发

    Android知识笔记:记录 2 个 “容易误解(1),【干货】

    android 程序员 移动开发

    Android知识笔记:记录 2 个 “容易误解,网易的朋友给我这份339页的Android面经

    android 程序员 移动开发

    Android程序员的Java后台学习建议,2021最新Android中级面试题目汇总解答

    android 程序员 移动开发

    Android网络优化攻略,简单了解一下?,图文详解

    android 程序员 移动开发

    Android自定义View播放Gif动画,ffmpeg音视频开发实战6下载

    android 程序员 移动开发

    【Flutter 专题】21 易忽略的【小而巧】的技术点汇总 (二)

    阿策小和尚

    Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

    Android自定义View之游戏摇杆键盘实现(一)(1),全网独家首发

    android 程序员 移动开发

    Android转场动画一说,android事件分发面试

    android 程序员 移动开发

    【LeetCode】删除链表中的节点Java题解

    Albert

    算法 LeetCode 11月日更

    Android老司机被打脸!Dialog 对应的 Context 必须是 Activity吗?

    android 程序员 移动开发

    Android自定义控件 _ 高可扩展单选按钮(再也不和产品经理吵架了)

    android 程序员 移动开发

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