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