apache kafka_使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务...
apache kafka
微服務(wù)架構(gòu)不是免費的午餐 ! 微服務(wù)需要解耦,靈活,操作透明,數(shù)據(jù)感知和彈性。 過去幾年的大多數(shù)材料僅討論具有緊密耦合且不可擴展的技術(shù)(如REST / HTTP)的點對點體系結(jié)構(gòu)。 這篇博客文章介紹了Apache Kafka,Kubernetes,Envoy,Linkerd和Istio等尖端技術(shù),以實現(xiàn)云原生服務(wù)網(wǎng)格來解決這些挑戰(zhàn),并將微服務(wù)提升到規(guī)模,速度和效率的新水平 。
以下是構(gòu)建可伸縮,可靠,健壯和可觀察的微服務(wù)體系結(jié)構(gòu)的關(guān)鍵要求:
在更詳細地介紹之前,讓我們先看一下關(guān)鍵要點:
- Apache Kafka解耦服務(wù) ,包括事件流和 請求-響應(yīng)
- Kubernetes 為 Kafka生態(tài)系統(tǒng)提供了云原生基礎(chǔ)架構(gòu)
- Service Mesh在生態(tài)系統(tǒng)/組織范圍內(nèi)幫助提高 安全性和可觀察性
- Envoy和 Istio 位于 Kafka上方的一層,并且與Kafka的目標正交
以下各節(jié)涵蓋了有關(guān)此問題的更多想法。 博客文章的末尾包含幻燈片和錄像帶,以獲取更多詳細說明。
微服務(wù),服務(wù)網(wǎng)格和Apache Kafka
Apache Kafka成為事實上的微服務(wù)架構(gòu)標準 。 它遠遠超出了可靠且可擴展的大容量消息傳遞。 分布式存儲允許獨立的微服務(wù)之間實現(xiàn)高可用性和真正的解耦。 此外,您可以利用Kafka Connect進行集成,并利用Kafka Streams API在自治團隊中構(gòu)建輕量級流處理微服務(wù)。
服務(wù)網(wǎng)格對體系結(jié)構(gòu)進行了補充 。 它描述了組成此類應(yīng)用程序的微服務(wù)網(wǎng)絡(luò)及其之間的交互。 它的要求可以包括發(fā)現(xiàn),負載平衡,故障恢復(fù),指標和監(jiān)視。 服務(wù)網(wǎng)格通常還具有更復(fù)雜的操作要求,例如A / B測試,金絲雀推出,速率限制,訪問控制和端到端身份驗證。
我探討了分布式微服務(wù)通信的問題以及Apache Kafka和Service Mesh解決方案如何解決該問題。 這篇博客文章介紹了一些將兩種方法結(jié)合起來以構(gòu)建具有去耦和安全微服務(wù)的可靠且可擴展的微服務(wù)體系結(jié)構(gòu)的方法。
討論和體系結(jié)構(gòu)包括各種開源技術(shù),例如Apache Kafka,Kafka Connect,Kubernetes,HAProxy,Envoy,LinkerD和Istio。
在此有關(guān)“微服務(wù),Apache Kafka和域驅(qū)動設(shè)計(DDD) ”的相關(guān)博文中,了解有關(guān)使用Kafka解耦微服務(wù)的更多信息。
使用Kubernetes的Cloud-Native Kafka
云原生基礎(chǔ)架構(gòu)具有可擴展性,靈活性,敏捷性,彈性和自動化。 Kubernetes獲得了出廠標準。 無狀態(tài)服務(wù)的部署非常簡單明了。 但是,部署有狀態(tài)的分布式應(yīng)用程序(例如Apache Kafka)要困難得多。 需要大量的人工操作。 Kubernetes不會自動解決Kafka特定的挑戰(zhàn),例如滾動升級,安全性配置或代理之間的數(shù)據(jù)平衡。 在K8s自定義資源定義(CRD)中實現(xiàn)的Kafka運算符可以在這里提供幫助!
Kubernetes的運營商模式旨在捕捉正在管理一項服務(wù)或一組服務(wù)的人類運營商的主要目標。 負責特定應(yīng)用程序和服務(wù)的人工操作員對系統(tǒng)應(yīng)該如何運行,如何部署以及在出現(xiàn)問題時如何做出React有深入的了解。
在Kubernetes上運行工作負載的人們通常喜歡使用自動化來處理可重復(fù)的任務(wù)。 Operator模式捕獲了如何編寫代碼以自動執(zhí)行Kubernetes本身提供的功能以外的任務(wù) 。
存在用于Kubernetes的Kafka運營商的不同實現(xiàn)方式: 融合運營商 , IBM / Red Hat的Strimzi , Banzai Cloud 。 在這里,我不會詳細介紹K8s Kafka操作員的特性和優(yōu)勢。 我已經(jīng)在另一篇博客文章中對此進行了詳細說明(下面的視頻還將討論該主題):
使用基于Kubernetes的技術(shù)(例如Envoy,Linkerd或Istio)的服務(wù)網(wǎng)格
服務(wù)網(wǎng)格是一種微服務(wù)模式,用于將可見性,可靠性和安全性原語用于服務(wù)到服務(wù)的通信移至基礎(chǔ)結(jié)構(gòu)層,而不是應(yīng)用程序?qū)印?/strong>
可以在此處找到關(guān)于設(shè)計模式“服務(wù)網(wǎng)格”的詳細說明,包括下圖,該圖顯示了控制平面與具有代理人小車的微服務(wù)之間的關(guān)系:
您可以從Envoy或Linkerd之類的框架的創(chuàng)建者那里找到有關(guān)服務(wù)網(wǎng)格概念及其實現(xiàn)的更多精彩內(nèi)容。 請查看這兩個鏈接,或者只是使用Google來獲得有關(guān)競爭替代品及其權(quán)衡取舍的更多信息。
Apache Kafka和Service Mesh的(潛在)功能
像Apache Kafka這樣的事件流平臺和Kubernetes之上的服務(wù)網(wǎng)格是云原生的,正交的和互補的 。 他們共同解決了構(gòu)建可擴展,可靠,健壯和可觀察的微服務(wù)體系結(jié)構(gòu)的關(guān)鍵要求:
如今,公司已經(jīng)將Kafka與諸如Envoy,Linkerd或Istio之類的服務(wù)網(wǎng)格實現(xiàn)一起使用 。 您可以輕松地將它們組合在一起以增加安全性,實施速率限制或?qū)嵤┢渌嚓P(guān)用例。 Banzai Cloud發(fā)布了最有趣的架構(gòu)之一:他們使用Istio通過使用Envoy的代理為Kafka Brokers和ZooKeeper添加安全性 。
但是,與此同時,支持變得更好: Envoy中對Kafka支持的拉取請求于2019年5月合并。 這意味著您現(xiàn)在在Envoy中具有本機Kafka協(xié)議支持 。 關(guān)于其挑戰(zhàn)和實現(xiàn)Kafka協(xié)議過濾器的潛在功能的非常有趣的討論也值得一讀。
借助本機Kafka協(xié)議支持,您可以執(zhí)行除L4 TCP過濾之外的更多有趣的事情。 以下是一些想法(部分來自于Github討論),關(guān)于在Service Mesh中使用L7 Kafka協(xié)議支持可以做什么:
- 點擊功能以轉(zhuǎn)儲到Kafka流
- 協(xié)議解析以實現(xiàn)可觀察性(使用HTTP RPC進行統(tǒng)計,日志記錄和跟蹤鏈接)
- 對Kafka流的影子請求,而不是HTTP / gRPC影子
- 與Kafka Connect及其連接器的整個生態(tài)系統(tǒng)集成
- 動態(tài)路由
- L4連接和L7消息級別的速率限制
- 過濾,添加壓縮,…
- 自動主題名稱轉(zhuǎn)換(例如用于金絲雀發(fā)布或藍色/綠色部署)
- 請求日志和統(tǒng)計信息
- 數(shù)據(jù)沿襲/審核日志
- 通過獲取請求日志并用用戶信息豐富它們來審核日志。
- 客戶特定指標(每個客戶ID /每個客戶組的字節(jié)率,客戶庫的版本,整個數(shù)據(jù)中心的客戶滯后監(jiān)控)
- SSL終止
- 相互TLS(mTLS)
- 授權(quán)書
- 序列化格式(JSON,Avro,Protobuf等)
- 訊息模式
- 標頭,屬性等
太棒了,不是嗎?
微服務(wù),Kafka和服務(wù)網(wǎng)格–幻燈片和視頻錄制
讓我們看一下我的幻燈片和視頻記錄,以更詳細地了解使用Apache Kafka,其生態(tài)系統(tǒng),Kubernetes和Service Mesh技術(shù)構(gòu)建Service Mesh的需求,挑戰(zhàn)和機遇…
這是幻燈片平臺:
來自KaiW?hner的 Apache Kafka,Kubernetes,Envoy,Istio和Linkerd的Service Mesh來自KaiW?hner的 Apache Kafka,Kubernetes,Envoy,Istio和Linkerd的Service Mesh
錄像帶您瀏覽幻燈片:
有任何想法或反饋嗎? 請通過評論或推文讓我知道,或者讓我們在LinkedIn上建立聯(lián)系。
<>
翻譯自: https://www.javacodegeeks.com/2019/09/service-mesh-cloud-native-microservices-apache-kafka-kubernetes-envoy.html
apache kafka
總結(jié)
以上是生活随笔為你收集整理的apache kafka_使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度死链怎么提交(百度死链提交有用吗)
- 下一篇: 纹理和基元_自定义基元和DTO的(反)序