微服務架構4個核心問題: 1. 服務不少,客戶端該怎麼訪問? 2. 這麼多服務,服務之間如何通訊? 3. 這麼多服務,如何治理? 4. 某個服務掛了怎麼辦? 解決方案: springCoud:它是一種生態!它是基於springboot構建的 它落地的流行實現有如下三個: 1.Spring Cloud NetFlix 一站式解決方案!(NetFlix停更不停用) api網關:zuul組件 Feign:它是基於HttpClient的,也就是基於Http的通訊方式:同步阻塞的 eureka:服務註冊與發現,就是來服務治理的 Hystrix:熔斷機制,某個服務掛了採用的機制 。。。。等其餘組件 2.Apache Dubbo Zookeeper 半自動,須要整合別人的東西! API網關:沒有,須要找第三方組件,或者本身實現 Dubbo: RPC框架,用於服務間通訊(很專業) Zookeeper: 服務註冊與發現 熔斷機制:沒有,能夠藉助Hystrix組件 能夠得出個結論:Dubbo這個方案並不完善 3.Spring Cloud Alibaba 最新的一站式解決方案! 更簡單 新概念:服務網格 server Mesh 它的表明落地實現: istio 萬變不離其宗: 1.API網關解決服務路由 2.HTTP,RPC解決服務通訊 3.服務註冊與發現,實現高可用 4.熔斷機制,解決服務掛了的問題,也就是服務降級 本質: 網絡不可靠
1.1 什麼是微服務?html
1.2 微服務之間是如何獨立通信的?ios
1.3 SpringCloud 和 Dubbo有那些區別?git
1.4 SpringBoot 和 SpringCloud,請談談你對他們的理解github
1.5 什麼是服務熔斷?什麼是服務降級?面試
1.6 微服務的優缺點分別是什麼?說下你在項目開發中遇到的坑spring
1.7 你所知道的微服務技術棧有哪些?列舉一二數據庫
1.8 Eureka和Zookeeper均可以提供服務註冊與發現的功能,請說說二者的區別api
…springboot
微服務(Microservice Architecture) 是近幾年流行的一種架構思想,關於它的概念很難一言以蔽之。服務器
究竟什麼是微服務呢?咱們在此引用ThoughtWorks 公司的首席科學家 Martin Fowler 於2014年提出的一段話:
原文:https://martinfowler.com/articles/microservices.html
漢化:http://www.javashuo.com/article/p-kujxclul-w.html
再來從技術維度角度理解下:
強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹義的看,能夠看做是IDEA中的一個個微服務工程,或者Moudel。IDEA 工具裏面使用Maven開發的一個個獨立的小Moudel,它具體是使用SpringBoot開發的一個小模塊,專業的事情交給專業的模塊來作,一個模塊就作着一件事情。強調的是一個個的個體,每一個個體完成一個具體的任務或者功能。
一種新的架構形式,Martin Fowler 於2014年提出。
微服務架構是一種架構模式,它體長將單一應用程序劃分紅一組小的服務,服務之間相互協調,互相配合,爲用戶提供最終價值。每一個服務運行在其獨立的進程中,服務與服務之間採用輕量級的通訊機制(如HTTP)互相協做,每一個服務都圍繞着具體的業務進行構建,而且可以被獨立的部署到生產環境中,另外,應儘可能避免統一的,集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具(如Maven)對其進行構建。
微服務技術條目 | 落地技術 |
---|---|
服務開發 | SpringBoot、Spring、SpringMVC等 |
服務配置與管理 | Netfix公司的Archaius、阿里的Diamond等 |
服務註冊與發現 | Eureka、Consul、Zookeeper等 |
服務調用 | Rest、PRC、gRPC |
服務熔斷器 | Hystrix、Envoy等 |
負載均衡 | Ribbon、Nginx等 |
服務接口調用(客戶端調用服務的簡化工具) | Fegin等 |
消息隊列 | Kafka、RabbitMQ、ActiveMQ等 |
服務配置中心管理 | SpringCloudConfig、Chef等 |
服務路由(API網關) | Zuul等 |
服務監控 | Zabbix、Nagios、Metrics、Specatator等 |
全鏈路追蹤 | Zipkin、Brave、Dapper等 |
數據流操做開發包 | SpringCloud Stream(封裝與Redis,Rabbit,Kafka等發送接收消息) |
時間消息總棧 | SpringCloud Bus |
服務部署 | Docker、OpenStack、Kubernetes等 |
選型依據
當前各大IT公司用的微服務架構有那些?
阿里:dubbo+HFS
京東:JFS
新浪:Motan
噹噹網:DubboX
…
各微服務框架對比
| 功能點/服務框架 | Netflix/SpringCloud | Motan | gRPC | Thri t | Dubbo/DubboX |
| —————— | ———————————————————————————— | —————————————————- | ————————— | ———— | —————————— |
| 功能定位 | 完整的微服務框架 | RPC框架,但整合了ZK或Consul,實現集羣環境的基本服務註冊發現 | RPC框架 | RPC框架 | 服務框架 |
| 支持Rest | 是,Ribbon支持多種可拔插的序列號選擇 | 否 | 否 | 否 | 否 |
| 支持RPC | 否 | 是(Hession2) | 是 | 是 | 是 |
| 支持多語言 | 是(Rest形式) | 否 | 是 | 是 | 否 |
| 負載均衡 | 是(服務端zuul+客戶端Ribbon),zuul-服務,動態路由,雲端負載均衡Eureka(針對中間層服務器) | 是(客戶端) | 否 | 否 | 是(客戶端) |
| 配置服務 | Netfix Archaius,Spring Cloud Config Server 集中配置 | 是(Zookeeper提供) | 否 | 否 | 否 |
| 服務調用鏈監控 | 是(zuul),zuul提供邊緣服務,API網關 | 否 | 否 | 否 | 否 |
| 高可用/容錯 | 是(服務端Hystrix+客戶端Ribbon) | 是(客戶端) | 否 | 否 | 是(客戶端) |
| 典型應用案例 | Netflix | Sina | Google | Facebook | |
| 社區活躍程度 | 高 | 通常 | 高 | 通常 | 2017年後從新開始維護,以前中斷了5年 |
| 學習難度 | 中等 | 低 | 高 | 高 | 低 |
| 文檔豐富程度 | 高 | 通常 | 通常 | 通常 | 高 |
| 其餘 | Spring Cloud Bus爲咱們的應用程序帶來了更多管理端點 | 支持降級 | Netflix內部在開發集成gRPC | IDL定義 | 實踐的公司比較多 |
Spring官網:https://spring.io/
目前成熟的互聯網架構,應用服務化拆分 + 消息中間件
能夠看一下社區活躍度:
https://github.com/spring-cloud
對比結果:
Dubbo | SpringCloud | |
---|---|---|
服務註冊中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服務調用方式 | RPC | REST API |
服務監控 | Dubbo-monitor | Spring Boot Admin |
斷路器 | 不完善 | Spring Cloud Netfilx Hystrix |
服務網關 | 無 | Spring Cloud Netfilx Zuul |
分佈式配置 | 無 | Spring Cloud Config |
服務跟蹤 | 無 | Spring Cloud Sleuth |
消息總棧 | 無 | Spring Cloud Bus |
數據流 | 無 | Spring Cloud Stream |
批量任務 | 無 | Spring Cloud Task |
最大區別:Spring Cloud 拋棄了Dubbo的RPC通訊,採用的是基於HTTP的REST方式
嚴格來講,這兩種方式各有優劣。雖然從必定程度上來講,後者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。並且REST相比RPC更爲靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這個優勢在當下強調快速演化的微服務環境下,顯得更加合適。
品牌機和組裝機的區別
社區支持與更新力度的區別
總結:兩者解決的問題域不同:Dubbo的定位是一款RPC框架,而SpringCloud的目標是微服務架構下的一站式解決方案。
官網:http://projects.spring.io/spring-cloud/
版本號有點特別:
SpringCloud有些並無採用數字編號的方式命名版本號,而是採用了倫敦地鐵站的名稱,同時根據字母表的順序來對應版本時間順序,好比最先的Realse版本:Angel,第二個Realse版本:Brixton,而後是Camden、Dalston、Edgware,目前最新的是2020.0.3 CURRENT GA通用穩定版。
自學參考書: