apache kafka_使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务...

apache kafka

微服务架构不是免费的午餐 ! 微服务需要解耦,灵活,操作透明,数据感知和弹性。 过去几年的大多数材料仅讨论具有紧密耦合且不可扩展的技术(如REST / HTTP)的点对点体系结构。 这篇博客文章介绍了Apache Kafka,Kubernetes,Envoy,Linkerd和Istio等尖端技术,以实现云原生服务网格来解决这些挑战,并将微服务提升到规模,速度和效率的新水平

以下是构建可伸缩,可靠,健壮和可观察的微服务体系结构的关键要求:

在更详细地介绍之前,让我们先看一下关键要点:

  • Apache Kafka解耦服务 ,包括事件流和 请求-响应
  • Kubernetes Kafka生态系统提供了云原生基础架构
  • Service Mesh在生态系统/组织范围内帮助提高 安全性和可观察性
  • Envoy和 Istio 位于 Kafka上方的一层,并且与Kafka的目标正交

以下各节涵盖了有关此问题的更多想法。 博客文章的末尾包含幻灯片和录像带,以获取更多详细说明。

微服务,服务网格和Apache Kafka

Apache Kafka成为事实上的微服务架构标准 。 它远远超出了可靠且可扩展的大容量消息传递。 分布式存储允许独立的微服务之间实现高可用性和真正的解耦。 此外,您可以利用Kafka Connect进行集成,并利用Kafka Streams API在自治团队中构建轻量级流处理微服务。

服务网格对体系结构进行了补充 。 它描述了组成此类应用程序的微服务网络及其之间的交互。 它的要求可以包括发现,负载平衡,故障恢复,指标和监视。 服务网格通常还具有更复杂的操作要求,例如A / B测试,金丝雀推出,速率限制,访问控制和端到端身份验证。

我探讨了分布式微服务通信的问题以及Apache Kafka和Service Mesh解决方案如何解决该问题。 这篇博客文章介绍了一些将两种方法结合起来以构建具有去耦和安全微服务的可靠且可扩展的微服务体系结构的方法。

讨论和体系结构包括各种开源技术,例如Apache Kafka,Kafka Connect,Kubernetes,HAProxy,Envoy,LinkerD和Istio。

在此有关“微服务,Apache Kafka和域驱动设计(DDD) ”的相关博文中,了解有关使用Kafka解耦微服务的更多信息。

使用Kubernetes的Cloud-Native Kafka

云原生基础架构具有可扩展性,灵活性,敏捷性,弹性和自动化。 Kubernetes获得了出厂标准。 无状态服务的部署非常简单明了。 但是,部署有状态的分布式应用程序(例如Apache Kafka)要困难得多。 需要大量的人工操作。 Kubernetes不会自动解决Kafka特定的挑战,例如滚动升级,安全性配置或代理之间的数据平衡。 在K8s自定义资源定义(CRD)中实现的Kafka运算符可以在这里提供帮助!

Kubernetes运营商模式旨在捕捉正在管理一项服务或一组服务的人类运营商的主要目标。 负责特定应用程序和服务的人工操作员对系统应该如何运行,如何部署以及在出现问题时如何做出React有深入的了解。

在Kubernetes上运行工作负载的人们通常喜欢使用自动化来处理可重复的任务。 Operator模式捕获了如何编写代码以自动执行Kubernetes本身提供的功能以外的任务

存在用于Kubernetes的Kafka运营商的不同实现方式: 融合运营商 , IBM / Red Hat的Strimzi , Banzai Cloud 。 在这里,我不会详细介绍K8s Kafka操作员的特性和优势。 我已经在另一篇博客文章中对此进行了详细说明(下面的视频还将讨论该主题):

使用基于Kubernetes的技术(例如Envoy,Linkerd或Istio)的服务网格

服务网格是一种微服务模式,用于将可见性,可靠性和安全性原语用于服务到服务的通信移至基础结构层,而不是应用程序层。

可以在此处找到关于设计模式“服务网格”的详细说明,包括下图,该图显示了控制平面与具有代理人小车的微服务之间的关系:

您可以从Envoy或Linkerd之类的框架的创建者那里找到有关服务网格概念及其实现的更多精彩内容。 请查看这两个链接,或者只是使用Google来获得有关竞争替代品及其权衡取舍的更多信息。

Apache Kafka和Service Mesh的(潜在)功能

Apache Kafka这样的事件流平台和Kubernetes之上的服务网格是云原生的,正交的和互补的 。 他们共同解决了构建可扩展,可靠,健壮和可观察的微服务体系结构的关键要求:

如今,公司已经将Kafka与诸如Envoy,Linkerd或Istio之类的服务网格实现一起使用 。 您可以轻松地将它们组合在一起以增加安全性,实施速率限制或实施其他相关用例。 Banzai Cloud发布了最有趣的架构之一:他们使用Istio通过使用Envoy的代理为Kafka Brokers和ZooKeeper添加安全性 。

但是,与此同时,支持变得更好: Envoy中对Kafka支持的拉取请求于2019年5月合并。 这意味着您现在在Envoy中具有本机Kafka协议支持 。 关于其挑战和实现Kafka协议过滤器的潜在功能的非常有趣的讨论也值得一读。

借助本机Kafka协议支持,您可以执行除L4 TCP过滤之外的更多有趣的事情。 以下是一些想法(部分来自于Github讨论),关于在Service Mesh中使用L7 Kafka协议支持可以做什么:

  • 点击功能以转储到Kafka流
  • 协议解析以实现可观察性(使用HTTP RPC进行统计,日志记录和跟踪链接)
  • 对Kafka流的影子请求,而不是HTTP / gRPC影子
  • 与Kafka Connect及其连接器的整个生态系统集成

  • 动态路由
  • L4连接和L7消息级别的速率限制
  • 过滤,添加压缩,…
  • 自动主题名称转换(例如用于金丝雀发布或蓝色/绿色部署)

  • 请求日志和统计信息
  • 数据沿袭/审核日志
  • 通过获取请求日志并用用户信息丰富它们来审核日志。
  • 客户特定指标(每个客户ID /每个客户组的字节率,客户库的版本,整个数据中心的客户滞后监控)

  • SSL终止
  • 相互TLS(mTLS)
  • 授权书

  • 序列化格式(JSON,Avro,Protobuf等)
  • 讯息模式
  • 标头,属性等

太棒了,不是吗?

微服务,Kafka和服务网格–幻灯片和视频录制

让我们看一下我的幻灯片和视频记录,以更详细地了解使用Apache Kafka,其生态系统,Kubernetes和Service Mesh技术构建Service Mesh的需求,挑战和机遇…

这是幻灯片平台:

来自KaiWähner的 Apache Kafka,Kubernetes,Envoy,Istio和Linkerd的Service Mesh

来自KaiWähner的 Apache Kafka,Kubernetes,Envoy,Istio和Linkerd的Service Mesh

录像带您浏览幻灯片:

有任何想法或反馈吗? 请通过评论或推文让我知道,或者让我们在LinkedIn上建立联系。

<>

翻译自: https://www.javacodegeeks.com/2019/09/service-mesh-cloud-native-microservices-apache-kafka-kubernetes-envoy.html

apache kafka

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 箭头符号怎么打_老司机怎么测量三极管管型、管脚和性能?三极管测量此中有深意...

众所周知&#xff0c;三极管具有基极、集电极、发射极三极&#xff0c;另外还有NPN型还有PNP型&#xff0c;那么如何用最快的方法进行三极管测量来确认三极管的管脚和管型。另外&#xff0c;三极管的工作状态是否可以通过三极管测量进行判断&#xff1f;接下来本网整理了老司机…

java强制类型转换

【0】README 0.1&#xff09;本文转自 core java volume 1 &#xff0c;在强制类型转换部分&#xff0c;它提到了 使用 instanceof 以保证 类型成功转换&#xff08;而不是抛出异常&#xff09;&#xff0c;很有看点&#xff1b; 【1】强制类型转换的相关知识点&#xff1a; …

MacBook快捷键

文章目录一、选择文本二、移动光标三、打开特定的目录四、录屏/截屏五、选择输入法六、视窗七、窗口缩放八、检索/搜索九、目录路径十、页面滚动十一、删除/清空回收站十二、显示隐藏文件十三、程序坞十四、关机十五、清理缓存十六、窗口最小化十七、分屏十八、Finder/访达窗口…

php cdi_通过MicroProfile上下文传播增强了CDI上下文和隔板

php cdi当将CDI与异步执行方法&#xff08;例如ManagedExecutorService &#xff0c;传统上不可能访问在原始线程中处于活动状态的所有CDI范围。 MicroProfile Context Propagation可以定义线程执行上下文并将其传递到完成阶段&#xff0c;尽管我们的代码是异步执行的&#xff…

Final Cut Pro X 快捷键

文章目录一、片段编辑二、导出/导入媒体三、选取/选择片段四、修剪&#xff08;一&#xff09;修剪模式的三种修剪效果五、其它编辑快捷键六、光标功能状态切换七、移动播放头八、播放九、插入媒体素材到时间线十、更改片段在时间线的外观十一、为片段添加/删除效果十二、为片段…

求三个数的最大最小值

【0】README 0.1&#xff09; google 搜索出来的答案&#xff0c;真的很让我伤心&#xff0c; 全是大粪啊&#xff0c; 你们进行了多少次的比较&#xff0c; 应该是6次吧&#xff0c;我也是醉完了&#xff0c; 写个非大粪的version &#xff08;我这里的比较只有两次&#xff…

斐讯k1潘多拉专版固件_斐讯K1刷专版潘多拉固件以及教程(使用感受)

本帖最后由 Super131 于 2016-3-5 10:09 编辑QQ图片20160225010211.png (24.22 KB, 下载次数: 2)2016-2-25 01:02 上传K1的专版潘多固件最有看点一个地方我觉得是外观&#xff0c;比起之前显得让人看着舒服多了QQ图片20160225010400.png (41.37 KB, 下载次数: 0)2016-2-25 01:0…

魔术方法 类 序列化_Java序列化魔术方法及其示例使用

魔术方法 类 序列化在上一篇文章中&#xff0c; 您需要了解有关Java序列化的所有知识 &#xff0c;我们讨论了如何通过实现Java序列化来启用类的可序列化性。 Serializable接口。 如果我们的类未实现Serializable接口&#xff0c;或者该类具有对非Serializable类的引用&#x…

算法证明_CFR+算法证明过程

在介绍CFR算法之前&#xff0c;我们首先介绍一下基础概念。在CFR算法中&#xff0c;counterfactual utility被定义为以下形式&#xff1a;然后在regret的基础上&#xff0c;CFR算法定义了一个regretlike value&#xff0c;注意在这里CFR算法的regret为一个累加值&#xff0c;而…

java继承中的 equals + hashCode+toString

【0】README 0.1&#xff09;本文转自 core java volume 1&#xff0c; 旨在理清 equals hashCode方法&#xff1b; 0.2&#xff09; 特别说明&#xff1a; 在java中&#xff0c; 只有基本类型不是对象&#xff0c; 例如&#xff0c;数值&#xff0c; 字符和布尔类型的值都不…

纹理和基元_自定义基元和DTO的(反)序列化和验证

纹理和基元最近&#xff0c;我们为您提供了新的HTTP框架HttpMate。 在介绍性文章中 &#xff0c;我们将请求和响应映射到域对象称为“最复杂的技术细节”&#xff0c;以及如何通过另一个伴侣MapMate帮助我们。 实际上&#xff0c;当将请求属性映射到您的域对象时&#xff0c;M…

vim 常用命令

文章目录普通命令模式下技巧汇总切换到插入模式切换到可视模式切换至底行命令模式复制内容复制命令的记忆技巧粘贴/恢复修改/改写删除/剪切字符大小写切换选择文本游标移动剪切文本/移动文本滚屏/翻页撤回查看文档状态查找/搜索字符串查看历史命令查看历史搜索记录多窗口操作保…

常见花材的固定的方法有哪些_旋流器常见的故障及处理方法有哪些?

旋流器除了用在磨矿循环中的分级作业外&#xff0c;还可以用于脱泥、脱水以及脱除浮选药剂等。此外&#xff0c;还可以用做重悬浮液选矿&#xff0c;其分选粒度可达0.1毫米左右。旋流器有许多优点&#xff0c;构造简单&#xff0c;没有运动部件&#xff0c;单位容积的处理能力大…

二叉堆(优先队列)

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c;但源代码均为原创&#xff1b;旨在理清二叉堆&#xff08;优先队列&#xff09; 堆的其他操作及其应用&#xff0c; 以便让朋友些知道为什么要学习优先队列&#xff1b; 【1】二叉堆 1.0&#xff09;…

java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化

java自定义外部接口在上一篇文章“用示例介绍的有关Java序列化的一切”中 &#xff0c;我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口&#xff0c;还说明了如何使用writeObject和readObject方法自定义序列化过程。 Java序列化过程的缺点 但是这些自定义…

python训练营朋友圈留言_用Python发一个高逼格的朋友圈【附代码】

今天二胖要给大家介绍一个Python库&#xff1a;PIL(Python Image Library)下面我们用一个实际的例子看看50行python代码可以做什么神奇的事情这是二胖发的一个朋友圈切图前是一张图切图后就是九张图啦成功霸屏除了可以处理规整的正方形图片还可以处理非规则的图片比如下面这张宽…

vim 编辑器的快捷键

文章目录命令终端界面滚屏命令终端页签切换缓存区切换/文件切换分割窗口/打开新窗口切换窗口移动/旋转/移出窗口关闭窗口调整窗口大小底行命令模式下的编辑快捷键vim 很多指令或者快捷键是大小写敏感。命令终端界面滚屏 快捷键说明Fn ←向上滚屏到开始处Fn →向下滚屏到末尾…

关于二叉堆(优先队列)的其他操作及其应用

【0】README 0.1&#xff09;本文总结于 数据结构与算法分析&#xff1b;源代码均为原创&#xff0c; 旨在了解到我们学习了优先队列后&#xff0c;还能干些什么东西出来&#xff0c; 增加学习的interest&#xff1b; 0.2&#xff09;以下列出了 关于二叉堆&#xff08;优先队…

gradle junit5_JUnit 5和Selenium –使用Gradle,JUnit 5和Jupiter Selenium设置项目

gradle junit5Selenium是一组支持浏览器自动化的工具和库&#xff0c;主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver&#xff0c;它提供客户端库&#xff0c;JSON有线协议&#xff08;与浏览器驱动程序进行通信的协议&#xff09;和浏览器驱动程序。 Sele…