相比于單體應(yīng)用和SOA架構(gòu),微服務(wù)的小團(tuán)隊(duì)開發(fā)運(yùn)維、復(fù)雜度可控制、獨(dú)立擴(kuò)縮、可靈活組合等等優(yōu)勢也逐漸凸顯,被廣大架構(gòu)師和技術(shù)人員引入和推崇。但同時(shí)也引出了配置繁雜、事務(wù)不可控等諸多問題,如何恰當(dāng)?shù)慕鉀Q微服務(wù)中暴露出的各種問題,成為各服務(wù)治理平臺(tái)的重點(diǎn)和難點(diǎn)。
軟件架構(gòu)在微服務(wù)之前,各個(gè)服務(wù)通過RestFul接口或者RPC進(jìn)行互聯(lián)和調(diào)用,進(jìn)行功能的服務(wù)化和解耦,諸多成熟的RPC框架被引入,例如:
用友云服務(wù)治理平臺(tái)應(yīng)勢而生
用友云主要面向企業(yè)級應(yīng)用,在TOB領(lǐng)域有獨(dú)特的技術(shù)特色和要求,且用友云下的微服務(wù)治理需要和自身的DevOps平臺(tái)、容器云平臺(tái)及數(shù)據(jù)平臺(tái)進(jìn)行協(xié)同和能力聚合。在借鑒和吸收其他產(chǎn)品的優(yōu)勢的同時(shí),用友云服務(wù)治理平臺(tái)團(tuán)隊(duì)針對自身產(chǎn)品需要做了完善和適配,充分的和用友云開發(fā)者中心、數(shù)據(jù)平臺(tái)、租戶中心、用戶中心等結(jié)合,推出了更適合自身的用友云服務(wù)治理平臺(tái)。
用友云服務(wù)治理平臺(tái)是用友云平臺(tái)(iuap)基礎(chǔ)平臺(tái)服務(wù)(gPaaS)的一個(gè)核心能力。企業(yè)在向“互聯(lián)化”方向轉(zhuǎn)型的過程中,軟件產(chǎn)品的開發(fā)需求變更越來越頻繁,對技術(shù)中臺(tái)要求越來越強(qiáng)烈,統(tǒng)一的gPaaS基礎(chǔ)能力逐漸被認(rèn)可,越來越多的企業(yè)期望有一個(gè)基礎(chǔ)平臺(tái)去支撐企業(yè)快速增長的業(yè)務(wù)。gPaaS基礎(chǔ)平臺(tái)是iuap產(chǎn)品家族的一部分,提供了DevOps能力、容器云能力、服務(wù)治理能力、微服務(wù)編排能力。gPaaS基礎(chǔ)平臺(tái)簡化了多種基礎(chǔ)設(shè)施帶來的復(fù)雜性,打通了開發(fā)運(yùn)維一體化流程,提供傳統(tǒng)服務(wù)架構(gòu)向微服務(wù)架構(gòu)轉(zhuǎn)變及服務(wù)治理的最佳方法論和工具集,支持微服務(wù)可視化編排。
用友云服務(wù)治理平臺(tái)具有以下特色:
用友云服務(wù)治理平臺(tái)提供RPC調(diào)用框架、異步調(diào)用框架、服務(wù)注冊發(fā)現(xiàn)、配置中心、元數(shù)據(jù)、一致性框架等基礎(chǔ)中間件,并預(yù)留了插件機(jī)制的擴(kuò)展,方便開發(fā)者使用和集成;也從中間件容器層面提供類隔離和組件加載機(jī)制,盡量避免和業(yè)務(wù)應(yīng)用引用的三方組件版本沖突;提供統(tǒng)一的門戶入口,可視化的管理和查看遠(yuǎn)程服務(wù)的接口信息、調(diào)用鏈路日志、統(tǒng)計(jì)信息、評價(jià)信息,動(dòng)態(tài)的控制具體接口和方法的權(quán)限和流量限制;提供限流、鏈路追蹤等組件保證服務(wù)的穩(wěn)定和可用性。
同時(shí),在外圍還支持和服務(wù)網(wǎng)關(guān)API Link的對接,支持使用IDE進(jìn)行微服務(wù)的編排和一鍵發(fā)布。
微服務(wù)SDK: 各個(gè)組件通過核心的插件機(jī)制和類加載機(jī)制整合在一起,形成整體對外提供服務(wù),具有兩大鮮明特性:1:支持SPI方式擴(kuò)展的插件機(jī)制,靈活組合,易于擴(kuò)展;2:基于ClassLoder的類隔離機(jī)制,組件分離,避免沖突。通過服務(wù)治理平臺(tái)的SDK,業(yè)務(wù)方可以簡單快速的集成微服務(wù)的能力到業(yè)務(wù)工程,達(dá)到技術(shù)架構(gòu)的微服務(wù)化的目的。
后端支撐:后端支撐較為核心的包括注冊中心、元數(shù)據(jù)、控制臺(tái)和鏈路計(jì)算、監(jiān)控、配置中心、權(quán)限管控等。
解決微服務(wù)落地難題
用友云服務(wù)治理平臺(tái)的幾大核心功能包含基礎(chǔ)的RPC框架、注冊中心元數(shù)據(jù)、配置中心、鏈路追蹤、異步和一致性、限流熔斷等。
服務(wù)治理平臺(tái)在實(shí)現(xiàn)和落地微服務(wù)的幾個(gè)核心功能的過程中,也遇到一些難點(diǎn),這也是眾多廠家和平臺(tái)共同的難點(diǎn)。針對這些關(guān)鍵點(diǎn),用友云提出了適合自身場景的多種合理的解決方案并實(shí)現(xiàn):
一,類隔離機(jī)制和插件機(jī)制:
JAVA 版的SDK,在和各種業(yè)務(wù)應(yīng)用整合的同時(shí),會(huì)遇到很多三方組件版本沖突的問題,給業(yè)務(wù)整合方帶來了困擾。用友云服務(wù)治理平臺(tái)自3.5 版本開始對其進(jìn)行了優(yōu)化,引入了類隔離機(jī)制,推出了冰山(iceberg)思想,內(nèi)部自身加載其依賴的三方組件,不對外部的業(yè)務(wù)三方引用造成沖突,大大簡化了集成的難度。
二,動(dòng)態(tài)配置:
業(yè)務(wù)應(yīng)用的微服務(wù)化拆分,使得業(yè)務(wù)工程的配置文件更加繁多和分離,微服務(wù)的權(quán)限和流量的實(shí)時(shí)控制,也需要?jiǎng)討B(tài)的管理各項(xiàng)配置。所以配置中心的后端服務(wù)和前端SDK體現(xiàn)出更重要的作用。
異步調(diào)用框架提供可靠消息組件,完善了隊(duì)列的權(quán)限認(rèn)證體系,簡化了異步調(diào)用的開發(fā)方式,業(yè)務(wù)開發(fā)只需要簡單配置和注解,即可完成異步操作。同時(shí),異步事務(wù)控制臺(tái)可以在云端可視化的下發(fā)命令,提供錯(cuò)誤事務(wù)的重試機(jī)制。
服務(wù)治理平臺(tái)經(jīng)過長時(shí)間的發(fā)展和磨練,已經(jīng)在分布式服務(wù)調(diào)用、運(yùn)維管控和服務(wù)治理、生命周期管理和統(tǒng)一控制臺(tái)、數(shù)字化監(jiān)控和運(yùn)營、開發(fā)支持?jǐn)U展和兼容等等大方面有沉淀和輸出。我們也和其他成熟的產(chǎn)品及框架進(jìn)行對比,吸收和優(yōu)化,構(gòu)建和完善自身的微服務(wù)能力體系。
用友云服務(wù)治理平臺(tái)的發(fā)展并非原生和獨(dú)立的。服務(wù)治理平臺(tái)、DevOps平臺(tái)、容器云平臺(tái)合力,成為各個(gè)云產(chǎn)品和服務(wù)成功上云的三把尖刀,為其底層的技術(shù)支撐提供了強(qiáng)有力的保障。相信三把尖刀也會(huì)在技術(shù)中臺(tái)中體現(xiàn)出越來越重要的價(jià)值。