最近幾年,云計算技術(shù)飛速發(fā)展,各種領(lǐng)域的服務(wù)系統(tǒng)方法也緊隨其后。微服務(wù)架構(gòu)也逐漸引起人們的重視了,那么到底什么是微服務(wù)架構(gòu)模式呢?首先它是一種體系結(jié)構(gòu)模式,并且主張把單個應(yīng)用分成一組服務(wù),通過這些服務(wù)相協(xié)作,相互協(xié)調(diào),以達(dá)到為用戶提供最終價值的目的。事實上每一個服務(wù)都在其獨立進(jìn)程中運行,通過服務(wù)和服務(wù)之間采用輕量級通信機制來相互促進(jìn)交流。當(dāng)然每一個服務(wù)都是圍繞特定的業(yè)務(wù)構(gòu)建而來的,接下來我們說一說微服務(wù)架構(gòu)優(yōu)勢。
微服務(wù)體系結(jié)構(gòu)的本質(zhì),就是使用具有更多明確功能和更多復(fù)雜業(yè)務(wù)的服務(wù)來解決更大的實際問題。微型服務(wù)體系結(jié)構(gòu)將服務(wù)分開,采用相對獨立的服務(wù)對各個方面進(jìn)行管理,彼此使用統(tǒng)一的接口進(jìn)行通信,體系結(jié)構(gòu)變得復(fù)雜,優(yōu)點也十分明顯,微服務(wù)架構(gòu)優(yōu)勢:
一、復(fù)雜性控制:在運用分解的同時,避免無限制地累積原來的復(fù)雜性。每個微服務(wù)都關(guān)注單個功能,并通過定義良好的接口清楚地描述服務(wù)邊界。因為這些微服務(wù)都很小,復(fù)雜度很低,所以每個微服務(wù)都可以被一個小型的開發(fā)團(tuán)隊完全控制,很容易保持高的維護(hù)性和開發(fā)效率。
微服務(wù)架構(gòu)
二、單獨部署:因為微服務(wù)有獨立的運行流程,所以每個微服務(wù)也可以單獨部署。在更改某些微服務(wù)時,不需要編譯和部署整個應(yīng)用程序。包含微服務(wù)的應(yīng)用程序相當(dāng)于具有一系列可并行的發(fā)布過程,這使得發(fā)布更高效,同時減少生產(chǎn)環(huán)境中的風(fēng)險,并最終縮短應(yīng)用程序的交付周期。
靈活的技術(shù)選擇:在微服務(wù)體系結(jié)構(gòu)中,技術(shù)選擇是去中心化的。每一個團(tuán)隊都可以根據(jù)自己的服務(wù)需求和行業(yè)發(fā)展現(xiàn)狀,自由選擇最合適的技術(shù)組合。因為每一個微服務(wù)都比較簡單,所以在需要升級技術(shù)棧時風(fēng)險就會降低,甚至可以完全重構(gòu)一個微服務(wù)。
三、容錯:當(dāng)一個組態(tài)出現(xiàn)故障時,在傳統(tǒng)的單進(jìn)程結(jié)構(gòu)中,故障很可能在進(jìn)程中擴散,并形成應(yīng)用程序無法使用的全局性。在微服務(wù)體系結(jié)構(gòu)中,故障被隔離在一個服務(wù)內(nèi)。如果設(shè)計良好,其他服務(wù)可以通過重試、平滑退化等機制在應(yīng)用層上實現(xiàn)容錯。
四、擴展性:單一體系結(jié)構(gòu)應(yīng)用也可以實現(xiàn)橫向擴展,即完整地復(fù)制整個應(yīng)用到不同節(jié)點。微服務(wù)架構(gòu)在應(yīng)用的不同組件之間存在著擴展需求差異的情況下表現(xiàn)出靈活性,因為每個服務(wù)都可以根據(jù)實際需求獨立地擴展。
互聯(lián)網(wǎng)高并發(fā)相關(guān)名詞。
頁面瀏覽數(shù)(pageviews)
唯一身份瀏覽量(UniquePageViews)
獨立訪問者數(shù)量(uniquevisitors)
重復(fù)訪問者數(shù)量(repeatvisitors)
每個訪問者的頁面瀏覽數(shù)(PageViewsperuser)
五、高并發(fā)
以前我把高并發(fā)解決方案誤認(rèn)為線程或隊列就可以解決,因為高并發(fā)時有很多用戶在訪問,導(dǎo)致出現(xiàn)系統(tǒng)數(shù)據(jù)不正確、丟失數(shù)據(jù)的現(xiàn)象,所以想到了用隊列解決方案,其實隊列解決方案的方式也可以處理,比如我們在競拍商品,轉(zhuǎn)發(fā)評論微博或是秒殺商品,同時訪問量特別大,隊列在這一點上發(fā)揮著特殊的作用,把所有的請求都放到隊列中,按毫秒計時器,有序地進(jìn)行,這樣就不會出現(xiàn)系統(tǒng)中數(shù)據(jù)不正確的情況。通過查閱資料,高并發(fā)性解決方案有兩個,一個是使用緩存,另一個是使用生成靜態(tài)頁面;另外一個是優(yōu)化我們的代碼以減少不必要的資源浪費:不要經(jīng)常使用new對象,對于整個應(yīng)用程序中只需要存在一個實例的類,要使用StringBuffer或StringBuilder,對StringBuilder,StringBuilder,StringBuilder,通過靜態(tài)方法訪問單個類。不要使用諸如Exception可以控制方法推出等錯誤的方法,但Exception要保持stacktrace消耗性能,除非必要時不使用instanceof進(jìn)行條件判斷,并盡量使用比率的條件判斷。在JAVA中使用效率高的類,例如ArrayList,它比Vector更好。
以上我們分享了微服務(wù)架構(gòu)的設(shè)計模式以及優(yōu)勢,如果您想了解更多相關(guān)信息,請您繼續(xù)關(guān)注中培偉業(yè)。