免费注册!6月19-20日,「亚马逊云科技中国峰会」重磅来袭! 了解详情
写点什么

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

    评论

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

    Pycharm 搭建 Django 项目

    千锋IT教育

    java培训程序员就业情况如何

    小谷哥

    前端培训与自学有什么区别吗

    小谷哥

    Java程序员的BAT面试之路:数据库事物特性及隔离级别,记得看看

    钟奕礼

    Java 程序员 java面试 java编程

    链表剖析及自己手撸"单链表"实现基本操作(初始化、增、删、改等)

    C++后台开发

    数据结构 链表 linux开发 Linux服务器开发 C++开发

    在实践中学习类型定义、类型覆盖、CSS Modules

    小鑫同学

    CSS typescript 前端 11月月更

    超级自动化行业前景广阔——首个数字化转型国家标准发布:价值体系优化、创新和重构是数字化转型根本任务

    九科Ninetech

    Kotlin函数声明与默认参数(Default argument)

    子不语Any

    android kotlin 11月月更

    Spring 依赖注入有哪几种方式

    千锋IT教育

    易观分析:2022年Q3中国跨境进口零售电商市场规模为1124.8亿元

    易观分析

    报告 跨境电商

    大数据培训应该怎么学习

    小谷哥

    大数据培训应该怎么学习

    小谷哥

    优先级反转那些事儿

    字节跳动终端技术

    ios QoS 移动开发 优先级反转 turnstile

    服务全球开发者!灵雀云与Ubuntu推出一体化云原生解决方案

    York

    容器 云原生 操作系统 开源生态

    牛啊!长这么大还是头一次见24W字的SpringBoot从入门到实战文档

    程序知音

    Java spring springboot java架构 后端技术

    2022年10月中国网约车领域月度观察

    易观分析

    报告 网约车

    易观千帆 | 2022年10月银行APP月活跃用户规模盘点

    易观分析

    报告 手机银行

    Nacos 中的配置文件如何实现加密传输

    江南一点雨

    nacos SpringCloud

    Baklib知识分享|企业产品需求文档的特点

    Baklib

    PRD 产品需求文档

    【web 开发基础】PHP 中的递归函数 (38)

    迷彩

    递归 11月月更 PHP递归 递归函数

    Kotlin变量和属性

    子不语Any

    kotlin andiod 11月月更

    开发者问第五期

    HarmonyOS SDK

    HMS Core

    电容的“通交流、阻直流”,一次讲清楚

    元器件秋姐

    元器件采购 元器件电商 电容 电容特性 电容知识

    人人都可以给想象插上翅膀(内含AI绘画教程)

    鼎道智联

    openai AI绘画 鼎道智联

    web前端培训学习后找工作难吗?

    小谷哥

    APISIX Ingress 是如何支持上千个 Pod 副本的应用

    API7.ai 技术团队

    Kubernetes 容器 api 网关 APISIX

    记一次HBASE的故障分析和排查过程

    鲸品堂

    大数据 11月月更

    Prometheus 监测 RocketMQ 最佳实践

    阿里巴巴云原生

    阿里云 RocketMQ 云原生 Prometheus

    Kotlin函数和扩展(extension)

    子不语Any

    kotlin Andrdoid 11月月更

    完全解析大数据中MapReduce的运行流程

    好程序员IT教育

    大数据 MapReduce Service

    龙蜥技术委员会主席杨勇:下一代操作系统展望

    云布道师

    开源 操作系统

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