華為云CSE Mesher 讓微服務與PHP選擇不再兩難
你是否為PHP微服務化操碎了心
你的PHP可能實現了假微服務
PHP的微服務化其實沒那么難
PHP的微服務化***實踐
php與微服務的一次***邂逅。。
php可以零改造享受微服務治理啦
PHP:確定過眼神 你就是我想要的微服務
選擇并堅持合適的編程語言至關重要,編程語言的更換意味著高昂的學習成本和不增值的系統重構。面對業務交付周期變短、業務高并發壓力,向微服務演進成為軟件架構師的共同選擇。業界已有的微服務框架往往只支持Java,基于PHP、.Net的應用該如何擁抱微服務?Service Mesh,被譽為下一代微服務,提供一種透明的微服務網絡代理,以SiderCar模式將PHP應用以零侵入方式實現微服務架構演進。
在智慧城市的大浪潮之下,某IoT服務商推出SaaS化的HiFM智慧樓宇管理方案,涵蓋了人、物、環境等多個元素,業務流程包括預算管理、系統檢測、工單管理、預算管理、供應商管理、資產管理、問題管理等。HiFM智慧樓宇管理方案進一步提升樓宇管理的自動化水平,也讓現代樓宇系統具備環境監測、能耗監控、設備智能監控等能力,成為更智慧的樓宇管理中樞。這也要求樓宇管理系統能夠更靈活、快速的滿足個性化業務場景的要求。
PHP和微服務,是否是一場錯配?
PHP語言具有運行高效、部署快速、擴展庫功能強大、且HiFM智慧樓宇管理系統的研發團隊具有多年的PHP語言研發經驗,能夠快速、準確地實現復雜的業務需求,因此HiFM系統***PHP語言作為系統的主開發語言。
HiFM系統由數十個功能模塊組成,業務模塊耦合性高。隨著系統功能不斷豐富,復雜性不斷提升,系統體量越來越大,維護和升級成本不斷攀升。HiFM系統作為面向企業用戶的SaaS解決方案,需要對接大量企業已有的業務系統,這使得系統變得越發臃腫。為了減小耦合性,HiFM系統啟用了前后端分離的模式,更為輕巧快速的PHP框架,但這并未從根本上解決所有問題。而從長遠來看,HiFM系統必將擴展更多邊緣模塊,對接更多的個性化業務系統,這對系統架構提出嚴峻挑戰。
我們決定選用微服務架構解決這些難題。微服務技術帶來的好處不言而喻,獨立開發、獨立部署、獨立發布、去中心化管理,支持高并發高可用,支持豐富技術棧,企業可以根據需要靈活技術選型。
但深入分析之后發現:PHP 需要 Nginx 和 PHP-FPM(或類似工具)來實現進程和連接池管理等功能。這意味著部署基于PHP語言的微服務,PHP-FPM 和 Nginx 也必須一起運行。這浪費了系統資源,也降低了擴展的效率,也帶來配置復雜性的問題。優化單 PHP 實例已經很頭大了,因為需要了解和配置 PHP,PHP-FPM 和 Nginx 這一堆組合,我們無法想象最終在彈性的 Kubernetes 環境中配置多個 PHP 棧的痛苦情形,完全不知道在同一臺機器上運行了哪些服務。
既然我們已經致力于以軟件架構的優化整體提升應用的快速發布、快速上線,那么因為語言而增加更多長期開銷、配置和管理復雜,就是得不償失的。
重構PHP應用是唯一的選擇嗎?
CSE Mesher改變PHP和微服務無法兼容的現狀
CSE(Cloud Service Engine)是一款華為云推出的微服務引擎,基于華為公司的大型系統微服務化積累的***實踐構件,提供了微服務SDK,服務注冊,配置和治理中心,幫助開發人員實現微服務應用的快速構建、治理運維。
CSE Mesher是Service Mesh模式的一種實現,將負載均衡、服務發現、熔斷、運行時動態路由等能力抽象成將一層透明網絡代理。正因為其作為獨立運行透明代理的特點,CSE Mesher可以使得多種編程語言的應用,如PHP, .NET, NodeJS都能夠快速轉向微服務或者云原生應用,開發者無需修改原有的業務代碼,以一種自然的機制擴展應用負載,自由混編,并因地制宜選擇虛擬機或容器部署。
基于CSE Mesher,在很短的周期內就實現了HiFM系統的零侵入式微服務架構改造,其實現步驟包含以下三個環節:
1、范圍明確與功能剝離:明確業務系統的邊界,形成多個獨立的微服務,如上圖所示。這里包括如下兩點:
1) 將原本耦合的工作流拆分出來,采用更適合的PHP微服務框架;
2) 對相關功能模塊進行重組,將之前的高耦合的模塊聯動方式修改為各個微服務之間的RESTful服務調用方式。
在拆分的過程中,需要根據以下原則來分析權衡:
1) 軟件發布頻率:如果某部分功能經常變動,變動過程不希望現存的主要服務受到影響甚至斷服,那么這部分功能就要拆出來,成為獨立的微服務;
2) 系統復用:如果某部分功能適合作為API server發布出來供其他調用者調用,建議成為獨立的微服務;
3) 業務相關性和獨立性:拆分時要考慮業務邏輯的獨立性,比如購物車,支付,評論服務,上圖例子中很好地詮釋了這一點;
4) 團隊:在調整架構時還要考慮人力的重新分配,通常用2 pizza team來衡量一個微服務的團隊人力是否合適。
2、接入微服務注冊中心:這里描述的是基于華為云CSE微服務引擎的實現。其中,Mesher(即:微服務引擎透明代理)只要求進行最小化的配置即可接入,具體包括如下幾個要點:
1) 給服務設置名字,以便在運行時讓其他服務尋址
2) 使用mesher作為http_proxy 即運行命令export http_proxy=
3) 告訴mesher,服務本地監聽地址,比如127.0.0.1:3000
4) 最終,在運行時,當你想要訪問一個API時,只需要通過服務名+API路徑,即可訪問
3、運用微服務治理實現系統的彈性和高可用:微服務治理能力確保系統能夠在大話務量峰值場景下也能為企業用戶提供更加優質的服務,包括:限流,熔斷降級,容錯,負載均衡策略,通過系統配置和智能算法,確保系統運行時的高可用。
通過以上三步,改造后的HiFM系統有效提高系統容錯能力以及穩定性,具備熔斷降級與限流的自服務治理能力,同時也使用標準OpenAPI契約,便于免修改多系統對接。
更重要的是,整個改造過程中,無需將原有PHP代碼使用其他編程語言重構,也無需對PHP業務代碼因改造而實施修改。
簡單三步即可享受微服務架構帶來的業務快速開發快速上線、系統資源彈性、去中心化管理、系統高并發高可用,完全無需關心分布式架構帶來的復雜性和以及引入的技術問題。點擊了解華為云CSE : https://www.huaweicloud.com/product/cse.html