2019獨角獸企業重金招聘Python工程師標準>>>
Lori Macvittie
微服務架構是把雙刃劍,我們享受它帶來的開發速度(development velocity),卻也不得不面對服務間通訊帶來的復雜性問題。
目前大多數擴展容器化微服務的架構多是基于proxy-based復雜均衡器實現的。在這些架構的問題在于,容器環境內部伸縮往往依賴于IP tables,并受制于傳統網絡層。
所有這些代理提供相同的核心功能:擴展容器環境中的分布式服務。這些服務是一種短暫的構建(ephemeral constructs),實際上并不存在——除了在定義它們的資源(配置)文件中。基于IP tables的擴展解決方案的問題是,這些服務是7層(HTTP)構造,通常充當單個API調用的“后端”,而非整個應用程序。
正如我們所知道的,從客戶端顯示為單個、整體構造的應用,實際上由許多不同的(和分布式的)微服務組成。有些服務是純內部的,供其他服務使用,這意味著要在容器環境中進行大量的service-to-service通信。
在這些環境中,一切都是HTTP/HTTP2之上的api,因此我們需要L7(HTTP)路由。我們還需要一致的安全、身份驗證和策略執行。所有這些都是基于IP tables的方法無法實現的。
針對種種微服務架構服務間通訊的問題和難點,目前出現的一些Service Mesh相關開源項目已經開始著手解決這些挑戰,核心集中于以下8個方面:
- 構建 - 除了將策略與CI/CD工具鏈集成并確保配置的聲明性模型,以便將service mesh視為一層基礎設施之外,構建并不是Service Mesh的“強項”
- 測試和集成 – Service Mesh可以幫助確保開發、測試、生產之間一致的策略。分階段部署這種方法在過去運作良好,但它是將延遲插入部署過程的障礙之一。企業正在尋找一種將服務直接部署到生產的方法,并采用流量控制和回滾機制來處理故障。
- 版本控制 - 服務網格可以作為基本API網關,根據API版本等變量路由流量,甚至可以翻譯版本,以便在API版本過渡期間提供幫助。客戶端升級并不總是強制的,這意味著會存在多個版本。Service Mesh可以將對舊API版本的請求轉換為最新版本,以幫助降低維護同一API的多個版本的成本和負擔。
- 部署 - 得益于HTTP能力,Service Mesh是實現藍/綠部署,金絲雀測試和流量控制的好方法。
- 日志記錄 - 分布式日志記錄始終是一個問題,而且在實例生存時變化很大的環境中,它會更加麻煩。Service Mesh提供了一個通用的集中位置來實現日志記錄以及執行請求跟蹤等功能的能力。
- 監控 - 監控是應用擴展的核心之一。雖然應用可以通過實現某些功能(重試、斷路等)來處理服務不可避免的故障,但會給應用帶來不必要的負擔。Service Mesh承擔了service-to-service通信的負擔,并提供監控,其目標是在生產中專注于MTTD和MTTR,因為在生產中運行很困難,故障是不可避免的。
- 調試 - 系統越復雜,調試就越困難。Service Mesh可以幫助進行根本原因分析,使用分析和遙測提供統計數據和故障前通知,并隔離容器(而不是殺死容器),以便對其進行徹底檢查。這在由于內存泄漏緩慢導致故障的情況下特別有用。
- 網絡 - 網絡仍然是容器的關鍵,可能比在不太復雜的環境中更為重要。從該網絡中抽象服務的愿望意味著您不希望在每個服務中實現許多移動部件:服務發現、SSL和證書管理、斷路器、重試、健康監控等。引入需要包含與網絡相關的功能會增加微服務,并引入額外的架構和技術債務。服務網格承擔了這些功能,并提供了所需的規模和安全性,而不影響開發。
Service mesh是一個令人興奮的演變,它結合了云和容器的現代原則和堅實的規模基礎。隨著2018年以來容器技術的普以及對企業級應用擴展和支持的需求,Service Mesh的未來值得期待。
- END -
關于Rainbond
Rainbond是一款以應用為中心的開源PaaS,由好雨基于Docker、Kubernetes等容器技術自主研發,可作為公有云或私有云環境下的應用交付平臺、DevOps平臺、自動化運維平臺和行業云平臺,或作為企業級的混合云多云管理工具、Kubernetes容器管理工具或Service Mesh微服務架構治理工具。
- Rainbond項目網站
- 試用Rainbond公有云
- 注冊或使用Demo賬號/密碼登錄:rainbond-demo/rainbond-demo
- Github
- 碼云
- 文檔
- 微信群: 添加微信“zqg5258423”并接受邀請入群
技術
Service Mesh真的是云原生應用的絕配嗎?技術
Service Mesh微服務架構的崛起2018/0706
技術
Service Mesh:什么是Sidecar模式2018/06/21
技術
開源PaaS Rainbond v3.6.0正式發布,Service Mesh開箱即用2018/06/20
技術
解讀Rainbond ServiceMesh微服務架構_開源PaaS Rainbond2018/05/15
技術
Pinpoint-java性能分析最佳實踐_開源PaaS Rainbond2018/05/08
技術
通過Minio搭建私有化對象存儲服務_開源PaaS Rainbond2018/04/26
技術
揭秘高可用負載均衡組件Rainbond-Entrance_開源PaaS Rainbond2018/04/25
技術
Rainbond插件體系設計簡介_開源PaaS Rainbond2018/02/24
技術
Rainbond如何對接外部Maven倉庫_開源PaaS Rainbond2018/01/18
技術
Spring Boot框架配置MySQL_開源PaaS Rainbond2018/01/10
技術
基于Midonet的多租戶網絡設計_開源PaaS Rainbond2018/01/09