2018年通信業務公司軟件研究院微服務架構與實踐培訓課件.pdf
下載文檔
上傳人:地**
編號:1266419
2024-12-16
45頁
1.07MB
該文檔所屬資源包:
通信業務公司軟件研究院大數據技術信息安全IT總體規劃培訓課件資料
1、1微服務架構與實踐微服務架構與實踐2018年5月霍龍社霍龍社2什么是微服務典型的微服務架構RESTful API使用Spring Boot編寫微服務使用Spring Cloud構架微服務系統常用開發環境和工具目錄3應用系統架構演進集中式架構 單體應用中最常見的架構模式分布式架構 將一個大的任務拆分到不同的機器中進行計算,最后由一臺服務器合并計算結果微服務架構 由一系列獨立運行的微服務組成4單體架構表示層邏輯層數據層Web容器邏輯上分層:MVC物理上運行于同一臺及其的同一個進程之中優點易于開發易于測試易于部署易于水平伸縮缺點學習困難,新人培養周期長適配新技術困難快速開發困難測試困難部署困難,持續2、交付周期長擴容困難,可擴展性差構建全功能團隊困難5微服務架構6微服務是一種架構風格7由一系列小服務組成每個服務運行于自己的獨立進程圍繞著業務功能進行建模最低限度集中每個微服務都是業務完整的每個微服務應僅對一個業務負責每個微服務接口明確定義獨立部署、升級和伸縮微服務特征8代碼庫獨立每個微服務具有自己單獨的代碼庫可獨自編譯、測試、打包、發布和部署服務啟動迅速各個服務的代碼庫之間沒有交叉依賴技術棧獨立每個微服務都可以采用自己獨立的技術棧來實現團隊可以嘗試使用新的技術、語言、工具和框架,易于引入新技術所選的技術棧一般來說都很輕量級不需要統一標準化技術棧,開發人員關注與業務實現而非技術可伸縮可擴展性獨立3、每個微服務都可以獨立伸縮更加直觀定位技術瓶頸可以根據需求來對數據庫進行分片業務功能獨立每個微服務可以在不影響別的微服務情況下進行功能擴展可以進行整個業務功能的重寫和替換部署可以靈活增添新的業務功能微服務的獨立性與自主性9微服務的優點和挑戰10典型的微服務架構API網關微服務A數據庫A微服務B數據庫B微服務C微服務注冊中心用戶認證授權中心瀏覽器日志測量監控消息中間件11API網關是一個特殊的微服務用于為后端微服務提供一個統一的訪問入口HTTP路由負載均衡安全QoS控制接入控制熔斷機制API網關12微服務注冊中心微服務注冊中心也是一個特殊的微服務主要用于微服務的注冊與發現,進而為API路由、負載均4、衡、微服務擴縮容等提供支撐微服務注冊微服務發現微服務配置中心微服務監控管理13用戶認證授權中心(UAA)UAA也是一個特殊的微服務,為系統提供一個統一的安全控制服務主要用于用戶的認證、鑒權、授權,以及基于角色的訪問控制用戶管理角色管理用戶認證授權基于角色的訪問控制14消息中間件消息中間件由一組特殊的微服務組成(例如Kafka,zookeeper等)主要用于系統中微服務間異步消息/數據的高效傳輸和處理數據過濾在邊緣節點分析和壓縮數據以縮減需要傳輸和處理的數據量數據傳輸處理數據中心內部及之間的異步消息/數據傳輸數據處理低延時、高吞吐量數據傳輸、聚合和分析15日志、測量和監控由一組特殊的微服務組成主5、要用于搜集、記錄系統運行過程中的日志以及告警、性能等監控數據,并以圖表化的形式進行可視化展示日志及測量數據索引日志處理和分析可視化展示16微服務訪問-RESTful 對外提供資源供別人(瀏覽器,客戶端,別的微服務,別的應用系統,)來訪問 訪問類型:增,刪,改,查微服務的作用 進程間通信 RPC RESTful API:目前最流行的互聯網接口事實標準,結構清晰、符合標準、易于理解、擴展方便如何訪問微服務17 表現層狀態轉化:Representational State Transfer Roy Thomas Fielding博士2000年在其博士論文中提出RESTRESTful資源微服務對外提供6、服務,供外界訪問的資源數據用一個URL來表示,例如:/api/users表現層資源的表現形式,例如:html,xml,json通過HTTP協議來傳遞應該在HTTP請求的頭信息中用Accept和Content-Type字段來指定狀態轉化HTTP:無狀態協議HTTP方法:GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS客戶端采用HTTP協議,使用GET/POST/PUT/DELETE等方法,通過服務器對外暴露的URL端點來對服務器端資源進行操作,在客戶端和服務器之間傳遞這些資源的某種表現層,從而實現服務器端資源狀態的轉化。18RESTful API所有對微服務的訪問都是7、通過訪問RESTfulAPI來進行的定義APIHTTP方法GETPOSTPUTDELETE資源URL用于定位資源,例如:/api/usersURL參數用于過濾資源,例如:?age18&group=student表現HTTP請求頭HTTP請求體HTTP響應碼HTTP相應頭HTTP響應體19GETGET/api/users獲取所有用戶信息GET/api/users?age18獲取所有年齡大于18的用戶的信息GET/api/users/zhangsan獲取用戶zhangsan的信息GET/driving_route?from=“金融街”&to=“小湯山”POSTPOST/api/users新增一個用8、戶(HTTP請求體中攜帶用戶信息)PUTPUT/api/users/zhangsan修改用戶zhangsan的信息DELETEDELETE/api/users所有所有用戶DELETE/api/users?age18刪除所有年齡大于18的用戶DELETE/api/users/zhangsan刪除用戶zhangsanRESTful API舉例注意:URL只是服務器暴露給外界的資源訪問端點,具體資源如何存放和操作由服務器后端的業務邏輯來實現20利用Spring Boot和Spring Cloud構建微服務系統Spring Boot:編寫單個微服務程序Spring Cloud:搭建微服務框架微服務應用9、系統21使編碼變得更簡單使配置變得更簡單使部署變得更簡單使監控變得更簡單Spring Boot Spring是基于Java的Web應用開發框架 SpringBoot是伴隨著Spring4.0誕生的 從字面理解,Boot是引導的意思,因此SpringBoot幫助開發者快速搭建Spring框架 SpringBoot幫助開發者快速啟動一個Web容器 SpringBoot繼承了原有Spring框架的優秀基因 SpringBoot簡化了使用Spring的過程22Spring Boot使編碼變得更簡單聲明一項依賴添加一個方法生成一個微服務:內嵌Tomcat容器的JAR包23Spring Boot使配置變得10、更簡單Spring由于其繁瑣的配置,一度被人認為“配置地獄”“配置地獄”,各種XML、Annotation配置,讓人眼花繚亂,而且如果出錯了也很難找出原因Spring Boot更多的是采用Java Config的方式對Spring進行配置24Spring Boot使部署變得更簡單My code第三方庫嵌入式HTTP容器hello.jar一鍵啟動減壓Java jar hello.jar不需要部署應用服務器WebSphereApplication ServerWebLogicTomcat降低對運行環境的基本要求運行環境中有JDK即可默認內嵌Tomcat25Spring Boot使監控變得更簡單2611、Spring CloudSpring Cloud是基于Spring Boot的一整套實現微服務的框架利用Spring Boot的便利性巧妙地簡化了分布式系統基礎設施的開發如服務注冊與發現、API路由、負載均衡、配置中心、消息總線、斷路器、數據監控等功能,都可以用Spring Boot的風格做到一鍵啟動和部署Spring Cloud并沒有重復制造輪子,它只是將目前市場上各家公司開發的較為成熟、經得起實際考驗的服務框架整合起來,通過Spring Boot風格進行再封裝屏蔽掉復雜的配置和實現原理,最終給開發者貢獻一套簡單易懂、易開發、易部署和易維護的分布式系統開發工具包27Spring Boot是一12、套Spring的快速配置腳手架,基于Spring Boot可快速開發單個微服務專注于快速、方便地構建單個個體使用默認大于配置的理念,很多集成方案已經為用戶選擇好了,能不配置就不配置Spring Cloud是一套基于Spring Boot實現的微服務云應用開發框架關注全局的服務治理框架很大一部分是基于Spring Boot來實現Spring Cloud與Spring Boot的關系28Spring Cloud29Spring Cloud ConfigSpring Cloud NetflixSpring Cloud BusSpring Cloud for Cloud FoundrySpring C13、loud Open Service BrokerSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring Cloud SleuthSpring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud TaskSpring Cloud Task App StartersSpring Cloud ZookeeperSpring Cloud for Amazon Web ServicesSpring Cloud Connec14、torsSpring Cloud StartersSpring Cloud CLISpring Cloud ContractSpring Cloud GatewaySpring Cloud OpenFeignSpring家族成員30NetFilx是一家在全球范圍內提供流媒體視頻服務的公司Netflix OSS組件是由Netflix公司開發并開源的一套微服務框架,這套框架在Netflix公司大規模微服務環境中經過數年的生產環境檢驗被證明是可行的Spring Cloud Netflix是利用Spring Boot編程框架基于Netflix OSS組件的再次封裝,提高了易用性以及與Spring Cl15、oud其他組件的整合性,構成了Spring Cloud的核心組件Spring Cloud NetflixService Discovery(Eureka)Circuit Breaker(Hystrix)Intelligent Routing(Zuul)Client Side Load Balancing(Ribbon)31服務注冊與發現Eureka server:8761微服務1:8080(Eureka client)微服務2:8081(Eureka client)瀏覽器32服務注冊與發現Eureka ServerEureka Client33API網關(HTTP路由)Eureka serve16、r:8761微服務:8090(book-service)Zuul proxy:8080(API網關)瀏覽器34API網關API gateway微服務35客戶端負載均衡(反向代理)微服務say-hello(副本1):8090Ribbon client:8080(API網關)瀏覽器微服務say-hello(副本2):8091微服務say-hello(副本3):809236客戶端負載均衡(反向代理)37Hystrix斷路器微服務:8090(book-store)Hystrix:8080(API網關)瀏覽器38Hystrix斷路器Hystrix斷路器微服務(Bookstore)開啟微服務(Bookstore):關閉微服務(Bookstore):39Spring配置中心微服務:80809001(Actuator)瀏覽器ConfigServer:8888配置文件(git)40Spring配置中心41微服務部署42常用開發環境和工具43常用開發環境和工具44常用開發環境和工具45謝謝!謝謝!