6微服務(wù)系統(tǒng)架構(gòu)_第1頁(yè)
6微服務(wù)系統(tǒng)架構(gòu)_第2頁(yè)
6微服務(wù)系統(tǒng)架構(gòu)_第3頁(yè)
6微服務(wù)系統(tǒng)架構(gòu)_第4頁(yè)
6微服務(wù)系統(tǒng)架構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章Linux系統(tǒng)與服務(wù)構(gòu)建運(yùn)維3.16微服務(wù)系統(tǒng)架構(gòu)目錄2010203微服務(wù)概述微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)常用技術(shù)選型301微服務(wù)概述學(xué)習(xí)目標(biāo)了解什么是微服務(wù)401微服務(wù)概述微服務(wù)架構(gòu)是一種架構(gòu)概念,一個(gè)大型復(fù)雜軟件應(yīng)用由一個(gè)或多個(gè)微服務(wù)組成。系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù),并很好地完成該任務(wù)。在所有情況下,每個(gè)任務(wù)代表著一個(gè)小的業(yè)務(wù)能力。它的核心思想在于通過(guò)將業(yè)務(wù)功能和需求分解到各個(gè)不同的服務(wù)中進(jìn)行管理,實(shí)現(xiàn)對(duì)業(yè)務(wù)整體解耦。圍繞業(yè)務(wù)模式創(chuàng)建應(yīng)用服務(wù),應(yīng)用服務(wù)可獨(dú)立地進(jìn)行開(kāi)發(fā)、迭代和部署,使項(xiàng)目的架構(gòu)更加清晰明確。隨著云計(jì)算及互聯(lián)網(wǎng)公司大量開(kāi)源輕量級(jí)技術(shù)不停涌現(xiàn)并日漸成熟,微服務(wù)應(yīng)用的使用場(chǎng)景越來(lái)越多。502微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)學(xué)習(xí)目標(biāo)了解微服務(wù)架構(gòu)的優(yōu)點(diǎn)了解微服務(wù)架構(gòu)的缺點(diǎn)602微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)1.優(yōu)點(diǎn)①每個(gè)服務(wù)都比較簡(jiǎn)單,只關(guān)注于一個(gè)業(yè)務(wù)功能。②微服務(wù)架構(gòu)方式是松耦合的,可以提供更高的靈活性。③微服務(wù)可通過(guò)最佳及最合適的不同的編程語(yǔ)言與工具進(jìn)行開(kāi)發(fā),能夠做到有的放矢地解決針對(duì)性問(wèn)題。④每個(gè)微服務(wù)可由不同團(tuán)隊(duì)獨(dú)立開(kāi)發(fā),互不影響,加快推出市場(chǎng)的速度。⑤微服務(wù)架構(gòu)是持續(xù)交付(CD)的巨大推動(dòng)力,允許在頻繁發(fā)布不同服務(wù)的同時(shí)保持系統(tǒng)其他部分的可用性和穩(wěn)定性。702微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)2.缺點(diǎn)微服務(wù)的一些想法在實(shí)踐上是好的,但當(dāng)整體實(shí)現(xiàn)時(shí)也會(huì)呈現(xiàn)出其復(fù)雜性。①運(yùn)維開(kāi)銷及成本增加。整體應(yīng)用可能只需部署至一小片應(yīng)用服務(wù)區(qū)集群,而微服務(wù)架構(gòu)可能變成需要構(gòu)建、測(cè)試、部署、運(yùn)行數(shù)十個(gè)獨(dú)立的服務(wù),并可能需要支持多種語(yǔ)言和環(huán)境。這導(dǎo)致一個(gè)整體式系統(tǒng)如果由20個(gè)微服務(wù)組成,可能需要40~60個(gè)進(jìn)程②必須有堅(jiān)實(shí)的DevOps開(kāi)發(fā)運(yùn)維一體化技能。開(kāi)發(fā)人員需要熟知運(yùn)維與投產(chǎn)環(huán)境,并需要掌握必要的數(shù)據(jù)存儲(chǔ)技術(shù)(如NoSQL),但是具有較強(qiáng)DevOps技能的人員比較稀缺,會(huì)帶來(lái)招聘人才方面的挑戰(zhàn)。802微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)③隱式接口及接口匹配問(wèn)題。把系統(tǒng)分為多個(gè)協(xié)作組件后會(huì)產(chǎn)生新的接口,這意味著簡(jiǎn)單的交叉變化可能需要改變?cè)S多組件,并需協(xié)調(diào)一起發(fā)布。在實(shí)際環(huán)境中,一個(gè)新品發(fā)布可能被迫同時(shí)發(fā)布大量服務(wù),由于集成點(diǎn)的大量增加,微服務(wù)架構(gòu)會(huì)有更高的發(fā)布風(fēng)險(xiǎn)。④代碼重復(fù)。某些底層功能需要被多個(gè)服務(wù)所用,為了避免將“同步耦合引入到系統(tǒng)中”,有時(shí)需要向不同服務(wù)添加一些代碼,這就會(huì)導(dǎo)致代碼重復(fù)。⑤分布式系統(tǒng)的復(fù)雜性。作為一種分布式系統(tǒng),微服務(wù)引入了復(fù)雜性和其他若干問(wèn)題,例如,網(wǎng)絡(luò)延遲、容錯(cuò)性、消息序列化、不可靠的網(wǎng)絡(luò)、異步機(jī)制、版本化、差異化的工作負(fù)載等,開(kāi)發(fā)人員需要考慮以上的分布式系統(tǒng)問(wèn)題。902微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)⑥異步機(jī)制。微服務(wù)往往使用異步編程、消息與并行機(jī)制,如果應(yīng)用存在跨微服務(wù)的事務(wù)性處理,其實(shí)現(xiàn)機(jī)制會(huì)變得復(fù)雜化。⑦可測(cè)性的挑戰(zhàn)。在動(dòng)態(tài)環(huán)境下服務(wù)間的交互會(huì)產(chǎn)生非常微妙的行為,難以可視化及全面測(cè)試。經(jīng)典微服務(wù)往往不太重視測(cè)試,更多的是通過(guò)監(jiān)控發(fā)現(xiàn)生產(chǎn)環(huán)境的異常,進(jìn)而快速回滾或采取其他必要的行動(dòng)。但對(duì)于特別在意風(fēng)險(xiǎn)規(guī)避監(jiān)管或投產(chǎn)環(huán)境錯(cuò)誤會(huì)產(chǎn)生顯著影響的場(chǎng)景下需要特別注意。1003常用技術(shù)選型學(xué)習(xí)目標(biāo)了解微服務(wù)的基礎(chǔ)層框架了解微服務(wù)的持久層框架了解微服務(wù)的中間件集成了解微服務(wù)的數(shù)據(jù)存儲(chǔ)1103常用技術(shù)選型在實(shí)際的技術(shù)選型中,最主要還是要結(jié)合業(yè)務(wù)、系統(tǒng)的未來(lái)發(fā)展的特征進(jìn)行合理判斷,以下內(nèi)容是針對(duì)常用的技術(shù)服務(wù)簡(jiǎn)要說(shuō)明,具體細(xì)節(jié)和原理及如何應(yīng)用,可通過(guò)百度等搜索引擎搜索關(guān)鍵詞了解詳情,本章的3.17實(shí)戰(zhàn)案例將通過(guò)商用的實(shí)際案例來(lái)安裝和部署相關(guān)服務(wù),理解各服務(wù)之間的關(guān)系。1203常用技術(shù)選型1.基礎(chǔ)層框架SpringBoot是構(gòu)建微服務(wù)的基礎(chǔ)框架,是SpringCloud的基礎(chǔ),其自帶Tomcat,不需要在Tomcat中,可以直接啟動(dòng)。自身也有各項(xiàng)優(yōu)點(diǎn),如自動(dòng)化配置、快速開(kāi)發(fā)、輕松部署等,非常適合用作微服務(wù)架構(gòu)中各項(xiàng)具體微服務(wù)的開(kāi)發(fā)框架。它不僅可以幫助用戶快速地構(gòu)建微服務(wù),還可以輕松簡(jiǎn)單地整合SpringCloud實(shí)現(xiàn)系統(tǒng)服務(wù)化。而如果使用了傳統(tǒng)的Spring構(gòu)建方式的話,在整合過(guò)程中用戶還需要做更多的依賴管理工作,才能讓它們完好地運(yùn)行起來(lái)。1303常用技術(shù)選型2.持久層框架MyBatis是一個(gè)支持普通SQL查詢,存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及對(duì)結(jié)果集的檢索封裝。MyBatis可以使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJO(PlainOldJava

Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。通常會(huì)用于SpringBoot微服務(wù)框架。1403常用技術(shù)選型3.中間件集成(1)RabbitMQRabbitMQ是基于AMQP協(xié)議的開(kāi)源實(shí)現(xiàn),由以高性能、可伸縮性出名的Erlang寫(xiě)成。目前客戶端支持Java、.Net/C#和Erlang。在AMQP(AdvancedMessageQueuingProtocol)的組件中,Broker中可以包含多個(gè)Exchange(交換機(jī))組件。Exchange可以綁定多個(gè)Queue以及其他Exchange。消息會(huì)按照Exchange中設(shè)置的Routing規(guī)則,發(fā)送到相應(yīng)的MessageQueue。在Consumer消費(fèi)了這個(gè)消息之后,會(huì)跟Broker建立連接,發(fā)送消費(fèi)消息的通知。此時(shí)MessageQueue才會(huì)將這個(gè)消息移除。1503常用技術(shù)選型(2)Elasticsearch它是一個(gè)基于ApacheLucene實(shí)現(xiàn)的開(kāi)源的實(shí)時(shí)分布式搜索和分析引擎。SpringBoot的項(xiàng)目也提供了集成方式:spring-boot-starter-data-elasticsearch以及spring-data-elasticsearch。1603常用技術(shù)選型(3)Kafka它是一個(gè)高性能的基于發(fā)布/訂閱的跨語(yǔ)言分布式消息系統(tǒng)。Kafka的開(kāi)發(fā)語(yǔ)言為Scala。其比較重要的特性是:高吞吐量、低延遲:Kafka每秒可以處理幾十萬(wàn)條消息,它的延遲最低只有幾毫秒,每個(gè)topic可以分多個(gè)partition,consumergroup對(duì)partition進(jìn)行consume操作。其高吞吐的特性,除了可以作為微服務(wù)之間的消息隊(duì)列,也可以用于日志收集、離線分析、實(shí)時(shí)分析等;可擴(kuò)展性:Kafka集群支持熱擴(kuò)展;持久性、可靠性:消息被持久化到本地磁盤(pán),并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失;容錯(cuò)性:允許集群中節(jié)點(diǎn)失敗(即若副本數(shù)量為n,則允許n-1個(gè)節(jié)點(diǎn)失敗);高并發(fā)性:支持?jǐn)?shù)千個(gè)客戶端同時(shí)讀寫(xiě)。1703常用技術(shù)選型(4)ZooKeeper它是一個(gè)分布式、開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google(谷歌)Chubby的一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop和HBase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。ZooKeeper的架構(gòu)通過(guò)冗余服務(wù)實(shí)現(xiàn)高可用性。1803常用技術(shù)選型4.數(shù)據(jù)存儲(chǔ)(1)MySQL它通常在普通的業(yè)務(wù)庫(kù),數(shù)量不大的情況下會(huì)選擇MySQL,可實(shí)現(xiàn)數(shù)據(jù)庫(kù)拆分。(2)Redis它是一個(gè)開(kāi)源、內(nèi)存存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,通常在SpringCloud中作為Pub/Sub異步通信、緩存或主數(shù)據(jù)庫(kù)和配置服務(wù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論