吳宇飛 閔婕
【摘要】近年來,隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,各種新型技術(shù)被應(yīng)用到社會多個領(lǐng)域。在這種情況下,用戶在軟件系統(tǒng)的應(yīng)用中也有著更高的需求,這就需要技術(shù)研發(fā)人員對系統(tǒng)框架進行深層次的研究,以便使其兼顧靈活性適配需求與服務(wù)穩(wěn)定集成這兩方面。在這種背景下,Java微服務(wù)技術(shù)應(yīng)運而生。此項技術(shù)擁有著極強的獨立部署能力及獨立進程,這就使其能夠在運維智能化、可伸縮性、可高用性及分布式存儲等方面有著天然的優(yōu)勢作用?;诖?,本文主要對Java微服務(wù)技術(shù)應(yīng)用及發(fā)展趨勢進行簡要探究。
【關(guān)鍵詞】Java微服務(wù);發(fā)展技術(shù);發(fā)展趨勢
中圖分類號:TN94? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? ? DOI:10.12246/j.issn.1673-0348.2021.17.040
在當前科技創(chuàng)新發(fā)展時代中,物聯(lián)網(wǎng)及云計算等新興技術(shù)得以不斷發(fā)展,這就促使更多的軟件系統(tǒng)被開發(fā)出來,從而有效的滿足了用戶各方面的需求,有效實現(xiàn)了對系統(tǒng)軟件個性化的應(yīng)用。目前,更多的軟件開發(fā)企業(yè)正在逐漸邀請廣大的用戶及上下游企業(yè)等多數(shù)對象共同參與到軟件開發(fā)與后期維護,這在一定程度上能夠有效的促使軟件功能得到完善,在軟件的應(yīng)用領(lǐng)域?qū)⒅饾u擴大。自然,在軟件應(yīng)用領(lǐng)域的逐漸擴展當中也會出現(xiàn)很多新的問題出現(xiàn),在軟件系統(tǒng)中的組件及應(yīng)用模塊中出現(xiàn)了更加復(fù)雜的調(diào)用依賴問題。為對這些問題進行有效的解決,就要設(shè)計出合理的系統(tǒng)架構(gòu),不僅能夠極大的滿足了用戶的使用需求,又能對軟件資源進行合理的配置,從而在最大程度上實現(xiàn)各方面資源的有效利用。因此,以下對Java微服務(wù)技術(shù)的應(yīng)用及其未來的發(fā)展進行簡要分析。
1. 傳統(tǒng)微服務(wù)架構(gòu)的劣勢
1.1 微服務(wù)概述
微服務(wù)架構(gòu)是-種架構(gòu)模式。它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務(wù)運行在其獨立的進程中,服務(wù)與服務(wù)間采用輕量級的通信機制互相溝通(通常是基于HT TP協(xié)議的RESTful API)。每個服務(wù)都圍繞著具體業(yè)務(wù)進行構(gòu)建,并且能夠被獨立的部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)當盡量避免統(tǒng)一的、集中式的服務(wù)管理機制,對具體的一個服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù).上下文,選擇合適的語言、工具對其進行構(gòu)建。
1.2 微服務(wù)邊界
在微服務(wù)實踐落地過程中,難點在于模塊之間界面的界定。在模塊的劃分過程中,服務(wù)設(shè)計容易出現(xiàn)過大或者過小的問題。微服務(wù)過大,會產(chǎn)生與單體應(yīng)用系統(tǒng)類似的不足;微服務(wù)過小,大量服務(wù)的管理會增加運營的成本和難度。雖然服務(wù)是逐步被拆分出來的,但是隨著業(yè)務(wù)的演進,企業(yè)需要重新審視服務(wù)劃分是否合理。微服務(wù)邊界的重新定義一般可以通過如下兩種方式。
1.2.1 領(lǐng)域驅(qū)動劃分服務(wù)
它是指根據(jù)業(yè)務(wù)邏輯復(fù)雜度,而非數(shù)據(jù)量、并發(fā)量等相關(guān)復(fù)雜度劃分服務(wù)。該模式適合業(yè)務(wù)邏輯復(fù)雜度足夠高的場景。但領(lǐng)域驅(qū)動本身十分復(fù)雜,很多概念比較抽象,應(yīng)用范圍并不是特別廣泛,所以當業(yè)務(wù)復(fù)雜度較低時,可以選擇基于數(shù)據(jù)驅(qū)動劃分服務(wù),數(shù)據(jù)驅(qū)動更容易理解和上手。
1.2.2 基于數(shù)據(jù)驅(qū)動劃分服務(wù)
它是指通過自下而上的架構(gòu)設(shè)計方法,結(jié)合需求分析,確定整體數(shù)據(jù)結(jié)構(gòu),根據(jù)表之間的關(guān)系劃分服務(wù)。
1.3 分布式應(yīng)用的復(fù)雜性
當若干系統(tǒng)都處于運行狀態(tài)并且相互調(diào)用組成一套業(yè)務(wù)系統(tǒng)時,此系統(tǒng)天然具有分布式屬性。與傳統(tǒng)的單體應(yīng)用架構(gòu)相比,分布式架構(gòu)提高了系統(tǒng)的吞吐能力。隨著業(yè)務(wù)量的逐漸增大,企業(yè)需要使用多臺機器,采用分布式架構(gòu),垂直或是水平地拆分業(yè)務(wù)來應(yīng)對這種大規(guī)模的應(yīng)用場景。同時,分布式應(yīng)用可以增加系統(tǒng)的可用性,對于企業(yè)關(guān)鍵性業(yè)務(wù),系統(tǒng)需要滿足高可用性,而分布式架構(gòu)提高了系統(tǒng)的高可用性,系統(tǒng)的模塊化提高了模塊的重用度,同時提高了系統(tǒng)的拓展性以及開發(fā)和發(fā)布的速度。復(fù)雜性是分布式架構(gòu)應(yīng)用相比單體式應(yīng)用的固有特性。架構(gòu)設(shè)計更加復(fù)雜,特別是分布式服務(wù),部署變得十分復(fù)雜。一個完整的業(yè)務(wù)系統(tǒng)需要部署多個服務(wù),并且隨著系統(tǒng)吞吐量的增大,響應(yīng)時間會變長,技術(shù)多樣化,服務(wù)變多,運維的復(fù)雜度也會提高。分布式應(yīng)用測試和查錯的復(fù)雜度增大,學(xué)習(xí)成本曲線也增大,各個微服務(wù)需要選擇合適的通信協(xié)議進行消息傳遞,并完成進程間的通信。如此一來,需要處理消息傳遞中速度過慢或者不可用等局部系統(tǒng)失效問題,企業(yè)必須采用一套完整的機制保證各個服務(wù)正常運轉(zhuǎn)。
1.4 分區(qū)數(shù)據(jù)庫架構(gòu)
在分布式系統(tǒng)應(yīng)用中,各個業(yè)務(wù)系統(tǒng)趨于服務(wù)化,與之對應(yīng)的就是每個服務(wù)對應(yīng)某一個或者多個數(shù)據(jù)庫系統(tǒng),即分區(qū)數(shù)據(jù)庫架構(gòu)。業(yè)務(wù)更新需要考慮分布式數(shù)據(jù)庫的一致性,某一服務(wù)的數(shù)據(jù)操作可能會影響其他服務(wù)的數(shù)據(jù),此時需要考慮數(shù)據(jù)的一致性。當服務(wù)的業(yè)務(wù)影響到非本服務(wù)對應(yīng)的數(shù)據(jù)時,企業(yè)需要對不同服務(wù)所對應(yīng)的數(shù)據(jù)庫進行相關(guān)操作,才能確保分布式數(shù)據(jù)庫系統(tǒng)中不同數(shù)據(jù)庫下的各種業(yè)務(wù)數(shù)據(jù)的關(guān)聯(lián)性保持一致。根據(jù)分布式的CAP定理,分布式架構(gòu)中,系統(tǒng)一般從三方面彼此權(quán)衡和考慮:C(一致性)、A(可用性)和P(分區(qū)容錯性)。但是,一般的分布式系統(tǒng)只能最多保證其中兩個。系統(tǒng)作為-一個整體,企業(yè)不需要考慮全部,并且CAP理論說明了同時滿足三者是無法做到的,需要根據(jù)系列的應(yīng)用場景選擇AP或者CP,結(jié)合業(yè)務(wù)綜合考慮,為每個服務(wù)系統(tǒng)調(diào)用做不同的權(quán)衡,解決微服務(wù)架構(gòu)應(yīng)用中分布式應(yīng)用的數(shù)據(jù)一致性問題。
1.5 運維、開發(fā)復(fù)雜度增加
一個應(yīng)用系統(tǒng)業(yè)務(wù)的實現(xiàn)需要多個業(yè)務(wù)服務(wù)子系統(tǒng)的支持,管理運維多個子服務(wù)。整個應(yīng)用系統(tǒng)存在多個子服務(wù)系統(tǒng),那么這若干子系統(tǒng)都將有個性化的配置、部署、拓展和監(jiān)控方案?;谌萜骰夹g(shù),對服務(wù)進行管理,通過使用PaaS服務(wù)實現(xiàn)服務(wù)部署自動化,使用集群化方案進行統(tǒng)一化管理。
2. Java微服務(wù)的發(fā)展技術(shù)
在Java微服務(wù)技術(shù)的發(fā)展當中,還提出了相應(yīng)的系統(tǒng)軟件的管理方法,從而能夠?qū)ava微服務(wù)系統(tǒng)的順利實施有著重要的技術(shù)幫助。就以當前持續(xù)交付技術(shù)來講,應(yīng)用此項技術(shù)能夠有效的通過軟件自動化的方式以此對軟件進行快速迭代發(fā)布,從而促使團隊能夠?qū)浖a(chǎn)品實現(xiàn)快速、頻繁的交付,采用這項技術(shù)重要的表現(xiàn)特征則體現(xiàn)在持續(xù)監(jiān)控、內(nèi)置測試、分析反饋及持續(xù)整合等多方面,從而促使系統(tǒng)以此形成了具有通用性與集成性的問題解決方案。同時在Web級微服務(wù)環(huán)境中進行devops實踐。隨著混沌工程技術(shù)的出現(xiàn),能夠?qū)ava微服務(wù)系統(tǒng)在運行過程中存在的問題得到自動化解決,混沌工程技術(shù)其自身有著明顯的高可用性與高可靠性。邊車技術(shù)有著通信及封裝等功能,采用邊車技術(shù)能夠幫助服務(wù)開發(fā)人員對Java微服務(wù)系統(tǒng)的通信消息進行快速獲取。而在無服務(wù)器計算當中,能夠使Java微服務(wù)系統(tǒng)實現(xiàn)對功能及服務(wù)云模型的構(gòu)建,通過無服務(wù)器計算技術(shù)可使云用戶對服務(wù)功能進行更加精細化的開發(fā)、部署與交付。在此過程中,云用戶不需要對復(fù)雜基礎(chǔ)模塊在執(zhí)行控制指令過程中所需的資源進行創(chuàng)建與管理。在Java微服務(wù)技術(shù)中還有-一種服務(wù)網(wǎng)格技術(shù),該技術(shù)是將邊車技術(shù)作為基礎(chǔ),以使Java微服務(wù)系統(tǒng)具備完全集成化的服務(wù)通信監(jiān)控功能。通過上述工具的有效運用,能夠極大推動現(xiàn)代工業(yè)應(yīng)用領(lǐng)域的發(fā)展,并且用戶還能根據(jù)自身的實際需要來對這些開源項目進行下載與應(yīng)用,上述技術(shù)都有著對應(yīng)的URL網(wǎng)址,通過URL網(wǎng)址能夠使用戶自由下載和應(yīng)用各個工具。
3. Java微服務(wù)技術(shù)的發(fā)展趨勢
對于Java微服務(wù)技術(shù)來說,與傳統(tǒng)開發(fā)在模型上較為一致,在其關(guān)鍵的技術(shù)環(huán)節(jié)當中都是需要選擇合適的開發(fā)平臺,只有在選定的工作當中確保選用開發(fā)平臺科學(xué)、合理,在樣才能夠確保Java微服務(wù)技術(shù)能夠得到可靠實用。同樣對于以Java微服務(wù)技術(shù)來說,與傳統(tǒng)的開發(fā)模型較為一致,在關(guān)鍵的環(huán)節(jié)中都是要選擇合適的開發(fā)平臺,只有在選定的工作中確保選用的開發(fā)平臺合理、科學(xué),這樣才能夠確保Java微服務(wù)技術(shù)可靠實用。同樣對于相關(guān)領(lǐng)域開發(fā)人員來說,需要關(guān)注如何在未來云計算與物聯(lián)網(wǎng)這兩大平臺在應(yīng)用過程中能夠高效集成Java微服務(wù)技術(shù)。近年來,國家科學(xué)技術(shù)的不斷進步以及各種新興技術(shù)的迅速普及與應(yīng)用,使我國正迎來一個全新的大數(shù)據(jù)時代,這也使互聯(lián)網(wǎng)行業(yè)對物聯(lián)網(wǎng)與云計算平臺的應(yīng)用正逐漸占據(jù)主流、考慮到Java微服務(wù)技術(shù)具有明顯的可伸縮性與可移植性特點,因此,在將java微服務(wù)技術(shù)應(yīng)用到互聯(lián)網(wǎng)平臺時,還有一些問題亟需解決。而在云計算平臺中,對Java微服務(wù)技術(shù)進行應(yīng)用則具有明顯優(yōu)勢,不過,以系統(tǒng)安全性進行考慮,可以了解到Java微服務(wù)技術(shù)在運用過程中的部分功能存在安全風(fēng)險較高的問題,并且還有一些Java微服務(wù)功能的計算能力偏低。所以,我國迫切需要將具體的應(yīng)用平臺與Java微服務(wù)技術(shù)進行有機結(jié)合,以確保Java微服務(wù)技術(shù)和平臺進行集成應(yīng)用過程中,能夠形成全面而可靠的安全方案與實施方案。
4. 結(jié)束語
隨著Java微服務(wù)技術(shù)的應(yīng)運而生,使其在現(xiàn)代社會中的應(yīng)用價值正逐漸凸顯出來。對于軟件開發(fā)企業(yè)來說,必須要高度重視Java微服務(wù)技術(shù)的運用,將Java微服務(wù)技術(shù)與具體的應(yīng)用平臺進行高效集成,以此確保Java微服務(wù)技術(shù)的應(yīng)用優(yōu)勢得到充分發(fā)揮,進而有效滿足不同用戶的個性化使用要求,使軟件生態(tài)系統(tǒng)中存在的不平衡、不穩(wěn)定等問題得到切實解決,進而真正實現(xiàn)軟件資源的合理配置。
參考文獻:
[1]鄭俊褒,沈林強.基于服務(wù)網(wǎng)格的微服務(wù)架構(gòu)服務(wù)治理研究[J].計算機系統(tǒng)應(yīng)用,2019,2802):55--61.
[2]李曉明等.基于java的微服務(wù)技術(shù)在構(gòu)建企業(yè)智能大數(shù)據(jù)平臺下的應(yīng)用與開發(fā)研究[J].現(xiàn)代電子技術(shù),2019,42(15):165.