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

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

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

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

  • Apache Kafka解耦服务 ,包括事件流和 请求-响应
  • Kubernetes Kafka生态系统提供云原生基础架构
  • Service Mesh在生态系统/组织范围内帮助提高 安全性和可观察性
  • 特使和 伊斯托(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运营商模式旨在捕捉正在管理一项服务或一组服务的人类运营商的主要目标。 负责特定应用程序和服务的人工操作员对系统应该如何运行,如何部署以及在出现问题时如何做出反应具有深入的了解。

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

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

使用Envoy,Linkerd或Istio等基于Kubernetes的技术进行服务网格

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

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

您可以从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

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

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

相关文章

python缩写词_如果连这10个Python缩写都不知道,那你一定是Python新手!

在本文中&#xff0c;我将告诉大家一些容易忽视的Python编程原理、规则和一些有趣的事实。 简介 对于许多开始学习编程的人来说&#xff0c;Python已经成为他们的首选。Python有非常直观的语法和支持动态类型的灵活性。此外&#xff0c;它是一种解释语言&#xff0c;这使得使用…

单片机控制三相异步电动机正反转c语言程序,请用PLC控制一台普通三相异步电动机的正反转控制,设计其控制程序梯形图及主电路...

PLC的编程方法及步骤。总的步骤主要有三步&#xff1a;一、根据电路图选择电器元件及PLC的型号&#xff0c;其中包括确定PLC的输入输出点位、确定PLC的输出类型&#xff0c;也需考虑某些功能是否能扩展、价格等&#xff1b;二、设计好PLC控制的外围元器件的原理图。这里面包括有…

0x80070003系统找不到指定路径_Win7系统中gpedit.msc找不到应该如何解决?

Win7x系统gpedit.msc找不到怎么办&#xff1f;最近有用户反映&#xff0c;电脑当中的gpedit.msc找不到了&#xff0c;gpedit.msc就是我们的策略组&#xff0c;对于我们的电脑来说是非常重要的&#xff0c;那么gpedit.msc找不到应该如何解决呢&#xff1f;接下来就为大家分享win…

c语言回文数递归,c语言问题~~~回文数!!急,拜托高人指点!!

满意答案wyhjjq12014.01.27采纳率&#xff1a;53% 等级&#xff1a;12已帮助&#xff1a;10413人添加上满足你补充要求的C程序:#includeint palindrome(unsigned int x){unsigned int y;unsigned int s0;yx;while(y>0){ss*10y%10;yy/10;}if(sx)return 1;elsereturn 0;}vo…

jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)

jboss架构&#xff08;文章来宾与北美红帽公司高级中间件顾问约翰赫洛克 &#xff08; John Hurlocker&#xff09;合着&#xff09; 在这周的技巧中&#xff0c;我们将放慢速度&#xff0c;并仔细研究可能的Red Hat JBoss BRMS部署体系结构。 在谈论部署体系结构时&#xf…

snvr client怎么使用_TCGA官方工具gdc-client.exe的安装及使用

在TCGA数据下载过程中&#xff0c;会提示使用Download a manifest for use with theGDC Data Transfer Tool​gdc.cancer.gov实现过程&#xff1a;1.下载gdc-client的压缩文件&#xff1b;gdc-client_v1.4.0_Windows_x64.zip2.将上述压缩文件copy到一个英文文件名称的文件夹内&…

c语言 源文件未编译,源文件未编译什么意思

语音内容&#xff1a;大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。源文件未编译&#xff0c;即在运行前要对源代码进行编译链接&#xff0c;然后才能运行。编译利用编译程序从源语言编写的源程序产生目标程序的过程&#xff0c;…

JDK 14中的常规,安全和确定性外部内存访问

在“ JDK 14 Rampdown&#xff1a;Build 27 ”一文中&#xff0c;我总结了JDK 14 Early Access Build &#xff03;27中新增的许多针对JDK 14的功能。 已经存在另一种JDK 14 Early Access Build&#xff0c;并且此[ Build 28&#xff08;2019/12/18&#xff09; ]包括一个特别有…

android 获取当前网络,Android 获取当前网络连接的类型信息

获取当前网络连接的类型信息public static int getConnectedType(Context context) {if (context ! null) {ConnectivityManager mConnectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo mConnectivi…

js时间选择器_Vuestic Admin一款免费与美妙基于Vue.js开发的管理模板

Vuestic Admin 简介vuestic admin是一款流行&#xff0c;免费与美妙的基于Vue.js开发出来的管理模板&#xff0c;包括38以上个定制用户界面组件&#xff0c;由Epicmax开发,由Vasili Savitski设计。目前github star 6K, 最新版本2.0.0, MIT许可协议。为什么选择Vuestic AdminVue…

linux内核之旅ppt_微软Windows 10防病毒现已可用Linux上

微软在推出预览版应用程序几个月后&#xff0c;刚刚宣布了适用于Linux的Microsoft Defender ATP的全面可用性。“ Microsoft Defender ATP将Linux添加到现有的本机支持平台的选择中&#xff0c;对我们所有客户而言都是重要的时刻。它使Microsoft Defender安全中心成为真正的统一…

android 地图放大缩小按钮,Android 百度最新地图隐藏 放大缩小按钮、指南针、缩放比例的方法...

相信很多人在做地图是都会遇到如要隐藏这3中按钮的困扰&#xff0c;那么该如何实现呢&#xff1f;我就不多说&#xff0c;代码很少&#xff0c;一看就能明白下面接是具体实现代码// 隐藏缩放控件int childCount mMapView.getChildCount();View zoom null;for (int i 0; i &l…

Spring再次涵盖了您:继续进行消费者驱动的消息传递合同测试

在上一篇文章中&#xff0c;我们已经开始讨论基于消息的通信中的消费者驱动的合同测试 。 在今天的帖子中&#xff0c;我们将在测试工具箱中包含另一个工具&#xff0c;但是在此之前&#xff0c;让我对显微镜下的系统进行快速回顾。 它有两项服务&#xff0c; 订单服务和货运服…

Android两个tab吸顶,Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每

Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每个页面的内容适配高度这几天 朋友问我了个问题 有个特别的需求 页面如下就是当viewpager里面的当前页面内容足够多的时候 要去能滑上去 并且指示…

html5input输入框设置无边框_芯片充电两大改变,无看点的iPad8,上手体验发现并不简单!...

前不久&#xff0c;苹果召开了秋季新品发布会&#xff0c;但与以往不同的是&#xff0c;往年本该成为“配角”的iPad&#xff0c;没想到此次成为了主角之一&#xff0c;面对着外观不变仅升级芯片新发布的iPad 8&#xff0c;大家好像没有过多的激情&#xff0c;”旧瓶装新酒“的…

android listview 优化,Android ListView、GridView等性能优化

1.采用ViewHolder并避免在getView中执行耗时操作Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder null;if (convertView null) {convertView mInflater.inflate(R.layout.image_list_item,parent, false);holder new V…

python怎么输入一个数字并调用_Python求输入一个整数,然后输出这个整数的所有数字:个位数字在前,高位数字在后,中间使用空格字符连接...

附件程序enumeratenumber.py使用数字整除的方式实现了该功能&#xff0c;使用字符串实现该功能的代码没有完成。请仔细阅读代码之后&#xff0c;写出完整代码。[附加]enumeratenumber.py实现的输出与输入的... 附件程序enumeratenumber.py使用数字整除的方式实现了该功能&#…

android系统三防机,这才是真正给老人设计的智能手机:三防+安卓系统+超大音量,AGM H2...

原标题&#xff1a;这才是真正给老人设计的智能手机&#xff1a;三防安卓系统超大音量&#xff0c;AGM H2在这个互联网时代&#xff0c;很多智能手机厂商&#xff0c;都是在硬件配置上面进行比拼&#xff0c;包括但是不限于处理器的升级&#xff0c;摄像头的升级&#xff0c;散…

spring aop 注释_使用Spring AOP,自定义注释和反射为您的应用程序审核基础结构

spring aop 注释下一篇文章将演示如何使用Spring AOP和注释编写简单的审计。 审核机制将是干净&#xff0c;高效且易于维护的&#xff08;和Kewwl&#xff01;&#xff09;。 我将在用户管理系统上演示我的示例&#xff08;假设您具有反射和AOP的一般知识&#xff09;。 我们…

springboot 打包_springboot打包-体积太大怎么办

springcloud项目打包动辄100多兆&#xff0c;在文件上传部署的时候非常耗时&#xff0c;多数情况下是毫无意义的耗时&#xff0c;因为依赖包很多情况下不需要改变&#xff0c;只是修改了业务逻辑&#xff0c;那么每次打包上传的时间都浪费了&#xff0c;尤其在开发环境下&#…