日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

微服務(wù)架構(gòu)入門教程

 蘭亭文藝 2019-06-18

微服務(wù)架構(gòu)入門

1. 微服務(wù)簡介

微服務(wù)是一種架構(gòu)風(fēng)格,一個大型的復(fù)雜軟件由一個或多個微服務(wù)組成。系統(tǒng)中每個微服務(wù)都可以被獨立部署,各個微服務(wù)之間是松耦合的。每個微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成任務(wù)。在所有情況下,每個任務(wù)代表這一個小的業(yè)務(wù)能力。

微服務(wù)的核心思想是:一個完整的應(yīng)用由多個小的、相互獨立的微服務(wù)組成,這些微服務(wù)運行在自己的進程中,開發(fā)和發(fā)布都沒有依賴。不同微服務(wù)通過一些輕量級交互機制來通信,例如RPC、HTTP等,服務(wù)可獨立拓展伸縮,每個服務(wù)定義了明確的邊界,不同的服務(wù)甚至可以采用不同的編程語言來實現(xiàn),由獨立團隊維護。簡單的來說,一個系統(tǒng)的不同模塊轉(zhuǎn)變成不同的服務(wù)!而且服務(wù)可以使用不同的技術(shù)加以實現(xiàn)!

微服務(wù)的目的是為了根據(jù)業(yè)務(wù)有效拆分應(yīng)用,實現(xiàn)敏捷開發(fā)和部署。

2. 微服務(wù)應(yīng)用與整體式應(yīng)用以及SOA的區(qū)別

2.1 與整體式(單體)應(yīng)用的區(qū)別

微服務(wù)與整體式應(yīng)用的主要差異在于組裝應(yīng)用組件,微服務(wù)架構(gòu)將相關(guān)聯(lián)的業(yè)務(wù)邏輯及數(shù)據(jù)放在一起形成獨立的邊界,其目的是在不影響其他應(yīng)用組件(微服務(wù))的情況下更快地交付并推出市場。

整體式應(yīng)用 微服務(wù)應(yīng)用
進程數(shù) 將所有功能放到同一個進程中
拓展方式 通過復(fù)制整個應(yīng)用到多臺服務(wù)器實現(xiàn)拓展
快速響應(yīng)變更 隨著云化以及應(yīng)用功能變得越來越頻繁,整體式應(yīng)用在快速響應(yīng)市場上顯得越來越力不從心。部分更新,都需要重新部署整個應(yīng)用
團隊結(jié)構(gòu) 團隊結(jié)構(gòu)呈現(xiàn)垂直化,每個團隊專門負(fù)責(zé)專門的一塊,比如分為:UI設(shè)計團隊、中間件團隊、業(yè)務(wù)開發(fā)團隊、數(shù)據(jù)庫管理團隊等。
可用性 一個服務(wù)的不穩(wěn)定可能導(dǎo)致整個應(yīng)用出現(xiàn)問題
創(chuàng)新性 很難引入新的技術(shù)和框架,所有功能都使用的同一種框架

這里寫圖片描述

2.2 與SOA的區(qū)別

看了很多網(wǎng)上對微服務(wù)和SOA區(qū)別的看法,分為兩種,一種是對區(qū)別侃侃而談,列舉了很多,另一種認(rèn)為微服務(wù)其實是SOA的一種架構(gòu)實現(xiàn)。從中可以看出微服務(wù)和SOA還是有很多相似之處的,只是針對業(yè)務(wù)需求進行區(qū)別設(shè)計。

如果非要說區(qū)別的話,微服務(wù)架構(gòu)與SOA最主要的區(qū)別在于:微服務(wù)不再強調(diào)傳統(tǒng)SOA架構(gòu)里面比較重的ESB企業(yè)服務(wù)總線,同時SOA的思想進入到單個業(yè)務(wù)系統(tǒng)內(nèi)部實現(xiàn)真正的組件化。

3. 微服務(wù)架構(gòu)的一些特性

1. 通過服務(wù)實現(xiàn)應(yīng)用的組件化

微服務(wù)架構(gòu)中將組件定義為可被獨立代替和升級的軟件單元,在應(yīng)用架構(gòu)設(shè)計中通過正整體應(yīng)用切分成可獨立部署升級的微服務(wù)方式進行組件化設(shè)計。

2.圍繞業(yè)務(wù)能力組織服務(wù)

以業(yè)務(wù)能力為出發(fā)點組織服務(wù),微服務(wù)團隊的組織結(jié)構(gòu)必須是跨功能的(比如:即管應(yīng)用也管數(shù)據(jù)庫),通常團隊功能不會太大。

3. 產(chǎn)品而非項目模式

傳統(tǒng)的應(yīng)用模式是一個團隊以項目模式開發(fā)完整的應(yīng)用,開發(fā)完成后就交付給運維團隊負(fù)責(zé)維護,微服務(wù)架構(gòu)則倡導(dǎo)一個團隊?wèi)?yīng)該負(fù)責(zé)一個“微服務(wù)”完整的生命周期,“誰開發(fā),誰負(fù)責(zé)”。

4. 智能端點和管道扁平化

微服務(wù)架構(gòu)主張將組件通訊的相關(guān)業(yè)務(wù)邏輯/智能放在組件端點側(cè)而非放在通訊組件中,通訊機制或組件應(yīng)該盡量簡單及松耦合。

5. “去中心化”治理

整體式應(yīng)用往往傾向于采取單一技術(shù)平臺,微服務(wù)架構(gòu)則鼓勵使用合適的工具完成各自的任務(wù),每個微服務(wù)可以考慮選用最佳工具完成,如不同的編程語言。

6. “去中心化”數(shù)據(jù)管理

微服務(wù)架構(gòu)倡導(dǎo)采用多樣性持久化的方法,讓每個微服務(wù)管理其自由數(shù)據(jù)庫,并允許不同微服務(wù)采用不同的數(shù)據(jù)持久化技術(shù)。

7. 基礎(chǔ)設(shè)施自動化

云化及自動化部署等技術(shù)極大地降低了微服務(wù)構(gòu)建、部署和運維的難度,通過應(yīng)用持續(xù)集成和持續(xù)交付等方法有助于達(dá)到加速推出市場的目的。

8. 故障處理設(shè)計

微服務(wù)架構(gòu)所帶來的一個后果就是必須考慮每個服務(wù)的失敗容錯機制。因此,微服務(wù)非常重視建立架構(gòu)及相關(guān)業(yè)務(wù)指標(biāo)的實時監(jiān)控和日志機制。

9. 演進式的設(shè)計

微服務(wù)應(yīng)用更注重快速更新,因此系統(tǒng)會隨時間不斷演進。微服務(wù)的設(shè)計受業(yè)務(wù)功能的生命周期等因素影響。如某應(yīng)用是整體式應(yīng)用,但逐漸朝微服務(wù)應(yīng)用架構(gòu)演進,整體式應(yīng)用仍是核心,但新功能將使用所提供的API構(gòu)建。再如在某微服務(wù)應(yīng)用中,可代替模塊設(shè)計的基本原則,在實施后發(fā)現(xiàn)某兩個微服務(wù)經(jīng)常必須同時更新,則這可能意味著應(yīng)將其合并為一個服務(wù)。

4. 微服務(wù)的優(yōu)缺點

優(yōu)點:

每個服務(wù)都比較簡單,可以提供更高的靈活性; 微服務(wù)架構(gòu)的方式是松耦合的,可以提供更高的靈活性; 微服務(wù)可通過最佳及合適的不同開發(fā)語言與工具(比如不同的數(shù)據(jù)庫)進行開發(fā),能夠做到有的放矢地解決針對性問題; 每個微服務(wù)可由不同團隊獨立開發(fā),互不影響,加快推出市場的速度; 微服務(wù)架構(gòu)是持續(xù)交付的巨大動力,允許在頻繁發(fā)布不同服務(wù)的同時保持系統(tǒng)其它部分的可用性和穩(wěn)定性。

缺點:

微服務(wù)的想法在實踐上是好的,單當(dāng)整體實現(xiàn)時也會呈現(xiàn)出復(fù)雜性。

運維開銷及成本增加:整體應(yīng)用可能只需要部署至一小片應(yīng)用服務(wù)區(qū)集群,而微服務(wù)可能變成需要構(gòu)建/測試/部署/運行數(shù)十個獨立的服務(wù),并可能需要支持多種語言和環(huán)境。這導(dǎo)致一個整體式系統(tǒng)如果由20個微服務(wù)組成,可能需要40-60個進程。 必須具有DevOps開發(fā)運維一體化技能:開發(fā)人員需要熟知運維與投產(chǎn)環(huán)境,開發(fā)人員也需要掌握必要的數(shù)據(jù)存儲技術(shù)如NoSQL,具有較強DevOps技能的人員比較稀缺。 隱式接口與接口匹配問題:把系統(tǒng)分為多個協(xié)作組件后會產(chǎn)生新的接口,這意味著簡單的交叉變化可能需要改變許多組件,并需要協(xié)調(diào)一起發(fā)布。在實際環(huán)境中,一個新品發(fā)布可能被迫同時發(fā)布大量服務(wù),由于集成點的大量增加,微服務(wù)架構(gòu)會有更高的發(fā)布風(fēng)險。 代碼重復(fù):某些底層功能需要被多個服務(wù)所用,為了避免將”同步耦合引入到系統(tǒng)中“,有時候需要向不同服務(wù)添加同樣的代碼,這就會導(dǎo)致代碼重復(fù)。 分布式系統(tǒng)的復(fù)雜性:作為一種分布式系統(tǒng),微服務(wù)引入了復(fù)雜性和其他若干問題,例如網(wǎng)絡(luò)延遲、容錯性、消息序列化、不可靠的網(wǎng)絡(luò)、異步機制、版本化、差異化的工作負(fù)載等,開發(fā)人員需要考慮以上的分布式系統(tǒng)問題。 異步機制:微服務(wù)往往使用異步編程、消息并行機制,如果應(yīng)用存在跨微服務(wù)的事務(wù)性處理,其實現(xiàn)機制會變得復(fù)雜化。 可測性的挑戰(zhàn):在動態(tài)環(huán)境下服務(wù)間的交互會產(chǎn)生非常微妙的行為,難以可視化及全面測試。經(jīng)典微服務(wù)往往不太重視測試,更多的是通過監(jiān)控發(fā)現(xiàn)生產(chǎn)環(huán)境的異常,進而快速回滾或采取必要的其他行動,但對于特別在意風(fēng)險規(guī)避監(jiān)管或投產(chǎn)環(huán)境錯誤會產(chǎn)生顯著影響的場景下需要特別注意。 部署復(fù)雜:一個單體應(yīng)用只需要在復(fù)雜均衡器后面部署各自的服務(wù)器就好了。每個應(yīng)用實例是需要配置諸如數(shù)據(jù)庫和消息中間件等基礎(chǔ)服務(wù)。相比之下,一個微服務(wù)應(yīng)用一般由大批服務(wù)構(gòu)成,這就形成大量需要配置、部署、擴展和監(jiān)控的部分。除此之外,你還需要完成一個服務(wù)發(fā)現(xiàn)機制,以用來發(fā)現(xiàn)與它通訊服務(wù)的地址(包括服務(wù)器地址和端口)。

5. 微服務(wù)的取舍

在合適的項目,合適的團隊,采用微服務(wù)架構(gòu)收益會大于成本。 微服務(wù)架構(gòu)有很多吸引人的地方,但在擁抱微服務(wù)之前,也需要認(rèn)清它所帶來的挑戰(zhàn)。 需要避免為了“微服務(wù)”而“微服務(wù)”。 微服務(wù)架構(gòu)引入策略 – 對傳統(tǒng)企業(yè)而言,開始時可以考慮引入部分合適的微服務(wù)架構(gòu)原則對已有系統(tǒng)進行改造或新建微服務(wù)應(yīng)用,逐步探索及積累微服務(wù)架構(gòu)經(jīng)驗,而非全盤實施微服務(wù)架構(gòu)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多