写点什么

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

    评论

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

    B+树索引优点

    一个大红包

    3月日更

    超简单的网站暗黑模式,它真的超简单!

    HelloGitHub

    大前端

    《2020年IT行业项目管理调查报告》重磅发布

    禅道项目管理

    开源 项目管理 项目 调查报告 互联网行业薪资

    后台产品导航栏原型设计小教程

    lenka

    3月日更

    Python 的特殊变量 __name__

    HoneyMoose

    JVM - 类加载机制

    insight

    3月日更

    设计有意义的选择——再谈心流

    Justin

    心理学 28天写作 游戏设计

    mybatis实现分页的几种方法

    xiezhr

    mybatis 分页 mybatis分页

    容器 & 服务:Kubernetes扩容

    程序员架构进阶

    Docker 容器 kubernete 28天写作 3月日更

    Wireshark 数据包分析学习笔记Day15

    穿过生命散发芬芳

    Wireshark 数据包分析 3月日更

    手机

    ES_her0

    28天写作 3月日更

    企业大数据实战:Kyuubi 与 Spark ThriftServer 的全面对比分析

    网易数帆

    大数据 spark Kyuubi Thrift HiveServer2

    全球币系统开发案例(源码)

    系统开发咨询1357O98O718

    GO训练营第8周——分布式缓存与事务

    Glowry

    (28DW-S8-Day27) 销售流程重整

    mtfelix

    28天写作

    Python基础之:Python的数据结构

    程序那些事

    Python 程序那些事 python数据结构

    聊聊 Python 自动化脚本部署服务器全流程(详细)

    星安果

    Python 自动化 服务器 部署

    翻译:《实用的Python编程》06_04_More_generators

    codists

    Python

    GO训练营第6、7周——可用性设计

    Glowry

    Go训练营第5周——评论系统架构设计

    Glowry

    Nirvana NA公链 NAC公链的两面观

    区块链第一资讯

    经典排序算法分析

    roseduan

    算法 排序算法

    github 这样用,事半功倍

    hepingfly

    Java GitHub 搜索 使用技巧

    产品经理训练营 Week9 学习心得

    Mai

    产品经理训练营 Week9 作业

    Mai

    2021 OS 大赛来了,为中国操作系统发展按下加速键

    InfoQ写作社区官方

    热门活动

    华为云数据库GaussDB(for openGauss):初次见面,认识一下

    华为云开发者联盟

    数据库 分布式 华为云 GaussDB(for openGauss) 开源数据库

    算法攻关-最长公共子序列_1143

    小诚信驿站

    刘晓成 小诚信驿站 28天写作 算法攻关 最长公共子序列

    GO训练营第9周——网络编程

    Glowry

    @Component,@Service等注解是如何被解析的?

    Java小咖秀

    spring 面试 工作 注解 经验

    看完了进程同步与互斥机制,我终于彻底理解了 PV 操作

    飞天小牛肉

    Java 程序员 面试 操作系统

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