如何玩轉微服務

2021-08-22 06:12:34 字數 1935 閱讀 3641

黃朝兵,目前就職於一家跨國軟體公司,任專家級開發工程師。曾就職於網際網路金融企業、大型國企、日企等,分別任職技術經理,高階軟體開發工程師,軟體開發工程師。

2023年 martin fowler 在《microservices》**中首次提出了微服務的概念。近些年,伴隨著網際網路的日益發展,微服務在國內、甚至國際上的發展已達到乙個新高潮。

在微服務流行之前,soa(service oriented architecture)被廣泛熟知與採用。微服務基於 soa 發展而來,但與之相比,微服務更易於理解,也更利於設計者、開發者的實踐落地,它把「面向服務」的設計思想實現得更加徹底。

微服務架構建議實踐者以「業務」來切分服務,鼓勵開發者選擇最適合的技術實現具體的服務,只需保證其對外提供的 api 介面保持一致即可。也就是說,微服務架構理念的出現,使得應用開發前的技術選型的選擇空間更加寬廣、靈活。

將系統拆分為多個微服務,也便於對每個微服務分別實施監控,不斷收集每個微服務的具體指標。當某個微服務出現效能瓶頸時,可針對性的對該服務進行水平擴充套件以支撐當前大流量,而無需對整個系統進行橫向擴充套件。

除了以上優點,微服務架構按業務拆分服務的理念,更使服務之間彼此隔離,相互之間不會產生影響。這也便於我們在開發過程中利用技術手段,更高效地實現自動化部署。

正因為這些優點,當前很多軟體企業在開發新專案時,首先考慮的是微服務架構,甚至企業正將以前的老系統慢慢迭代為該架構模式。

當然,除了以上優點,微服務架構也存在以下缺點:

微服務粒度大小難以劃分,需要設計人員對業務有很好的掌握;

分布式複雜性,主要體現在分布式事務、網路延遲、系統容錯等問題解決難度較大;

微服務之間通訊成本較高,對微服務之間網路穩定性,通訊速度要求較高;

微服務數量較大,對運維人員的運維、部署工作帶來較大的挑戰。

經過多年來不斷的探索與總結,在微服務設計、開發領域,我已積累了豐富的實戰經驗,深知微服務實踐過程中各個痛點及難點。

目前,微服務開發中,各大公司通常採用的技術主要有 spring boot、spring cloud,因此在課程的開篇首先會對 spring boot 的基礎知識,以及它與其他常用的各大技術框架的整合進行演示,並帶大家利用 spring cloud 整合 consul 實現服務的註冊、發現等;

微服務呼叫過程中,遇到網路等不穩定因素時,如果不加以控制,系統很容易發生雪崩效應。本課程將充分利用 spring cloud 相關特性教各位讀者如何實現服務的熔斷、降級、限流等功能,從而解決這一問題;

將整個系統按業務拆分成多個服務,這個過程需要解決微服務鑑權、分布式事務、分布式鎖等關鍵問題。為此,本課程引入了 spring cloud zuul 對微服務進行統一鑑權的講解;對 redis、zookeeper 高階技術點的解讀,及利用它們如何實現分布式鎖的過程分析;對分布式事務的理論說明,以及訊息中介軟體 rabbitmq 之死信佇列、發布確認、消費確認的應用指南,並利用它們實現資料的最終一致性,解決微服務分布式事務;還會講解如何利用第三方開源框架實現資料的實時一致性等內容;

微服務的數量往往較大,運維人員面臨著運維、部署困難等問題,為此課程為各位讀者帶來了微服務監控、docker 的常用命令、架構以及容器管理平台 rancher、k8s 等相關技術使用指南;

最後,課程將通過乙個完整的專案,帶大家了解微服務從開發,到**提交,再到打映象、自動拉起容器、容器的擴縮容等一系列完整的過程,並對其中使用到的關鍵技術和工具(如 jenkins)一一進行精要說明。

為了方便大家更清晰地學習本課程,我們再來看下課程目錄安排。

最後,我要對各位讀者說明的是,經過本次課程的學習,我將帶領大家的微服務開發能力再上乙個新台階。在學習的過程中,如果各位遇到任何問題,請通過 gitchat 的讀者圈與我交流互動,我會盡力解答各位提出的問題。

掃碼試讀購買或點此試讀購買

微服務之如何建模微服務

1.什麼樣的服務是好的微服務?它應該具備這兩個特點 松耦合 高內聚 松耦合 如果做到了服務之間的松耦合,那麼修改乙個服務就不需要修改另外乙個服務了。使用微服務最重要的一點是,能夠獨立修改和部署單個服務而不需要修改系統的其他部分,這一點非常重要。那麼相對的什麼是緊耦合呢?使用緊耦合來做服務之間的整合,...

微服務學習2 如何劃分微服務?

1 起點和終點 起點 既有架構的形態 終點 好的架構不是設計出來的,而是進化而來的 一直在演進ing 2 適合上微服務麼 業務形態不適合的 1 系統中包含很多很多強事務場景的 2 業務相對穩定,迭代周期長 3 訪問壓力不大,可用性要求不高 3,康威定律 任何組織在設計一套系統 廣義概念上的系統 時,...

如何監控微服務

首先要搞清楚三個問題 監控的物件是什麼?具體監控哪些指標?從哪些緯度進行監控?監控的物件可以分為四個層次,從上到下可以歸納為 監控指標 監控維度 監控系統原理 我們對服務呼叫進行監控,首先要能收集到每一次呼叫的詳細資訊,包括呼叫的響應時間,呼叫是否成功,呼叫的發起者和接受者分別是誰,這個過程叫做資料...