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

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

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

    微服务架构不是免费的午餐 ! 微服务需要解耦,灵活,操作透明,数据感知和弹性. 过去几年的大多数材料仅讨论具有紧密耦合且不可扩展的技术(如REST / HTTP)的点对点体系结构. 这篇博客文章介绍了 ...

  2. Envoy service mesh、Prometheus和Grafana下的微服务监控(翻译)

    原文链接:medium.com/@dnivra26/m- 如果你刚接触"Service Mesh"和"Envoy",我这里有一篇文章可以帮你入门. 这是Envo ...

  3. 【Springboot】微服务学习笔记十:微服务项目整合Kafka实现文章上下架功能

    个人简介:  >

  4. Hango 开源解读:云原生网关实践,为何要选择 Envoy ?

    网关是"镇守"互联网应用门户的关键流量代理软件.进入云原生时代,行业用户除了需要 API 网关提供请求代理.熔断限流.审计监控等常规能力外,更多的开始关注云原生兼容性(容器.服务网 ...

  5. 网易数帆基于 Envoy 的云原生网关实践

    本文根据 InfoQ 公开课<如何基于开源Envoy,构建高性能云原生微服务网关>整理,有删减. 简介:Envoy 是由 Lyft 开源的高性能网络代理软件.相比于 Nginx.HAPro ...

  6. 网易基于 Envoy 的云原生网关实践

    简介:Envoy 是由 Lyft 开源的高性能网络代理软件.相比于 Nginx.HAProxy 等经典代理软件,Envoy 具备丰富的可观察性和灵活的可扩展性,并且引入了基于 xDS API 的动态配 ...

  7. 适用于微服务架构的Apache Camel

    在知道微服务架构被称为之前,我一直在使用它们. 我曾经使用过由隔离模块组成的管道应用程序,这些模块通过队列相互交互. 从那时起,许多(前)ThoughtWorks专家讨论了微服务. 首先是 Fred ...

  8. 微服务开源项目ServiceComb 毕业成为Apache顶级项目

    全球最大的开源软件基金会Apache软件基金会(以下简称Apache)于北京时间10月24日宣布Apache ServiceComb 毕业成为Apache 顶级项目. \\ ServiceComb 由 ...

  9. 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面 开源微服务框架 Apache ServiceComb 的前身为华为云的 微服务引擎 CSE (Cloud Servi ...

最新文章

  1. Windows 下使用Git管理Github项目
  2. Wpf体系结构的学习
  3. flutter 按钮_【Flutter】ButtonBar和ToggleButtons组合按钮
  4. html输入密码自动隐藏,原生js实现密码输入框值的显示隐藏
  5. python双向索引什么意思_python字典支持双向索引吗
  6. [转载] 05 Numpy排序搜索计数及集合操作
  7. c语言课程信息系统排序学分_您可以免费访问具有实际大学学分的400多种在线课程
  8. 银行核心业务系统性能测试
  9. python免费课件-python入门ppt下载
  10. 【win10专业版】3dmax卸载不干净如何解决
  11. 微信小程序跳转微信公众号
  12. 广义线性模型(GLM)初级教程
  13. 日本“性爱机器人”上线1小时被抢空
  14. DevOps名言警句 - 2021
  15. 信息系统的无单点故障设计
  16. 即刻金服车牌币火爆上线
  17. 第 7 章 Database design E-R diagram
  18. 易风互联网邮件监控系统 v2.21 怎么用
  19. Go语言学习笔记之基础语法(一)
  20. Java——serialize与deserialize

热门文章

  1. How Much Memory Your Code Is Using? Gym - 101955J
  2. P3834 【模板】可持久化线段树 2(整体二分做法)
  3. 洛谷P3791:普通数学题(整除分块、前缀和)
  4. P7516-[省选联考2021A/B卷]图函数【bfs】
  5. P3295-[SCOI2016]萌萌哒【ST表,并查集】
  6. [2020.11.25NOIP模拟赛]下棋【dp】
  7. Comet OJ(Contest #8)-C符文能量【dp】
  8. P3629-[APIO2010]巡逻【树的直径】
  9. 【2018.4.7】模拟赛之五-ssl2386 序列【dp】
  10. 【做题记录】[NOIP2011 提高组] 观光公交