国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

微服務及技術棧介紹

馬哥Linux運維 ? 來源:博客園 ? 作者: 可均可可 ? 2021-07-29 16:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡介 這些年軟件的設計規模越來越龐大,業務需求也越來越復雜,針對系統的性能、高吞吐率、高穩定性、高擴展等特性提出了更高的要求。可以說業務需求是軟件架構能力的第一推動力,由于這些因素導致了軟件架構思想和相關技術也在發生著巨變。

這些變化反應在軟件架構行業里,就是我們開始越來越多的聽到了很多新的詞匯,比如:“分布式”、“SOA”、“微服務”、“中臺”等概念。 今天我就把我學習微服務的過程記錄下來,包括所有技術的實現細節和個人的理解。

俗話說:好記性,不如爛筆頭,以防自己忘記,以后可以查詢。當然,這些東西有很多東西都是自己的理解,里面的插圖也是自己畫的,可能會有一些有失偏頗的地方,當然希望有高手可以指正,不靈賜教,大家共同進步。

架構發展歷程

現在的科學技術可以說是日新月異,發展迅速。相對于我們軟件設計行業也在發生著巨變,業務越來越復雜,需求越來越龐大、繁雜,軟件架構和部署的規模也發生著翻天覆地的變化,作為軟件架構思想之一的“微服務架構”也在按著自己的規律進化著,接下來我們就簡單的了解一下“微服務架構”發展經歷的三個時期,這些只是個人理解。

單體架構(Monolithic)

單體應用時代:應用程序無論如何分層,都是一個解決方案,或者說都是一個項目,這里的“解決方案”和“項目”不是我們使用的Visual Studio里面的概念,最終的程序代碼都會在一個進程里運行。

優點:開發簡單,集中管理,沒有分布式的損耗,都是系統進程內的通信。 缺點:不好維護,升級困難,耦合嚴重,無法應付高并發和大數據場景,無法快捷迭代。 只能采用同一種技術,很難用不同的語言或者相同語言不同版本開發不同模塊。

系統耦合性太強,其中一個模塊有問題,這個系統就會癱瘓,一個模塊升級,整個系統就得停機維護。

要上線,必須一起上線,互相等待,無法快速相應市場需求。

集群負擔大,如果想要集群,只能對整個系統進行集群,即使一個模塊有壓力。 垂直拆分 隨著業務規模的越來越龐大,系統設計就越來越復雜,大的系統就開始進行業務的垂直拆分。比如:有專門做商品秒殺的部門,有專門做生鮮商品的部門,有專門做超市的部門,等等,當然這是根據部門天生劃分的,也有根據業務需求進行系統劃分的。

優點:垂直拆分,系統獨立部署和維護,每個系統在自己進程內執行,分而治之。 缺點:拆分越多,存儲越復雜,系統間重復的東西也越多,單個系統還是單體模式。 分布式服務 隨著業務系統的越來越龐大,軟件系統設計起來越來越復雜。

為了避免過度復雜的業務需求,開始對業務系統的進行垂直拆分,形成多個獨立的業務系統,如果多個系統之間要通信,可以通過跨進程的技術完成通訊。但是垂直拆分也導致了大量重復代碼、重復模塊的產生,比如:用戶模塊、日志模塊、支付模塊、認證授權模塊等,這樣分散的代碼也給系統的維護和升級帶來了困難。

我們對業務重新劃分,把獨立的模塊接口化、服務化,提高重用,這個時候,我們就開始進入了分布式服務的時代。(分布式的第一要務就是不要分布式)

優點: 獨立進程部署,獨立進程運行,獨立演化。服務之間可以做到高內聚,低耦合。

獨立開發和維護,業務解耦,無論是業務系統還是分布式服務都獨立演化。

分布式管理

隔離性增強

由一系列服務組裝成系統,不用重復建設,模塊、代碼可以復用。 缺點: 數據一致性(多服務完成一個任務)和系統的可用性(集群)成為問題

數據庫也進行了拆分

維護、設計、架構成本增加,調試、糾錯更難

網絡傳輸分布式損耗成本

不適合高并發和大數據的環境 微服務架構 微服務的出現時分布式架構已經很成熟了,架構中各種問題已經有了很成熟的解決方案,對于現在的業務系統來說,分布式架構已經變成了一種常規手段,這個時候,微服務就出現了。微服務架構是一個用分布式服務拆分業務邏輯,完成解耦的架構模式(架構風格)。

微服務肯定是分布式的一種,是在分布式技術成熟之后,然后把分布式當成解耦手段來架構系統——因為拆分的服務很細致,服務數量規模開始變多了,服務的體量開始縮小了,由以前幾個大的服務,轉變為多個獨立運行的、原子性質的服務。

微服務最重要的特性是: 可用性:描述一個系統在一段時間內提供有用資源的能力,從而減少停工時間,而保持其服務的高度可用性。

伸縮性:根據需求動態添加和刪除系統中資源的能力,是水平或垂直擴展的專門實現。 集群(負載均衡)可以解決系統的高可用和伸縮特性。 優點: 可以使用不同語言或者相同語言的不同版本開發各個模塊。

系統耦合性低,各個模塊分而治之,獨立部署,獨立發布,獨立維護。

可以更快的相應市場的需求,更符合敏捷開發。

可以對不同模塊使用集群策略,哪里有問題治哪里。 缺點: 開發難度更大,系統結構更復雜。

運行效率低,網絡調用成本很大。 SOA面向服務架構 Service-Oriented Architecture面向服務架構:是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,并通過這些服務之間定義良好的接口和協議聯系起來。如圖:

微服務架構的發展歷程

我們要解決微服務的高可用和可伸縮的兩個問題,自然就會想到通過集群來實現,這個思路沒有錯。如果我們實現了服務集群,那另外兩個問題就會出現,這兩個問題也導致了微服務架構的發展版本的差異。

第一個:服務的發現問題,調用方如何發現服務,有了新的服務,我們如何知道,有服務實例掉線,我們如何曉得,發現服務就很重要,這個是基礎問題,第一個問題不解決,第二個問題也沒有辦法實現;

第二個:如何調用服務,如何管理那么多的服務實例。有那么多的集群實例,也就有那么多的服務實例,我們該怎么去調用這些服務呢?多個服務調用的關系如何呢? 由于這些問題,那我們就看看微服務架構的三個版本是如何解決的。

集中式代理——Nginx V1.0版本(服務注冊/服務發現——手動)

服務發現,手動修改配置文件,重新啟動。

負載均衡,可以輪訓、權重、哈希等等。

服務新增無法發現,需要手動配置,服務掉線可以自動檢查。

客戶端的實現很簡單,不需要額外的代碼,簡單,高效。 客戶端嵌入——Consul V2.0版本(服務注冊/服務發現——自動——服務治理)

服務注冊與發現,動態增加,自動完成。

健康檢查,可以查看損壞服務,去掉服務,自動完成。

負載均衡,Consul返回所有活動服務實例,客戶端自己實現負載均衡。 功能強大,自動發現-自動下線,客戶端集成比較復雜,負載均衡在客戶端實現。 服務網格——Service Mesh V3.0——技術不成熟,華為+唯品會,Istio

SideCar服務管理服務實例的注冊和發現,服務實例的治理和調用。Service Mesh’s Control Plan管理所有的SideCar。這個技術我就不多談了,網上的資料也很多,目前這個技術還不是很成熟,使用的范圍也不是很廣,只有一些大的公司有過使用,比如:微軟等。

微服務架構必備技術棧

微服務是一種軟件設計、架構思想,當然,里面也包含了相關技術點要解決當前要務。學習微服務,我們不能空口而談,一定要落實到具體的技術棧上。當今使用比較多兩個技術體系,一個是Java,另外一個就是Net,廢話不多說,我是使用微軟相關技術棧的軟件架構人員,當然使用的“微服務”架構技術棧也都是微軟的。

今天我就把相關“微服務架構”所用到的技術棧羅列出來,我也要說明一下,微服務架構里面的很多技術是和開發語言無關的,無論是.Net還是Java平臺都可以使用。以后,一步一步的針對每項技術在做深入研究。

微服務架構——服務通信

WebService、WCF、WebAPI,甚至可以是ASHX,ASPX,這都是微軟本身的技術體系,沒什么可說的。

主動觸發

數據序列化傳遞

跨平臺

跨語言

Http穿透防火墻

微服務架構——進程通信

Net Remoting:Net平臺督郵的,不支持跨平臺。

gRPC:高性能、開源和通用RPC框架,面向服務端和移動端,基于HTTP/2設計,推薦使用。

微服務架構——API網關服務(Ocelot) API網關——它是系統的暴露在外部的一個訪問入口。這個有點像代理訪問的家伙,就像一個公司的門衛承擔著尋址、限制進入、安全檢查、位置引導、等等功能。Ocelot是一個用.NET Core實現并且開源的API網關,它功能強大,包括了:路由、請求聚合、服務發現、認證、鑒權、限流熔斷、并內置了負載均衡器與Service Fabric、Butterfly Tracing集成。這些功能只都只需要簡單的配置即可完成。如圖:

官網:https://ocelot.readthedocs.io/en/latest/index.html

微服務架構——認證&授權

現在的應用開發層出不窮,基于瀏覽器的網頁應用,基于微信的公眾號、小程序,基于iOSAndroid的App,基于Windows系統的桌面應用和UWP應用等等,這么多種類的應用,就給應用的開發帶來的挑戰,我們除了分別實現各個應用外,我們還要考慮各個應用之間的交互,通用模塊的提煉,其中身份的認證和授權就是每個應用必不可少的的一部分。

而現在的互聯網,對于信息安全要求又十分苛刻,所以一套統一的身份認證和授權就至關重要。 IdentityServer4就是這樣一個框架,IdentityServer4是為ASP.NET CORE量身定制的實現了OpenId Connect和OAuth2.0協議的認證授權中間件。

項目地址:https://github.com/IdentityServer/IdentityServer4

微服務架構——瞬態故障處理

Polly它一款強大的類庫,Polly是一種.NET彈性和瞬態故障處理庫,允許我們以非常順暢和線程安全的方式來執諸如行重試,斷路,超時,故障恢復等策略。Polly針對.NET 4.0,.NET 4.5和.NET Standard 1.1以及.NET Core實現,該項目作者現已成為.NET基金會一員,項目一直在不停迭代和更新,你值得擁有。 項目地址:https://github.com/App-vNext/Polly

微服務架構——分布式追蹤

隨著微服務架構的流行,一些微服務架構下的問題也會越來越突出,比如一個請求會涉及多個服務,而服務本身可能也會依賴其他服務,整個請求路徑就構成了一個網狀的調用鏈,而在整個調用鏈中一旦某個節點發生異常,整個調用鏈的穩定性就會受到影響,所以會深深的感受到“銀彈”這個詞是不存在的,每種架構都有其優缺點。

面對以上情況,我們就需要一些可以幫助理解系統行為、用于分析性能問題的工具,以便發生故障的時候,能夠快速定位和解決問題,這時候APM(應用性能管理)工具就該閃亮登場了。 項目地址:https://github.com/SkyAPM/SkyAPM-dotnet

微服務架構——分布式日志

一般我們需要進行日志分析場景:直接在日志文件中grep、awk就可以獲得自己想要的信息。但在規模較大也就是日志量多而復雜的場景中,此方法效率低下,面臨問題包括日志量太大如何歸檔、文本搜索太慢怎么辦、如何多維度查詢。

需要集中化的日志管理,所有服務器上的日志收集匯總。常見解決思路是建立集中式日志收集系統,將所有節點上的日志統一收集,管理,訪問。 大型系統通常都是一個分布式部署的架構,不同的服務模塊部署在不同的服務器上,問題出現時,大部分情況需要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日志系統,可以提高定位問題的效率。

Exceptionless是一個開源的實時的日志收集框架,它可以應用在基于ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC等技術棧的應用程序中,并且提供了Rest接口可以應用在Javascript,Node.js中。

它將日志收集變得簡單易用并且不需要了解太多的相關技術細節及配置。在以前,我們做日志收集大多使用Log4net,Nlog等框架,在應用程序變得復雜并且集群的時候,可能傳統的方式已經不是很好的適用了,因為收集各個日志并且分析他們將變得麻煩而且浪費時間。

現在Exceptionless團隊給我們提供了一個更好的框架來做這件事情,我認為這是非常偉大并且有意義的,感謝他們。

官網:http://exceptionless.com/ GitHub:https://github.com/exceptionless/Exceptionless

ELK是三個開源軟件的縮寫,分別為:Elasticsearch、Logstash以及Kibana,它們都是開源軟件。不過現在還新增了一個Beats,它是一個輕量級的日志收集處理工具(Agent),Beats占用資源少,適合于在各個服務器上搜集日志后傳輸給Logstash,官方也推薦此工具,目前由于原本的ELK Stack成員中加入了Beats工具所以已改名為Elastic Stack。推薦使用。

微服務架構——分布式配置中心

Apollo(阿波羅)是攜程框架部門研發的配置管理平臺,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規范的權限、流程治理等特性。 服務端基于Spring Boot和Spring Cloud開發,打包后可以直接運行,不需要額外安裝Tomcat等應用容器。

Java客戶端不依賴任何框架,能夠運行于所有Java運行時環境,同時對Spring環境也有較好的支持。 .Net客戶端不依賴任何框架,能夠運行于所有.Net運行時環境。 項目地址:https://github.com/ctripcorp/apollo/

微服務架構——分布式鎖

分布式鎖的解決方案有很多,我在這里就羅列一些,我會在以后的實踐中實現這些技術點。

Consul可以實現分布式鎖

Redis可以實現分布式鎖,推薦使用。

ZooKeeper可以實現分布式鎖

數據庫可以實現分布式鎖

微服務架構——分布式事務 分布式事務的實現方式也不少,以后努力學習吧。

2PC(two-phase commit protocol,強一致性,沒有可用性)

3PC

TCC(Try-Confirm-Cancel)

本地消息表,推薦RabbitMQ

Saga模式

本地消息表:MQ分布式事務—本地消息表—基于消息的一致性。

上游投遞消息

下游獲取消息

上游投遞穩定性

下游接受穩定性

微服務架構——容器化 Docker是一個開源的應用容器引擎,可以打包應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的Linux和Windows機器上,也可以實現虛擬化。 Docker使用客戶端-服務器(C/S)架構模式,使用遠程API來管理和創建Docker容器。

Docker容器通過Docker鏡像來創建。容器與鏡像的關系類似于面向對象編程中的對象與類。 Docker采用C/S架構Docker daemon作為服務端接受來自客戶的請求,并處理這些請求(創建、運行、分發容器)。

客戶端和服務端既可以運行在一個機器上,也可通過socket或者RESTful API來進行通信。 Docker daemon一般在宿主主機后臺運行,等待接收來自客戶端的消息。Docker客戶端則為用戶提供一系列可執行命令,用戶用這些命令實現跟Docker daemon交互。

微服務架構——容器編排 Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便對應用請求進行負載均衡。 在Kubernetes中,我們可以創建多個容器,每個容器里面運行一個應用實例,然后通過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。

Kubernetes也可以理解為Docker的編排容器,是管理應用的全生命周期的工具,從創建應用/部署,應用提供服務,擴容縮容,更新,都非常的方便,而且可以做到故障自愈。 官網:https://kubernetes.io/docs/home/ 微服務架構——CI/CD Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,主要用于持續、自動的構建/測試軟件項目、監控外部任務的運行。 官網:https://www.jenkins.io/

原文鏈接:https://www.cnblogs.com/PatrickLiu/p/13925259.html

(版權歸原作者所有,侵刪)

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴

原文標題:微服務及技術棧介紹

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于OpenTelemetry的全鏈路追蹤微服務可觀測性實踐

    微服務拆分到第三年,我們的服務數量從最初的5個膨脹到了47個。一個用戶下單請求要經過API Gateway -> 用戶服務 -> 商品服務 -> 庫存
    的頭像 發表于 02-26 15:43 ?160次閱讀

    華納云VPS容器服務網格流量管理:實現微服務高效路由

    在云計算和微服務架構日益普及的今天,華納云香港VPS憑借其優越的地緣優勢和網絡自由,成為眾多企業部署容器化應用的熱門選擇。復雜的微服務架構帶來了流量管理的巨大挑戰。本文將深入探討如何利用容器服務
    的頭像 發表于 10-16 17:09 ?531次閱讀

    基于RFID與微服務架構的智能倉庫管理系統:實現倉儲數據的全鏈路精準采集與管控

    針對傳統倉儲管理中普遍存在的賬實不符、流程效率低下及信息孤島等問題,本文介紹一套基于RFID射頻識別技術微服務軟件架構的智能倉庫管理系統。系統通過“一物一碼”的電子身份標識,實現了對物資從入庫
    的頭像 發表于 10-13 11:18 ?771次閱讀
    基于RFID與<b class='flag-5'>微服務</b>架構的智能倉庫管理系統:實現倉儲數據的全鏈路精準采集與管控

    軟通動力數據庫專業服務解決方案亮相2025數博會

    8月28日,2025中國國際大數據產業博覽會(數博會)在貴陽開幕,軟通動力攜數據庫專業服務解決方案亮相盛會,全面展示從數據庫遷移部署、性能優化、容災備份到智能運維的全生命周期服務能力。
    的頭像 發表于 09-04 09:32 ?834次閱讀
    軟通動力數據庫專業<b class='flag-5'>服務</b>全<b class='flag-5'>棧</b>解決方案亮相2025數博會

    如何基于Nginx構建微服務網關

    今天,我將分享我們團隊如何基于Nginx構建了一個日均處理10億+請求的微服務網關,以及踩過的那些坑。這套方案已經穩定運行2年+,經歷過多次大促考驗。
    的頭像 發表于 09-02 16:29 ?826次閱讀

    Jtti海外VPS微服務架構下的日志采集與分析優化方案

    隨著跨境業務和分布式應用的普及,越來越多的企業在海外VPS上構建微服務架構,以提升系統擴展性和靈活性。然而,微服務化帶來了一個新的挑戰:日志數據分散在多個服務和節點中,若缺乏統一采集與分析機制,將
    的頭像 發表于 08-27 17:13 ?572次閱讀

    自動駕駛中常提的“全”是個啥?有必要“全”嗎?

    [首發于智駕最前沿微信公眾號]隨著自動駕駛技術落地,越來越多車企公布了自己的自動駕駛方案,在很多車企的宣傳中,會使用“全自研”的說法來證明自己的實力。所謂“全”,字面意思是全套技術
    的頭像 發表于 08-27 09:43 ?1153次閱讀
    自動駕駛中常提的“全<b class='flag-5'>棧</b>”是個啥?有必要“全<b class='flag-5'>棧</b>”嗎?

    電商API的微服務架構優化策略

    ? 隨著電子商務的快速發展,API(應用程序編程接口)已成為電商平臺的核心組件,負責連接用戶、商家和后臺系統。微服務架構通過將應用拆分為獨立、可擴展的服務單元,顯著提升了系統的靈活性和可維護性。然而
    的頭像 發表于 07-23 14:30 ?624次閱讀
    電商API的<b class='flag-5'>微服務</b>架構優化策略

    AI應用創新與全技術融合分論壇即將召開

    2025開放原子開源生態大會即將啟幕,其中 “AI應用創新與全技術融合分論壇”將于 7月24日重磅亮相。論壇聚焦人工智能技術與開源生態的深度融合,邀請各領域用戶、技術專家、開發者分享
    的頭像 發表于 07-23 09:54 ?942次閱讀

    蔡司“微服務”——全能在線售后管家,24小時守護您的設備!

    還在為設備故障煩惱? 急需技術支援卻找不到人? 想快速獲取用戶手冊或軟件升級? 現在 只需微信掃一掃設備上的藍色標簽二維碼 蔡司“微服務”一鍵觸達! 9大功能板塊 全方位解決您的售后需求 服務更高
    發表于 07-10 16:44 ?1574次閱讀
    蔡司“<b class='flag-5'>微服務</b>”——全能在線售后管家,24小時守護您的設備!

    NVIDIA技術助力企業創建主權AI智能體

    AI Factory 的經驗證設計將加速基礎設施與軟件(包括全新 NVIDIA NIM 微服務和經擴展的 NVIDIA Blueprint)相結合,為各國和企業簡化了全式 AI 開發的流程。
    的頭像 發表于 06-16 14:28 ?1350次閱讀

    曙光數創亮相2025中國智算中心全技術大會

    近日,曙光數創副總裁兼CTO張鵬攜三大液冷新品,正式亮相『2025中國智算中心全技術大會』暨第六屆中國數據中心綠色能源大會。曙光數創作為液冷數據中心技術創新引領者,以“新服務”、“新
    的頭像 發表于 06-13 14:40 ?1150次閱讀

    從云端到終端:RAKsmart服務器構筑AI云平臺智慧城市全解決方案

    傳統服務器方案常面臨算力分散、運維復雜、能效比低等問題,導致AI算法難以高效落地。而RAKsmart服務器憑借其技術創新與全服務能力,正在
    的頭像 發表于 05-09 09:47 ?631次閱讀

    企業使用NVIDIA NeMo微服務構建AI智能體平臺

    已發布的 NeMo 微服務可與合作伙伴平臺集成,作為創建 AI 智能體的構建模塊,使用商業智能與強大的邏輯推理模型 (包括 NVIDIA Llama Nemotron) 處理更多任務。
    的頭像 發表于 04-27 15:05 ?1288次閱讀

    Snap Store開發者工具圖譜:從全到云原生,一張圖解鎖Linux開發新姿勢!

    PyCharm+Postman構建微服務,還是云原生新人嘗試Kubectl+Helm馴服K8s,SnapStore早已備好全套裝備。本文作為《UbuntuSnap》系列的第三彈
    的頭像 發表于 03-25 09:22 ?868次閱讀
    Snap Store開發者工具圖譜:從全<b class='flag-5'>棧</b>到云原生,一張圖解鎖Linux開發新姿勢!