写点什么

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

    评论

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

    三面阿里,有惊无险成功拿到offer定级P7,只能说是真的难

    Java 编程 java架构

    性能加速最高可达28倍!这个NLP工具包不容错过

    百度开发者中心

    预训练模型 NLP 大模型

    DataOps(数据运维)指南 - 数据管理的新时代

    码语者

    DataOps

    Alibaba最新神作!耗时182天肝出来的1015页分布式全栈手册太香了

    编程 程序员 IT 计算机 java

    2021Flexera云报告:企业积极拥抱多云,但云上成本仍然居高不下

    行云管家

    区块链 云计算 企业上云 上云

    遭 GitHub 连夜封杀下架?被泄露的阿里内部 Java 面试手册到底有多强?

    收到请回复

    Java 面试 阿里 大厂Offer

    量化模拟线上流量实践

    FunTester

    性能测试 接口测试 测试框架 FunTester 线上流量

    Android技术分享| 【自习室】自定义View代替通知动画(1)

    anyRTC开发者

    android 音视频 WebRTC 在线教育 移动开发

    分布式缓存技术

    黄敏

    云栖大会|盛宴之下,共赴一场视频云的进化论

    阿里云CloudImagine

    阿里云 音视频 WebRTC 视频云 云栖大会

    阿里技术官耗时半年总结出“满分”架构笔记,拿捏分布式到微服务

    进击的王小二

    Java 架构 分布式 微服务

    架构师一定要看!微服务设计的四个原则

    Java 程序员 架构 面试 后端

    Elasticsearch 快照相关(qbit)

    qbit

    主数据与主数据管理(数据治理)

    KoLee

    数据治理 数字化 主数据管理 主数据

    百亿级系统架构首公开!阿里这份300多页的设计实录你还没有吗?

    Java 程序员 架构 面试 后端

    亿级流量架构演进实战 | 从零构建亿级流量API网关 01

    松然聊技术

    亿级架构

    太绝了吧! 终于有人能把TCP/IP 协议讲的明明白白了

    程序员 架构 面试 后端 java

    元宇宙NFT区块链游戏系统开发

    面试官提问:如何通过sql方式将数据库表行转列?

    Java 数据库 sql 面试 后端

    亿级流量架构演进实战 | 从零构建亿级流量API网关 02

    松然聊技术

    亿级架构

    优酷鸿蒙开发实践 | 鸿蒙卡片开发

    阿里巴巴终端技术

    ios android HarmonyOS 优酷 移动端

    解读鸿蒙轻内核的监控器:异常钩子函数

    华为云开发者联盟

    鸿蒙 钩子函数 任务栈 OpenHarmony 异常钩子函数

    涨薪60%,从美团干到阿里p7,这份Github上的面试笔记把所有Java知识都写出来了

    Java 程序员 架构 面试 后端

    Python代码阅读(第37篇):获取两个列表中相同的元素

    Felix

    Python 编程 Code Programing 阅读代码

    211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer

    Java 学习 程序员 架构 大厂面试

    数据上报那些事

    神策技术社区

    数据 神策数据

    Python 的 sum():Pythonic 的求和方法

    华为云开发者联盟

    Python 列表 元组 Pythonic 求和

    Apache ShardingSphere 在京东白条场景的落地之旅

    SphereEx

    开源 数据架构 架构设计 ShardingSphere SphereEx

    第 17 章 -《Linux 一学就会》- Linux计划任务与日志的管理

    学神来啦

    Linux 运维 linux学习 linux云计算 linux基础

    接连三次霸榜GitHub,这个国产GitHub项目是真的强...

    百度开发者中心

    最佳实践 方法论 百度飞桨 开源技术

    容器化 | ClickHouse Operator 原理解析

    RadonDB

    数据库 Kubernetes Clickhouse

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