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