云原生入門開發者認證學習筆記之微服務架構介紹(云原生微服務框架)

      網友投稿 817 2022-05-30

      寫在前面

      理解不足小伙伴幫忙指正

      傍晚時分,你坐在屋檐下,看著天慢慢地黑下去,心里寂寞而凄涼,感到自己的生命被剝奪了。當時我是個年輕人,但我害怕這樣生活下去,衰老下去。在我看來,這是比死亡更可怕的事。--------王小波

      企業應用架構演進

      應用向CloudNative演進,微服務是CloudNative的事實標準。

      第一代是單體架構,當然它有很多例如緊耦合、封閉架構等各種各樣的問題。

      第二代是SOA架構,可能大型企業級的應用里面會比較多,提供了很多種支持,實際上我們看到SOA架構的時候,它已經強調松耦合了。

      第三代微服務架構,它實際上是變得更加靈活了。在業務變化非常快速的背景之下,微服務架構是一個非常好的解決方案,微服務的核心一敏捷、靈活、精準彈性。微服務架構出現的最大的意義是不斷地提高交付效率,縮短交付周期。

      什么是微服務架構

      從架構師的角度:微服務架構就是把一個大系統按業務功能分解成多個職責相對單一的小系統,并利用簡單的方法使多個小系統相互協作,組合成一個大系統。

      云原生入門級開發者認證學習筆記之微服務架構介紹(云原生微服務框架)

      在微服務架構中,只需要在特定的某種服務中增加所需功能,而不影響整體進程的架構。

      從技術專家的角度:微服務架構就是把相同業務領域或因相同原因而變化的功能聚合到一起,而把不同業務領域或因不同原因而變化的功能分離開并利用輕量化機制(通常為HTTP RESTful APl)實現通信。

      微服務可以在“自己的程序”中運行,并通過“輕量級設備與HTTP型API進行溝通”。關鍵在于該服務可以在自己的程序中運行。

      微服務的定義

      2014年,Martin Fowler與James Lewis共同提出了微服務的概念(實際上2009年Netflix就已經開始實踐微服務了,但是當時沒有微服務一詞),定義了微服務是由以單一應用程序構成的小服務,自己擁有自己的行程與輕量化處理,服務依業務功能設計,以全自動的方式部署,與其他服務使用HTTP API通信。同時服務會使用最小的規模的集中管理(例如Docker)能力,服務可以用不同的編程語言與數據庫等組件實現。

      微服務架構是一種架構模式,將單體應用劃分成一組小的服務,通過服務之間互相協作,共同實現系統功能·

      每個服務運行在其獨立的進程中,服務間采用輕是級的通信機制協作(通常是基于Restful Apl)。

      每個服務都圍繞著具體業務進行構建,由獨立的小團隊負責設計、開發、測試,并可以獨立部署到生產環境·

      微服務的特征

      微服務最主要的就是:小、獨、輕、松。就是說: 微服務要小,模塊邊界要更清晰, 支持獨立部署獨立演進,每個微服務都應該可以獨立部署,獨立演進,獨立升級的。另外允許技術多樣性,就是在微服務構成的一個整體的應用系統里面,每一塊的業務要用你最適合的技術去實現,而不是都統一用一種語言去實現,這也是微服務非常重要的一個特點。

      單體架構

      MVC架構:MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟件設計規范,用一種捋業務邏輯、數據、顯示分離的方法組織代碼。在J2EE領域,最經典的MVC架構之一就是Spring+Struts(SpringMVC)+ORM(Hibernate/MyBatis)。

      經典MVC模式中,M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是捋M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。其中,View的定義比較清晰,就是用戶界面。

      MVC開始是存在于桌面程序中的,M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是捋M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。

      單體架構的優缺點

      從單體架構演進到SOA服務化架構

      SOA是指Service Oriented Architecture

      SOA服務化架構

      面向服務架構(SOA)是一個組件模型,它捋應用程序的不同功能單元(稱為服務)進行拆分,并通過這些服務之間定義良好的接口和協議聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。

      SOA 有哪些不足

      總線ESB的弊端: 我們倆的小區是隔壁,但是要開車去你家,還要到高速上兜一圈。

      微服務架構

      微服務架構是一項在云中部署應用和服務的新技術。

      微服務可以在“自己的程序”中運行,并通過“輕量級設備與HTTP型API進行溝通”。關鍵在于該服務可以在自己的程序中運行。

      微服務架構與單體架構

      微服務與單體架構區別:

      單體架構所有的模塊全都耦合在一塊,代碼量大,維護困難,微服務每個模塊就相當于一個單獨的項目,代碼量明顯減少,遇到問題也相對來說比較好解決。

      單體架構所有的模塊都共用一個數據庫,存儲方式比較單一,微服務每個模塊都可以使用不同的存儲方式(比如有的用redis,有的用mysql等),數據庫也是單個模塊對應自己的數據庫。

      單體架構所有的模塊開發所使用的技術一樣,微服務每個模塊都可以使用不同的開發技術,開發模式更靈活。

      微服務架構于SOA架構

      在傳統的IT行業軟件大多都是各種獨立系統的堆砌,這些系統的問題總結來說就是擴展性差,可靠性不高,維護成本高。到后面引入了SOA服務化,但是,由于SOA早期均使用了總線模式,這種總線模式是與某種技術棧強綁定的,比如:J2EE。這導致很多企業的遺留系統很難對接,切換時間太長,成本太高,新系統穩定性的收斂也需要一些時間。最終SOA看起來很美,但卻成為了企業級奢侈品,中小公司都望而生畏。

      相比傳統SOA的服務實現方式,微服務更具有靈活性、可實施性以及可擴展性,其強調的是一種獨立測試、獨立部署、獨立運行的軟件架構模式。

      微服務架構誕生于SOA,提倡將單一的應用程序按功能劃分為更小的服務單元,服務之間采用通用輕量化機制進行通信,能夠將服務單獨部署到生產環境。

      互聯網行業的高速發展,需求變化快,用戶群體大,要求系統架構上能靈活構建,易于擴展,還要考慮可伸縮性,高可用性等等。這些需求催生出微服務架構。

      微服務不是銀彈,同樣前面說的單體應用和SOA架構也沒有過時,需要結合自己的業務場景來選擇合適的架構。

      微服務的優勢和挑戰

      在微服務架構中,只需要在特定的某種服務中增加所需功能,而不影響整體進程的架構。

      典型微服務框架介紹

      常見的微服務框架

      Spring Cloud是一系列框架的有序集合,具有豐富的生態。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,主要功能包括服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等。

      ServiceComb作為功能完善的微服務框架,包括應用框架代碼生成、服務注冊發現、服務配置管理、服務監控、服務調用追蹤等功能,為開發者提供端到端的應用DevOps體驗。

      Apache Dubbo是一款高性能、輕量級的開源服務框架,提供了六大核心能力:面向接口代理的高性能RPC調用,智能容錯和負載均衡,服務自動注冊和發現,高度可擴展能力,運行期流量調度,可視化的服務治理與運維。

      微服務的基本思想在于考慮圍繞著業務領域組件來創建應用,這些應用可獨立地進行開發、管理和加速。在分散的組件中使用微服務云架構和平臺,使部署、管理和服務功能交付變得更加簡單。

      微服務架構模式

      微服務之間的RPC通信。

      分布式微服務實例和服務發現。

      配置外置,動態、集中的配置管理。

      提供熔斷、隔離、限流、負載均衡等微服務治理能力。

      分布式事務管理能力。

      調用鏈、集中日志采集和檢索。

      華為云應用管理與運維服務

      微服務之間的RPC通信(Remote Procedure Call,遠程過程調用)。微服務架構模式要求微服務之間通過RPC進行通信,不采用其他傳統的通信方式,比如共享內存、管道等。常見的RPC通信協議包括REST、gRPC、Web Service等。使用RPC通信,能夠降低微服務之間的耦合,提升系統的開放性,減少技術選型的限制。一般建議采用業界標準協議,比如REST。對于性`能要求非常高的場景,也可以考慮私有協議。

      分布式微服務實例和服務發現。微服務架構特別強調架構的彈性,業務架構需要支持微服務多實例部署來滿足業務流量的動態變化。微服務設計一般會遵循無狀態設計原則,符合該原則的微服務擴充實例,能夠帶來處理性能的線性提升。

      配置外置及動態、集中的配置管理。配置管理中間件給所有微服務提供統一的配置管理視圖,有效降低配置管理的復雜性。搭配治理控制臺,可以在微服務運行態對微服務的行為進行調整。

      提供熔斷、隔離、限流、負載均衡等微服務治理能力。微服務架構存在一些常見的故障模式,通過這些治理能力,能夠減少故障對于整體業務的影響,避免雪崩效應。

      分布式事務管理能力。常見的分布式事務處理模式包括Saga、TCC、無侵入式等。分布式事務管理可以降低處理分布式事務一致性問題的難度。

      調用鏈、集中日志采集和檢索。查看日志仍然是分析系統故障最常用的手段,調用鏈信息可以幫助界定故障和分析性能瓶頸。

      為什么需要Spring Cloud?

      Spring Cloud來源于Spring,質量、穩定性、持續性都可以得到保證。

      Spirng Cloud天然支持Spring Boot,更加便于業務落地。

      Spring Cloud發展非常的快。

      Spring Cloud是Java領域最適合做微服務的框架。

      相比于其它框架,Spring Cloud對微服務周邊環境的支持力度最大。

      對于中小企業來講,使用門檻較低。

      Spring Cloud的優勢分析

      優點:

      產出于Spring大家族,Spring在企業級開發框架中無人能敵,來頭很大,可以保證后續的更新、完善。

      有Spring Boot這個獨立干將可以省很多事,大大小小的活spring boot都搞的挺不錯。作為一個微服務治理的大家伙,考慮的很全面,幾乎服務治理的方方面面都考慮到了,方便開發。

      Spring Cloud 活躍度很高,教程很豐富,遇到問題很容易找到解決方案。

      輕輕松松幾行代碼就完成了熔斷、均衡負責、服務中心的各種平臺功能。

      缺點:

      Spring Cloud也有一個缺點,只能使用Java開發,不適合小型獨立的項目。

      Spring Cloud對于中小型互聯網公司來說是一種福音,因為這類公司往往沒有實力或者沒有足夠的資金投入去開發自己的分布式系統基礎設施,使用Spring Cloud一站式解決方案能在從容應對業務發展的同時大大減少開發成本。同時,隨著近幾年微服務架構和Docker容器概念的火爆,也會讓Spring Cloud在未來越來越“云”化的軟件開發風格中立有一席之地,尤其是在五花八門的分布式解決方案中提供了標準化的、全站式的技術方案,意義可能會堪比當年Servlet規范的誕生,有效推進服務端軟件系統技術水平的進步。

      Spring Cloud 框架

      從上圖可以看出Spring Cloud各個組件相互配合,合作支持了一套完整的微服務架構。

      其中Eureka負責服務的注冊與發現,很好地將各服務連接起來。

      Hystrix負責監控服務之間的調用情況,連續多次失敗進行熔斷保護。

      Hystrix dashboard,Turbine 負責監控Hystrix的熔斷情況,并給予圖形化的展示。

      Spring Cloud Config提供了統一的配置中心服務。當配置文件發生變化的時候,Spring Cloud Bus負責通知各服+ 務去獲取最新的配置信息。

      所有對外的請求和服務,我們都通過Zuul來進行轉發,起到API網關的作用。

      最后我們使用Sleuth+Zipkin將所有的請求數據記錄下來,方便我們進行后續分析。

      Spring Cloud從設計之初就考慮了絕大多數互聯網公司架構演化所需的功能,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等。這些功能都是以插拔的形式提供出來,方便我們系統架構演進的過程中,可以合理的選擇需要的組件進行集成,從而在架構演進的過程中會更加平滑、順利。

      Spring Cloud提供了標準化的、全站式的技術方案,意義可能會堪比當前Servlet規范的誕生,有效推進服務端軟件系統技術水平的進步。

      核心概念

      服務實例將自身服務信息注冊到注冊中心。這部分服務信息包括服務所在主機IP和提供服務的Port,以及暴露服務自身狀態以及訪問協議等信息。

      服務實例請求注冊中心獲取所依賴服務信息。服務實例通過注冊中心,獲取到注冊到其中的服務實例的信息,通過這些信息去請求它們提供的服務。

      Spring Cloud Netflix是對Netflix開發的一套分布式服務框架的封裝,包括服務的發現和注冊,負載均衡、斷路器、REST客戶端、請求路由等。

      負載均衡是高可用網絡基礎架構的關鍵組件,通常用于將工作負載分布到多個服務器來提高網站、應用、數據庫或其他服務的性能和可靠性。

      Ribbon主要為客戶一側提供軟件負載均衡算法,客戶端組件包括連接超時、重試、重試算法等等,并帶有可插拔/定制的負載均衡組件策略,并集成一些功能,比如使用Archaius完成運行時配置。

      微服務網關,介于客戶端與服務器之間的中間層,所有的外部請求都會先經過微服務網關。客戶端只需要與網關交互,只知道一個網關地址即可。

      將所有API調用統一接入到API網關層,由網關層統一接入和輸出。

      一個網關的基本功能有:統一接入、安全防護、協議適配、流量管控、長短鏈接支持、容錯能力。

      有了網關之后,各個API服務提供團隊可以專注于自己的的業務邏輯處理,而API網關更專注于安全、流量、路由等問題。

      配置中心就是把項目中各種配置、各種參數、各種開關,全部都放到一個集中的地方進行統一管理,并提供一套標準的接口。

      當各個服務需要獲取配置的時候,就來配置中心的接口拉取。

      當配置中心中的各種參數有更新的時候,也能通知到各個服務實時的過來同步最新的信息,使之動態更新。

      Spring Cloud Config將配置信息中央化保存, 配置Spring Cloud Bus可以實現動態修改

      配置文件

      熔斷:這一概念來源于電子工程中的斷路器(Circuit Breaker)。在互聯網系統中,當下游服務因訪問壓力過大而響應變慢或失敗,上游服務為了保護系統整體的可用性,可以暫時切斷對下游服務的調用。這種犧牲局部,保全整體的措施就叫做熔斷。

      客戶端訪問A服務,而A服務需要調用B服務,B服務需要調用C服務,由于網絡原因或者自身的原因,如果B服務或者C服務不能及時響應,A服務將處于阻塞狀態,直到B服務和C服務響應。此時若有大量的請求涌入,容器的線程資源會被消耗完畢,導致服務癱瘓。

      服務與服務之間的依賴性,故障會傳播,造成連鎖反應,會對整個微服務系統造成災難性的嚴重后果,這就是服務故障的“雪崩”效應。

      隨著微服務架構的流行,服務按照不同的維度進行拆分,一次請求往往需要涉及到多個服務。互聯網應用構建在不同的軟件模塊集上,這些軟件模塊,有可能是由不同的團隊開發、可能使用不同的編程語言來實現、有可能布在了幾千臺服務器,橫跨多個不同的數據中心。因此,就需要對一次請求涉及的多個服務鏈路進行日志記錄,性能監控即鏈路追蹤。

      Spring Cloud Sleuth主要功能就是在分布式系統中提供追蹤解決方案,并且兼容支持了zipkin。

      Spring Cloud的技術實現

      Spring Cloud的子項目,大致可分成兩類,一類是對現有成熟框架”Spring Boot化”的封裝和抽象,也是數量最多的項目;第二類是開發了一部分分布式系統的基礎設施的實現,如Spring Cloud Stream扮演的就是kafka,ActiveMQ這樣的角色。對于我們想快速實踐微服務的開發者來說,第一類子項目就已經足夠使用。

      Spring Cloud Netflix是對Netflix開發的一套分布式服務框架的封裝,包括服務的發現和注冊,負載均衡、斷路器、REST客戶端、請求路由等。

      Spring Cloud Config捋配置信息中央化保存,配置Spring Cloud Bus可以實現動態修改配置文件

      Spring Cloud Stream分布式消息隊列,是對Kafka,MQ的封裝Spring Cloud Security對Spring Security的封裝,并能配合Netflix使用Spring Cloud Zookeeper對Zookeeper的封裝,使之能配置其它Spring Cloud的子項目使用

      Spring Cloud Eureka是Spring Cloud Netftix微服務套件中的一部分,它基于Netflix Eureka 做了二次封裝,主要負責完成微服務架構中的服務治理功能。

      Spring Cloud微服務典型部署

      不同的應用可以通過gateway進行交互。

      也可以通過gateway為前端提供接口。

      微服務引擎 CSE

      微服務引擎(Cloud ServiceEngine,CSE),是用于微服務應用的云中間件,為用戶提供注冊發現、服務治理、配置管理等高性能和高韌性的企業級云服務能力。

      CSE可無縫兼容Spring Cloud、ServiceComb等開源生態。

      用戶也可結合其他云服務,快速構建云原生微服務體系,實現微服務應用的快速開發和高可用運維。

      CSE一般和數據庫、緩存和消息中間件同時使用,完成業務功能的開發。

      AOM、APM、LTS等工具,則為業務提供運維能力,幫助檢測業務故障、分析故障原

      因。

      CSE功能介紹

      CSE可以支持多種語言。

      CSE功能組件與Spring Cloud框架的關系

      Spring Cloud Huawei的位置和作用

      Spring Cloud Huawei是構建在Spring Cloud應用之上,基于Spring Cloud現有能力構建的,Spring Cloud huawei提供的一系列新的組件。目的是讓開發者以比較低的成本遷移到華為云微服務引擎CSE。

      Spring cloud huawei作為依賴被引用。

      開發使用spring cloud框架。

      接入到CSE中。

      CSE中包含服務注冊發現、配置、治理功能。

      Spring Cloud Huawei功能介紹

      微服務代碼框架

      Spring Cloud huawei接入流程

      引入依賴包,引入Spring Cloud Huawei依賴。

      接入服務注冊發現中心。

      接入配置中心。

      華為云應用管理與運維服務

      華為云應用管理與運維平臺功能框架

      華為云應用管理與運維平臺ServiceStage提供應用全生命周期管理,實現業務敏捷DevOps,并通過獨有的契約能力實現了微服務治理與業務代碼分離,幫助企業開發者聚焦業務邏輯。ServiceStage聚焦行業使能,攜手合作伙伴一起打造面向數字政府、智慧金融、數字工業、智慧零售等行業的端到端解決方案。

      華為云應用管理與運維平臺流程

      ServiceStage是一個應用托管和微服務管理平臺,可以幫助企業簡化部署、監控、運維和治理等應用生命周期管理工作。ServiceStage面向企業提供微服務、移動和Web類應用開發的全棧解決方案,幫助企業數字化快速轉型。

      云原生 開發者 微服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:數據倉庫之維度建模介紹-- 未寫完,待更新(數據倉庫的維度建模)
      下一篇:Helm安裝和項目使用(helm安裝部署)
      相關文章
      亚洲精品欧美综合四区| 亚洲精品美女久久久久9999| 亚洲一卡二卡三卡| 亚洲人色大成年网站在线观看| 久久精品国产亚洲AV麻豆~| 狠狠色伊人亚洲综合成人| 亚洲人成精品久久久久| 亚洲综合无码精品一区二区三区| 亚洲性在线看高清h片| 亚洲精品国产高清不卡在线| 亚洲A∨午夜成人片精品网站| 国产成人久久精品亚洲小说| 无码欧精品亚洲日韩一区夜夜嗨| 国产精品亚洲AV三区| 国产精品亚洲专区一区| 亚洲av区一区二区三| 亚洲女人被黑人巨大进入| 亚洲毛片网址在线观看中文字幕 | 亚洲日韩精品无码专区网站| 亚洲精品成人区在线观看| 亚洲人成人网站在线观看| 国产亚洲AV手机在线观看| 国产亚洲精品一品区99热| 亚洲成AV人片在线观看| 亚洲国产综合专区电影在线 | 亚洲AV无码乱码在线观看牲色| 亚洲精品视频在线看| 国产亚洲精品a在线观看| 亚洲精品tv久久久久久久久| 久久久久亚洲精品无码系列| 亚洲一级二级三级不卡| 亚洲妓女综合网99| 亚洲综合av一区二区三区| 国产亚洲欧美在线观看| 亚洲精品亚洲人成在线观看下载 | 亚洲av无码一区二区三区天堂古代| 亚洲免费黄色网址| 亚洲AV无码专区在线观看成人| 亚洲国产成人久久一区久久| 国产自偷亚洲精品页65页| 日韩亚洲AV无码一区二区不卡|