欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于《Strimzi Kafka Bridge(桥接)实战》

  • 在strimzi技术体系中,桥接(bridge)是很要的功能,内容也很丰富,因此将桥接相关的内容从《strimzi实战》系列中独立出来,成立桥接相关的系列文章,便于分类和专项深入

本篇概览

  • 本文是《Strimzi Kafka Bridge(桥接)实战》系列的第一篇,按照惯例,先做好介绍和部署工作,以便后续深入学习
  • 什么是桥接?来看官方说明,如下图,最上面的Brokers就是核心的kafka服务,底部的Client是业务应用,分为消息生产者(Producers)和消费者(Consumers)两类,正中心蓝色背景的Strimzi Kafka Bridge就是今天的主角:strimzi桥接服务,从下图很容易看出它的作用:通过http接口来生产和消费kafka消息

  • 在整个strimzi技术体系中,bridge可谓举足轻重,如下图红框,官方为bridge准备了专门文档链接,这是其他扩展组件都没有的待遇

安装方式的选择

  • bridge支持在两种环境下安装:
  1. kubernetes环境:使用strimzi的kafka-operator安装
  2. 非kubernetes环境:使用bridge的安装包,解压后修改配置文件,然后用内置的shell文件启动即可
  • 整个《strimzi实战》系列都是在kubernetes环境中操作的,所以本篇只考虑上述第一种安装方式:kafka-operator
  • 整个部署过程非常简单,首先确认kubernetes和strimzi的operator都已经部署完成,kafka服务也已经部署好了(部署细节请参考《strimzi实战之二:部署和消息功能初体验》
  • 第二步:新增名为kafka-bridge.yaml的文件,内容如下
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
name: my-bridge
spec:
replicas: 1
bootstrapServers: my-cluster-kafka-bootstrap:9092
http:
port: 8080
  • 执行以下命令开始部署bridge,我这里kafka服务的namespace是aabbcc,请您改为自己实际的namespace
kubectl apply -f kafka-bridge.yaml -n aabbcc
  • 查看deployment、service、pod,发现均有新增,如下图

  • 从上图可见,bridge的service是ClusterIP类型,其值是10.96.0.222,于是迫不及待的试试bridge,执行以下命令,向bridge发出第一个请求,功能是获取所有topic
curl -X GET http://10.96.0.222:8080/topics
  • 成功收到bridge的响应,如下图,现有全部topic都返回了

增加一个service,使得可以从外部访问

  • bridge的服务是ClusterIP类型,外部无法访问,那就新增一个NodePort类型的服务吧,新建文件bridge-service-nodeport.yaml,内容如下,31331是我在宿主机上随便找了个未占用的端口,您随意
apiVersion: v1
kind: Service
metadata:
name: bridge-nodeport
spec:
type: NodePort
ports:
- port: 8080
nodePort: 31331
selector:
strimzi.io/cluster: my-bridge
strimzi.io/kind: KafkaBridge
strimzi.io/name: my-bridge-bridge
  • 执行以下命令让上述service生效,我这里kafka服务的namespace是aabbcc,请您改为自己实际的namespace
kubectl apply -f bridge-service-nodeport.yaml -n aabbcc
  • 从宿主机暴露端口后,就可以用客户端工具(例如apipost)远程访问了,如下图

安全问题(需要自己处理)

  • 从前面的架构图可以看出,业务服务与bridge之间是http协议,那么存在安全问题吗(毕竟是远程调用)?如果真的存在安全问题,strimzi都应对之策吗?
  • 安全问题确实存在,而且strimzi的应对之策也真够敷衍...不多说了,来围观吧

  • 调侃归调侃,但是真正使用bridge的时候,尤其是应用与bridge不在同一个内网环境时,一定要自己做好安全工作
  • 至此,Strimzi Kafka Bridge的介绍和部署已经完成,接下来的文章会有更多实战等着咱们,通过实际操作熟练掌握桥接特性

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

Strimzi Kafka Bridge(桥接)实战之一:简介和部署的更多相关文章

  1. [转帖]Kafka 原理和实战

    Kafka 原理和实战 https://segmentfault.com/a/1190000020120043 两个小时读完... 实在是看不完... 1.2k 次阅读  ·  读完需要 101 分钟 ...

  2. C++设计模式-Bridge桥接模式

    作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化. 将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式 ...

  3. 【转】libvirt kvm 虚拟机上网 – Bridge桥接

    libvirt kvm 虚拟机上网 – Bridge桥接 2013 年 7 月 3 日 / 东东东 / 暂无评论 目录 [hide] 1 Bridge桥接原理 2 在host机器配置桥接网络 2.1  ...

  4. Zookeeper+Kafka完全分布式实战部署

    Zookeeper+Kafka完全分布式实战部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实我之前部署过kafak和zookeeper的完全分布式,集群是可以正常使用没错, ...

  5. Bridge桥接模式(结构型模式)

    现有一个需求,一个游戏系统需要构建不同风格的房屋,暂不考虑其他设计模式,需要能实现在PC端.移动端....等等多个平台的构建.最简单的实现方式如下: /// <summary> /// 房 ...

  6. libvirt kvm 虚拟机上网 – Bridge桥接

    版权声明:本文由陈煜东原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/90 来源:腾云阁 https://www.qclou ...

  7. 前端开发工程师 - 06.Mini项目实战 - 项目简介

    第6章--Mini项目实战 项目简介 Mini项目简介-Ego社区开发 回顾: 页面制作 页面架构 JavaScript程序设计 DOM编程艺术 产品前端架构 实践课Mini项目--Ego: 主题:漫 ...

  8. 设计模式07: Bridge 桥接模式(结构型模式)

    Bridge 桥接模式(结构型模式) 抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象. 抽象B稳定,实现细节b变化 问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办? ...

  9. Bridge桥接模式(设计模式11)

    在没有使用桥接模式: 扩展新问题(类归属膨胀问题) 1增加性的电脑类型,要增加每个品牌下面的类 2如果要增加一个新的电脑品牌,要增加美中电脑类型的类 违背单一职责原则: · 一个类:联想笔记本,有两个 ...

  10. Kafka实战(七) - 优雅地部署 Kafka 集群

    既然是集群,必然有多个Kafka节点,只有单节点构成的Kafka伪集群只能用于日常测试,不可能满足线上生产需求. 真正的线上环境需要考量各种因素,结合自身的业务需求而制定.看一些考虑因素(以下顺序,可 ...

随机推荐

  1. 「AntV」X6开发实践:踩过的坑与解决方案

    长期更新版文档请移步语雀(「AntV」X6开发实践:踩过的坑与解决方案 (yuque.com)) ️ | 如何自定义拖拽源? 相信你们在开发中更多的需求是需要自定义拖拽源,毕竟自定义的功能扩展性高一些 ...

  2. 【tvm解析】PACKFUNC机制

    为实现多种语言支持,需要满足以下几点: 部署:编译结果可以从python/javascript/c++调用. Debug: 在python中定义一个函数,在编译函数中调用. 链接:编写驱动程序以调用设 ...

  3. sql server注入rce实践

    背景:在漏洞挖掘中,合理的利用sql注入,可以把注入转换成rce,使一个高危漏洞变成严重漏洞.在红蓝对抗中,利用注入rce,实现内网横向移动.笔者基于漏洞挖掘和红蓝对抗上遇到的sql server注入 ...

  4. [ARM 汇编]高级部分—系统控制协处理器—3.2.3 控制寄存器的读写操作

    在这一部分,我们将学习如何使用ARM汇编指令在系统控制协处理器(CP15)的控制寄存器上执行读写操作.我们将通过实例来讲解如何使用MCR(Move to Coprocessor Register)和M ...

  5. .Net微服务实战

    前言 第一篇.Net微服务实战是2020年开始的,整个系列拥有文章共11篇,抛开代码计算共有7W多字,每一篇都是我花了不少精力与心思进行打磨. 后续该系列有新增的文章会在此目录同步更新,也是主要方便自 ...

  6. SpringBoot对接阿里云OSS上传文件以及回调(有坑)

    前言 今天在对接阿里云OSS对象存储, 把这过程记录下来 链接 阿里云的内容很多,文档是真的难找又难懂 本文主要是用的PostObject API 加上 Callback参数 PostObject - ...

  7. 探秘高逼格艺术二维码的制作过程-AI绘画图生图

    在之前的文章<AI制作艺术二维码-文生图>中,我介绍了一种直接通过提示词生成高逼格二维码的方法,但是通过提示词我们无法很好的控制生成图片的样式,特别是有些同学想要将自己的Logo或者头像附 ...

  8. 4.4 x64dbg 绕过反调试保护机制

    在Windows平台下,应用程序为了保护自己不被调试器调试会通过各种方法限制进程调试自身,通常此类反调试技术会限制我们对其进行软件逆向与漏洞分析,下面是一些常见的反调试保护方法: IsDebugger ...

  9. Codeforces Round #883 (Div. 3) A-G

    比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...

  10. 关于DVWA靶场高难度命令执行的代码审计

    需要的环境:dvwa 使用的工具:PHP手册 high难度源代码: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target ...