當前位置:
首頁 > 知識 > 如何玩轉微服務

如何玩轉微服務

微服務,軟體應用開發的新紀元

2014年 Martin Fowler 在《MicroServices》論文中首次提出了微服務的概念。近些年,伴隨著互聯網的日益發展,微服務在國內、甚至國際上的發展已達到一個新高潮。

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

微服務架構模式的優勢與痛點

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

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

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

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

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

  1. 微服務粒度大小難以劃分,需要設計人員對業務有很好的掌握;
  2. 分散式複雜性,主要體現在分散式事務、網路延遲、系統容錯等問題解決難度較大;
  3. 微服務之間通信成本較高,對微服務之間網路穩定性,通信速度要求較高;
  4. 微服務數量較大,對運維人員的運維、部署工作帶來較大的挑戰。

微服務開發踩坑經驗

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

避免大家再踩我之前所趟過的坑,讓開發過程更加順利、更專註於業務開發,我特別推出了我的達人課《微服務一站式開發》,它集合了自己在微服務開發過程中的所有經驗總結,主要包括以下主要內容:

  1. 目前,微服務開發中,各大公司通常採用的技術主要有 Spring Boot、Spring Cloud,因此在課程的開篇首先會對 Spring Boot 的基礎知識,以及它與其他常用的各大技術框架的整合進行演示,並帶大家利用 Spring Cloud 整合 Consul 實現服務的註冊、發現等;
  2. 微服務調用過程中,遇到網路等不穩定因素時,如果不加以控制,系統很容易發生雪崩效應。本課程將充分利用 Spring Cloud 相關特性教各位讀者如何實現服務的熔斷、降級、限流等功能,從而解決這一問題;
  3. 將整個系統按業務拆分成多個服務,這個過程需要解決微服務鑒權、分散式事務、分散式鎖等關鍵問題。為此,本課程引入了 Spring Cloud Zuul 對微服務進行統一鑒權的講解;對 Redis、Zookeeper 高級技術點的解讀,及利用它們如何實現分散式鎖的過程分析;對分散式事務的理論說明,以及消息中間件 RabbitMQ 之死信隊列、發布確認、消費確認的應用指南,並利用它們實現數據的最終一致性,解決微服務分散式事務;還會講解如何利用第三方開源框架實現數據的實時一致性等內容;
  4. 微服務的數量往往較大,運維人員面臨著運維、部署困難等問題,為此課程為各位讀者帶來了微服務監控、Docker 的常用命令、架構以及容器管理平台 Rancher、K8S 等相關技術使用指南;
  5. 最後,課程將通過一個完整的項目,帶大家了解微服務從開發,到代碼提交,再到打鏡像、自動拉起容器、容器的擴縮容等一系列完整的過程,並對其中使用到的關鍵技術和工具(如 Jenkins)一一進行精要說明。

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

  • 第01-02課:主要演示微服務開發過程中,Spring、Spring MVC 常用主要知識點;
  • 第03-05課:主要演示在實際工作中,Spring Boot 如何整合諸如 Spring Data JPA、Redis、MongoDB、RabbitMQ、Elasticsearch 此類的常用技術;
  • 第06-09課:將對 Consul 相關知識做詳解,並利用 Spring Cloud 和 Consul 實現服務的註冊與發現;同時將演示 Spring Cloud常用組件(如 Zuul、Ribbon、Hystrix、Feign 等)在實際工作中使用方法;此外,在網關層整合 OAuth 2 實現微服務鑒權、配置中心及請求鏈路跟蹤等內容也會在本部分進行詳細解讀與演示;
  • 第10-13課:首先會對 Redis 分片原理、集群搭建、分片數據遷移,Redis 與 Lua 腳本整合進行詳解;接著,對 ZooKeeper 相關演算法(如 Paxos、ZAB)進行介紹,並對其 watcher 的實現原理及 ZooKeeper 集群搭建過程作分析與說明;之後講解如何利用 Redis、DB、ZooKeeper 等實現分散式鎖,介紹分散式事務相關原理,並演示在工作中如何利用消息中間件實現數據最終一致性和利用第三方組件實現數據實時一致性等內容;
  • 第14課:主要演示如何實現微服務監控;
  • 第15-17課:介紹 Docker 架構及常用命令;對常用容器管理平台如 Rancher、K8S 進行詳細說明,並說明工作中如何用其管理容器;
  • 第18課:實戰部分,對前17課所講內容進行綜合實戰,讓讀者了解在工作中如何應用以上技術。其中主要包括微服務開發、微服務網關、微服務調用、負載均衡、熔斷、微服務鑒權、日誌監控、配置中心、微服務鏡像生成、容器管理平台搭建及如何管理容器等技術內容。

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

如何玩轉微服務

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

構建 Hadoop 集群
c++ 反射機制:用類名作變數,動態創建對象

TAG:程序員小新人學習 |