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