微服務架構技術棧

2021-01-21 zero丶丶丶

一、前言

2014 年可以認為是微服務 1.0 的元年,當年有幾個標誌性事件:

一是 Martin Fowler 在其博客上發表了」Microservices」一文,正式提出微服務架構風格;二是 Netflix 微服務架構經過多年大規模生產驗證,最終抽象落地形成一整套開源的微服務基礎組件,統稱 NetflixOSS,Netflix 的成功經驗開始被業界認可並推崇;三是 Pivotal 將 NetflixOSS 開源微服務組件集成到其 Spring 體系,推出 Spring Cloud 微服務開發技術棧。

基於近年在微服務基礎架構方面的實戰經驗和平時的學習積累,我想總結並提出一些構建微服務 2.0 技術棧的選型思路,供各位在一線實戰的架構師、工程師參考借鑑。對於一些暫時還沒有成熟開源產品的微服務支撐模塊,我也會給出一些定製自研的設計思路。

二、選型準則

對於技術選型,我個人有很多標準,其中下面三項是最重要的:

1. 生產級

我們選擇的技術棧是要解決實際業務問題和上生產抗流量的(選擇不慎可能造成生產級事故),而不是簡單做個 POC 或者 Demo 展示,所以生產級(Production Ready),可運維(Ops Ready),可治理,成熟穩定的技術才是我們的首選;

2. 一線網際網路公司落地產品

我們會儘量採用在一線網際網路公司落地並且開源的,且在社區內形成良好口碑的產品,它們已經在這些公司經過流量衝擊,坑已經基本被填平,且被社區接受形成一個良好的社區生態(本文附錄部分會給出所有推薦使用或參考的開源項目的 GitHub 連結)。

3. 開源社區活躍度

GitHub 上的 stars 的數量是一個重要指標,同時會參考其代碼和文檔更新頻率(尤其是近年),這些指標直接反應開源產品的社區活躍度或者說生命力。

另外,對於不同業務體量和團隊規模的公司,技術選型標準往往是不同的,創業公司的技術選型和 BAT 級別公司的技術選型標準可能完全不同。本文主要針對日流量千萬以上,研發團隊規模不少於 50 人的公司,如果小於這個規模我建議認真評估是否真的需要採用微服務架構。考慮到 Java 語言在國內的流行度和我個人的背景經驗,本文主要針對採用 Java 技術棧的企業。本文也假定自建微服務基礎架構,有些產品其實有對應的雲服務可以直接使用,自建和採用雲服務各有利弊,架構師需要根據場景上下文綜合權衡。

這裡編輯強力推薦楊波在『極客時間 App』上的微服務架構視頻白板課程,他用一張圖,6 分鐘時間,深入淺出解釋微服務架構中的關鍵概念。目前是第一季,後面還有第二季。感興趣的用戶還請點擊文末閱讀原文連結了解詳情。

三、微服務基礎架構關鍵點

下面腦圖中芒果色標註的七個模塊,我認為是構建微服務 2.0 技術棧的核心模塊,本文後面的選型會分別基於這些模塊展開。對於每個模塊我也列出一些核心架構關注點,在選擇具體產品時,需要儘可能覆蓋到這些關注點。

.

下圖是我近期工作總結和參考的一個微服務技術體系,我想同時分享給一線架構師或者工程師參考,其中粉紅色標註的模塊是和微服務關係最密切的模塊,大家在做技術選型時,可以同時對照這個體系。

.

四、服務框架選型

服務框架是一個比較成熟的領域,有太多可選項。Spring Boot/Cloud[附錄 12.1] 由於 Spring 社區的影響力和 Netflix 的背書,目前可以認為是構建 Java 微服務的一個社區標準,Spring Boot 目前在 GitHub 上有超過 20k 星。

基於 Spring 的框架本質上可以認為是一種 RESTful 框架(不是 RPC 框架),序列化協議主要採用基於文本的 JSON,通訊協議一般基於 HTTP。RESTful 框架天然支持跨語言,任何語言只要有 HTTP 客戶端都可以接入調用,但是客戶端一般需要自己解析 payload。目前 Spring 框架也支持 Swagger 契約編程模型,能夠基於契約生成各種語言的強類型客戶端,極大方便不同語言棧的應用接入,但是因為 RESTful 框架和 Swagger 規範的弱契約特性,生成的各種語言客戶端的互操作性還是有不少坑的。

Dubbo[附錄 12.2] 是阿里多年構建生產級分布式微服務的技術結晶,服務治理能力非常豐富,在國內技術社區具有很大影響力,目前 github 上有超過 16k 星。Dubbo 本質上是一套基於 Java 的 RPC 框架,噹噹 Dubbox 擴展了 Dubbo 支持 RESTful 接口暴露能力。

Dubbo 主要面向 Java 技術棧,跨語言支持不足是它的一個弱項,另外因為治理能力太豐富,以至於這個框架比較重,完全用好這個框架的門檻比較高,但是如果你的企業基本上投資在 Java 技術棧上,選 Dubbo 可以讓你在服務框架一塊站在較高的起點上,不管是性能還是企業級的服務治理能力,Dubbo 都做的很出色。新浪微博開源的 Motan(GitHub 4k stars)也不錯,功能和 Dubbo 類似,可以認為是一個輕量裁剪版的 Dubbo。

gRPC[附錄 12.3] 是谷歌近年新推的一套 RPC 框架,基於 protobuf 的強契約編程模型,能自動生成各種語言客戶端,且保證互操作。支持 HTTP2 是 gRPC 的一大亮點,通訊層性能比 HTTP 有很大改進。Protobuf 是在社區具有悠久歷史和良好口碑的高性能序列化協議,加上 Google 公司的背書和社區影響力,目前 gRPC 也比較火,GitHub 上有超過 13.4k 星。

目前看 gRPC 更適合內部服務相互調用場景,對外暴露 RESTful 接口可以實現,但是比較麻煩(需要 gRPC Gateway 配合),所以對於對外暴露 API 場景可能還需要引入第二套 RESTful 框架作為補充。總體上 gRPC 這個東西還比較新,社區對於 HTTP2 帶來的好處還未形成一致認同,建議謹慎投入,可以做一些試點。

五、運行時支撐服務選型

運行時支撐服務主要包括服務註冊中心,服務路由網關和集中式配置中心三個產品。

服務註冊中心,如果採用 Spring Cloud 體系,則選擇 Eureka[附錄 12.4] 是最佳搭配,Eureka 在 Netflix 經過大規模生產驗證,支持跨數據中心,客戶端配合 Ribbon 可以實現靈活的客戶端軟負載,Eureka 目前在 GitHub 上有超過 4.7k 星;Consul[附錄 12.5] 也是不錯選擇,天然支持跨數據中心,還支持 KV 模型存儲和靈活健康檢查能力,目前在 GitHub 上有超過 11k 星。

服務網關也是一個比較成熟的領域,有很多可選項。如果採用 Spring Cloud 體系,則選擇 Zuul[附錄 12.6] 是最佳搭配,Zuul 在 Netflix 經過大規模生產驗證,支持靈活的動態過濾器腳本機制,異步性能不足(基於 Netty 的異步 Zuul 遲遲未能推出正式版)。Zuul 網關目前在 github 上有超過 3.7k 星。基於 Nginx/OpenResty 的 API 網關 Kong[附錄 12.7] 目前在 github 上比較火,有超過 14.1k 星。因為採用 Nginx 內核,Kong 的異步性能較強,另外基於 lua 的插件機制比較靈活,社區插件也比較豐富,從安全到限流熔斷都有,還有不少開源的管理界面,能夠集中管理 Kong 集群。

這裡編輯強力推薦楊波在『極客時間 App』上的微服務架構視頻白板課程,他用一張圖,6 分鐘時間,深入淺出解釋微服務架構中的關鍵概念。目前是第一季,後面還有第二季。感興趣的用戶還請點擊文末閱讀原文連結了解詳情。

配置中心,Spring Cloud 自帶 Spring Cloud Config[附錄 12.8](GitHub 0.75k stars),個人認為算不上生產級,很多治理能力缺失,小規模場景可以試用。個人比較推薦攜程的 Apollo[附錄 12.9] 配置中心,在攜程經過生產級驗證,具備高可用,配置實時生效(推拉結合),配置審計和版本化,多環境多集群支持等生產級特性,建議中大規模需要對配置集中進行治理的企業採用。Apollo 目前在 github 上有超過 3.4k 星。

六、服務監控選型

主要包括日誌監控,調用鏈監控,Metrics 監控,健康檢查和告警通知等產品。

ELK 目前可以認為是日誌監控的標配,功能完善開箱即用,ElasticSearch[附錄 12.10] 目前在 GitHub 上有超過 28.4k 星。Elastalert[附錄 12.11] (GitHub 4k stars) 是 Yelp 開源的針對 ELK 的告警通知模塊。

調用鏈監控目前社區主流是點評 CAT[附錄 12.12](GitHub 4.3k stars),Twitter 之前開源現在由 OpenZipkin 社區維護的 Zipkin[附錄 12.13](GitHub 7.5k stars)和 Naver 開源的 Pinpoint[附錄 12.14](GitHub 5.3k stars)。個人比較推薦點評開源的 CAT,在點評和國內多家網際網路公司有落地案例,生產級特性和治理能力較完善,另外 CAT 自帶告警模塊。下面是我之前對三款產品的評估表,供參考。

.

Metrics 監控主要依賴於時間序列資料庫 (TSDB),目前較成熟的產品是 StumbleUpon 公司開源的基於 HBase 的 OpenTSDB[附錄 12.15](基於 Cassandra 的 KariosDB[附錄 12.16] 也是一個選擇,GitHub 1.1k stars,它基本上是 OpenTSDB 針對 Cassandra 的一個改造版),OpenTSDB 具有分布式能力可以橫向擴展,但是相對較重,適用於中大規模企業,OpenTSDB 目前在 GitHub 上有近 2.9k 星。

OpenTSDB 本身不提供告警模塊,Argus[附錄 12.17](GitHub 0.29k 星)是 Salesforce 開源的基於 OpenTSDB 的統一監控告警平臺,支持豐富的告警函數和靈活的告警配置,可以作為 OpenTSDB 的告警補充。近年也出現一些輕量級的 TSDB,如 InfluxDB[附錄 12.18](GitHub 12.4k stars)和 Prometheus[附錄 12.19](GitHub 14.3k stars),這些產品函數報表能力豐富,自帶告警模塊,但是分布式能力不足,適用於中小規模企業。Grafana[附錄 12.20](GitHub 19.9k stars)是 Metrics 報表展示的社區標配。

社區還有一些通用的健康檢查和告警產品,例如 Sensu[附錄 12.21](GitHub 2.7k stars),能夠對各種服務(例如 Spring Boot 暴露的健康檢查端點,時間序列資料庫中的 metrics,ELK 中的錯誤日誌等)定製靈活的健康檢查 (check),然後用戶可以針對 check 結果設置靈活的告警通知策略。Sensu 在 Yelp 等公司有落地案例。其它類似產品還有 Esty 開源的 411[附錄 12.22](GitHub 0.74k 星)和 Zalando 的 ZMon[附錄 12.23] (GitHub 0.15k 星),它們是分別在 Esty 和 Zalando 落地的產品,但是定製 check 和告警配置的使用門檻比較高,社區不熱,建議有定製自研能力的團隊試用。ZMon 後臺採用 KairosDB 存儲,如果企業已經採用 KariosDB 作為時間序列資料庫,則可以考慮 ZMon 作為告警通知模塊。

這裡編輯強力推薦楊波在『極客時間 App』上的微服務架構視頻白板課程,他用一張圖,6 分鐘時間,深入淺出解釋微服務架構中的關鍵概念。目前是第一季,後面還有第二季。感興趣的用戶還請點擊文末閱讀原文連結了解詳情。

七、服務容錯選型

針對 Java 技術棧,Netflix 的 Hystrix[附錄 12.24](github 12.4k stars)把熔斷、隔離、限流和降級等能力封裝成組件,任何依賴調用(資料庫,服務,緩存)都可以封裝在 Hystrix Command 之內,封裝後自動具備容錯能力。Hystrix 起源於 Netflix 的彈性工程項目,經過 Netflix 大規模生產驗證,目前是容錯組件的社區標準,GitHub 上有超 12k 星。其它語言棧也有類似 Hystrix 的簡化版本組件。

Hystrix 一般需要在應用端或者框架內埋點,有一定的使用門檻。對於採用集中式反向代理(邊界和內部)做服務路由的公司,則可以集中在反向代理上做熔斷限流,例如採用 Nginx[附錄 12.25](GitHub 5.1k stars)或者 Kong[附錄 12.7](GitHub 11.4k stars)這類反向代理,它們都插件支持靈活的限流容錯配置。Zuul 網關也可以集成 Hystrix 實現網關層集中式限流容錯。集中式反向代理需要有一定的研發和運維能力,但是可以對限流容錯進行集中治理,可以簡化客戶端。

八、後臺服務選型

後臺服務主要包括消息系統,分布式緩存,分布式數據訪問層和任務調度系統。後臺服務是一個相對比較成熟的領域,很多開源產品基本可以開箱即用。

消息系統,對於日誌等可靠性要求不高的場景,則 Apache 頂級項目 Kafka[附錄 12.26](GitHub 7.2k stars)是社區標配。對於可靠性要求較高的業務場景,Kafka 其實也是可以勝任,但企業需要根據具體場景,對 Kafka 的監控和治理能力進行適當定製完善,Allegro 公司開源的 hermes[附錄 12.27](GitHub 0.3k stars)是一個可參考項目,它在 Kafka 基礎上封裝了適合業務場景的企業級治理能力。阿里開源的 RocketMQ[附錄 12.28](GitHub 3.5k 星)也是一個不錯選擇,具備更多適用於業務場景的特性,目前也是 Apache 頂級項目。RabbitMQ[附錄 12.29](GitHub 3.6k 星)是老牌經典的 MQ,隊列特性和文檔都很豐富,性能和分布式能力稍弱,中小規模場景可選。

對於緩存治理,如果傾向於採用客戶端直連模式(個人認為緩存直連更簡單輕量),則 SohuTv 開源的 cachecloud[附錄 12.30](GitHub 2.5k stars)是一款不錯的 Redis 緩存治理平臺,提供諸如監控統計,一鍵開啟,自動故障轉移,在線伸縮,自動化運維等生產級治理能力,另外其文檔也比較豐富。如果傾向採用中間層 Proxy 模式,則 Twitter 開源的 twemproxy[附錄 12.31](GitHub 7.5k stars)和 CodisLab 開源的 codis[附錄 12.32](GitHub 6.9k stars)是社區比較熱的選項。

對於分布式數據訪問層,如果採用 Java 技術棧,則噹噹開源的 shardingjdbc[附錄 12.33](GitHub 3.5k stars)是一個不錯的選項,分庫分表邏輯做在客戶端 jdbc driver 中,客戶端直連資料庫比較簡單輕量,建議中小規模場景採用。如果傾向採用資料庫訪問中間層 proxy 模式,則從阿里 Cobar 演化出來的社區開源分庫分表中間件 MyCAT[附錄 12.34](GitHub 3.6k stars)是一個不錯選擇 。proxy 模式運維成本較高,建議中大規模場景,有一定框架自研和運維能力的團隊採用。

任務調度系統,個人推薦徐雪裡開源的 xxl-job[附錄 12.35](GitHub 3.4k stars),部署簡單輕量,大部分場景夠用。噹噹開源的 elastic-job[附錄 12.36](GitHub 3.2k stars)也是一個不錯選擇,相比 xxl-job 功能更強一些也更複雜。

九、服務安全選型

對於微服務安全認證授權機制一塊,目前業界雖然有 OAuth 和 OpenID connect 等標準協議,但是各家具體實現的做法都不太一樣,企業一般有很多特殊的定製需求,整個社區還沒有形成通用生產級開箱即用的產品。有一些開源授權伺服器產品,比較知名的如 Apereo CAS[附錄 12.37](GitHub 3.6k stars),JBoss 開源的 keycloak[附錄 12.38](GitHub 1.9 stars),spring cloud security[附錄 12.39] 等,大都是 opinionated(一家觀點和做法)的產品,同時因支持太多協議造成產品複雜,也缺乏足夠靈活性。個人建議基於 OAuth 和 OpenID connect 標準,在參考一些開源產品的基礎上(例如 Mitre 開源的 OpenID-Connect-Java-Spring-Server[附錄 12.40],GitHub 0.62k stars),定製自研輕量級授權伺服器。Wso2 提出了一種微服務安全的參考方案 [附錄 12.45],建議參考,該方案的關鍵步驟如下:

.

使用支持 OAuth 2.0 和 OpenID Connect 標準協議的授權伺服器(個人建議定製自研);使用 API 網關作為單一訪問入口,統一實現安全治理;客戶在訪問微服務之前,先通過授權伺服器登錄獲取 access token,然後將 access token 和請求一起發送到網關;網關獲取 access token,通過授權伺服器校驗 token,同時做 token 轉換獲取 JWT token。網關將 JWT Token 和請求一起轉發到後臺微服務;JWT 中可以存儲用戶會話信息,該信息可以傳遞給後臺的微服務,也可以在微服務之間傳遞,用作認證授權等用途;每個微服務包含 JWT 客戶端,能夠解密 JWT 並獲取其中的用戶會話信息。整個方案中,access token 是一種 by reference token,不包含用戶信息可以直接暴露在公網上;JWT token 是一種 by value token,可以包含用戶信息但不暴露在公網上。

十、服務部署平臺選型

容器已經被社區接受為交付微服務的一種理想手段,可以實現不可變(immutable)發布模式。一個輕量級的基於容器的服務部署平臺主要包括容器資源調度,發布系統,鏡像治理,資源治理和 IAM 等模塊。

集群資源調度系統:屏蔽容器細節,將整個集群抽象成容器資源池,支持按需申請和釋放容器資源,物理機發生故障時能夠實現自動故障遷移 (fail over)。目前 Google 開源的 Kubernetes[附錄 12.41],在 Google 背書和社區的強力推動下,基本已經形成市場領導者地位,GitHub 上有 31.8k 星,社區的活躍度已經遠遠超過了 mesos[附錄 12.42](GitHub 3.5k stars)和 swarm 等競爭產品,所以容器資源調度建議首選 K8s。當然如果你的團隊有足夠定製自研能力,想深度把控底層調度算法,也可以基於 Mesos 做定製自研。

鏡像治理:基於 Docker Registry,封裝一些輕量級的治理功能。VMware 開源的 harbor[附錄 12.43] (GitHub 3.5k stars) 是目前社區比較成熟的企業級產品,在 Docker Registry 基礎上擴展了權限控制,審計,鏡像同步,管理界面等治理能力,可以考慮採用。

資源治理:類似於 CMDB 思路,在容器雲環境中,企業仍然需要對應用 app,組織 org,容器配額和數量等相關信息進行輕量級的治理。目前這塊還沒有生產級的開源產品,一般企業需要根據自己的場景定製自研。

發布平臺:面向用戶的發布管理控制臺,支持發布流程編排。它和其它子系統對接交互,實現基本的應用發布能力,也實現如藍綠,金絲雀和灰度等高級發布機制。目前這塊生產級的開源產品很少,Netflix 開源的 spinnaker[附錄 12.44](github 4.2k stars)是一個,但是這個產品比較複雜重量(因為它既要支持適配對接各種 CI 系統,同時還要適配對接各種公有雲和容器雲,使得整個系統異常複雜),一般企業建議根據自己的場景定製自研輕量級的解決方案。

IAM:是 identity & access management 的簡稱,對發布平臺各個組件進行身份認證和安全訪問控制。社區有不少開源的 IAM 產品,比較知名的有 Apereo CAS(GitHub 3.6k stars),JBoss 開源的 keycloak(GitHub 1.9 stars)等。但是這些產品一般都比較複雜重量,很多企業考慮到內部各種系統靈活對接的需求,都會考慮定製自研輕量級的解決方案。

考慮到服務部署平臺目前還沒有端到端生產級解決方案,企業一般需要定製集成,下面給出一個可以參考的具備輕量級治理能力的發布體系:

.

簡化發布流程如下:

應用通過 CI 集成後生成鏡像,用戶將鏡像推到鏡像治理中心;用戶在資產治理中心申請發布,填報應用,發布和配額相關信息,然後等待審批通過;發布審批通過,開發人員通過發布控制臺發布應用;發布系統通過查詢資產治理中心獲取發布規格信息;發布系統向容器雲發出啟動容器實例指令;容器雲從鏡像治理中心拉取鏡像並啟動容器;容器內服務啟動後自註冊到服務註冊中心,並保持定期心跳;用戶通過發布系統調用服務註冊中心調撥流量,實現藍綠,金絲雀或灰度發布等機制;網關和內部微服務客戶端定期同步服務註冊中心上的服務路由表,將流量按負載均衡策略分發到新的服務實例上。

另外,持續交付流水線(CD Pipeline)也是微服務發布重要環節,這塊主要和研發流程相關,一般需要企業定製,下面是一個可供參考的流水線模型,在鏡像治理中心上封裝一些輕量級的治理流程,例如只有通過測試環境測試的鏡像才能升級發布到 UAT 環境,只有通過 UAT 環境測試的鏡像才能升級發布到生產環境,通過在流水線上設置一些質量門,保障應用高質量交付到生產。

.

十一、寫在最後

注意,本文限於篇幅,對測試和 CI 等環節沒有涉及,但它們同樣是構建微服務架構的重要環節,也有眾多成熟的開源產品可選。

技術選型雖然重要,但還只是微服務建設的一小部分工作,選型後的產品要在企業內部真正落地,形成完整的微服務技術棧體系,則後續還有大量集成、定製、治理、運維和推廣等工作。

本文僅限個人經驗視角,選型思路僅供參考借鑑。每個企業的具體上下文(業務場景,團隊組織,技術架構等)各不相同,每個架構師的背景經驗也各不相同,大家要結合實際自己做出選型,沒有最好的技術棧,只有相對較合適的技術棧。另外,好的技術選型是相互借鑑甚至 PK 出來的,歡迎大家討論,給出自己的微服務 2.0 技術棧選型意見。

相關焦點

  • 微服務架構技術棧選型時,你真的選對了嗎?
    微服務開發技術棧。基於近年在微服務基礎架構方面的實戰經驗和平時的學習積累,我想總結並提出一些構建微服務 2.0 技術棧的選型思路,供各位在一線實戰的架構師、工程師參考借鑑。對於一些暫時還沒有成熟開源產品的微服務支撐模塊,我也會給出一些定製自研的設計思路。
  • SpringBoot+dubbo技術棧實現微服務,分布式集群的電商系統源碼
    SpringBoot+Dubbo技術棧實現微服務,實現一款分布式集群的電商系統。優惠券秒殺(高並發處理) 商品詳情 商品品類多級聯動運營平臺 會員中心 訂單系統 店鋪管理 評論管理 風控系統 採購平臺 內容管理技術棧
  • Novel-Cloud 1.2.0 發布,微服務技術棧學習型項目
    但是作為網際網路項目,一樣需要面對大規模用戶和海量數據的處理,所以高並發、高可用、高性能、高容錯、可擴展性、可維護性也是小說網站設計需要考慮的問題,商城系統中所用到的技術同樣適用於小說網站。綜上所述,使用微服務架構來構建一個小說門戶平臺是非常有必要的,利用微服務構建的小說門戶平臺來學習現下流行技術相較於業務比較複雜的商場系統來說也是比較容易的,非常適合於沒有實際微服務項目經驗的同學用來學習和入門微服務技術棧。
  • 微軟技術布道師收集並詳解的:44 個微服務架構設計模式分享
    HA的模式,選擇接受服務的實例個數;容易擴大開發團隊,可以針對每個服務(service)開發團隊;提高容錯性(fault isolation),一個服務的內存洩露並不會讓整個系統癱瘓;新技術的應用,系統不會被長期限制在某個技術棧上;缺點沒有銀彈,微服務提高了系統的複雜度;開發人員要處理分布式系統的複雜性;服務之間的分布式通信問題;服務的註冊與發現問題;服務之間的分布式事務問題;數據隔離再來的報表處理問題
  • 網易雲詳解:微服務架構如何促進企業數位化轉型
    近日,2018第二屆雲原生技術大會(CNTC)在杭州召開,網易雲副總經理陳諤在會上介紹了微服務架構在企業數位化轉型中發揮的作用,並基於網易微服務實踐經驗分享了實施微服務的挑戰與對策。
  • 從單體架構遷移到微服務?
    系統開發、測試、部署的衝突和效率低下等問題只能關注一套技術棧應用擴展性比較差海量用戶高並發訪問數量有限單體適用場景:  架構設計的三大原則告訴我們,觀念變化:微服務不僅僅是技術的升級,更是開發方式、組織架構、開發觀念的轉變。
  • 學完微軟技術總監整理的44 個微服務架構設計模式,我漲薪了
    他的研究領域包括微服務架構設計、分布式數據管理、事件驅動的應用架構 、領域驅動設計、持續交付、Spring 框架、Scala、NoSQL 資料庫等。喻勇在技術圈馳騁多年,曾擔任過微軟技術布道師,VMware Cloud Foundry 生態建設負責人,並有幸引領了國內容器技術的創業浪潮。目前定居加拿大,關注微服務架構、雲原生應用等領域。
  • Alibaba微服務布道師傾心肛的:微服務架構實戰手冊
    與傳統的單一架構相比,微服務架構對團隊的組織架構、技術水平、運維能力等方面,都提出了更高的要求。如果沒有掌握得當的方法而生搬硬套,微服務架構只會適得其反---降低項目的開發效率。我們會從微服務開發、工具鏈、運維這三個角度,闡述微服務架構的實戰方案。讓我們嘗試親自動手,實現微服務架構的各個模塊。
  • 00_分布式系統整體技術棧
    點擊文章下方「了解更多」,查看高清大圖分布式系統整體技術棧-思維導圖分布式系技術棧涉及到相關技術:業界微服務技術棧服務調用服務容器註冊發現配置中心消息隊列DevOps全局控制網關存儲倉庫人工智慧流計算延遲任務分布式系統協調集群管理部署容器監控降級、熔斷彈性伸縮大數據服務治理任務調度一致性算法負責均衡一些架構方案後面爭取每個技術點用一張圖來說明
  • 什麼是微服務架構,如何做服務拆分?
    >架構單一,容易維護開發、測試、部署都比較便捷單體架構的缺點:複雜度高部署慢,而且體積很大,不利於發布佔用伺服器資源過大阻礙新的技術創新典型的打車軟體微服務架構圖微服務架構的特徵:每個微服務可獨立運行在自己的進程裡一系列獨立運行的微服務共同構建起整個系統每個微服務可用獨立的開發,在開發過程中只關注一個業務模塊的特定功能,比如支付服務,訂單管理,用戶管理等等可使用不同的語言與數據存儲技術(契合項目情況和團隊實力)微伺服器直接通過輕量的通信機制進行通信,比如:Rest
  • 擁抱Spring Cloud微服務架構實踐中的經驗與總結
    擁抱Spring Cloud微服務架構實踐中的經驗與總結一、背景 大家都知道,微服務這個名詞從2014年就開始流行出來了。期間出現了以國內阿里係為代表的Dubbo架構RPC模式的微服務架構,以Spring生態圈出現的Spring Cloud技術還處於萌芽階段。
  • 漫談何時從單體架構遷移到微服務?
    系統開發、測試、部署的衝突和效率低下等問題只能關注一套技術棧應用擴展性比較差海量用戶高並發訪問數量有限單體適用場景:  架構設計的三大原則告訴我們,觀念變化:微服務不僅僅是技術的升級,更是開發方式、組織架構、開發觀念的轉變。
  • 當微服務架構遇上法律科技
    在仔細研究了目前市場上比較流行的多租戶SaaS或社交網絡平臺之後,微服務架構成為Matteroom的選擇。微服務架構就像是IT界的「律所運營」,它在組件與組件之間定義了清晰的、語言無關、平臺無關的規範接口,耦合度低,靈活性非常高,像律師團隊一樣,可以「獨立執行案件」(獨立部署),它提倡以業務為核心,按照業務能力來組織團隊。
  • 架構技術之SpringCloud微服務技術架構詳解
    很多朋友想學習 Spring Cloud 微服務技術,但又不知道如何著手,本篇文章將對 Spring Cloud 微服務技術架構進行詳細的講解,幫助那些想使用 Spring Cloud 搭建自己的微服務框架的朋友。
  • 阿里微服務大牛奉命總結出500頁Spring微服務架構筆記
    微服務是一種架構風格和模式:將複雜系統拆解為協同工作的小型服務,以此構建大型業務服務。微服務是自治、自包含且可獨立部署的服務。當今世界上的許多企業將微服務作為默認的架構標準來構建面向服務的大型企業級應用。作為一種編程框架,Spring框架在開發者社區流行很多年了。
  • 程式設計師必備的15種微服務架構框架
    2019年有一個統計說,兩千家企業裡,45%在使用微服務,16%在實驗開發和測試微服務架構,24%在學習微服務準備轉型,只有剩下的15%的企業沒有使用微服務。 微服務到底有什麼好呢?微服務在2013年才被提出,短短幾年就有這麼快速的發展。
  • 程式設計師必備的15種微服務架構框架
    2019年有一個統計說,兩千家企業裡,45%在使用微服務,16%在實驗開發和測試微服務架構,24%在學習微服務準備轉型,只有剩下的15%的企業沒有使用微服務。微服務到底有什麼好呢?微服務在2013年才被提出,短短幾年就有這麼快速的發展。
  • Spring Cloud微服務——億級流量分布式系統核心架構設計
    分布式/版本化配置服務註冊和發現路由服務到服務的呼叫負載均衡斷路器分布式消息傳遞作為新一代的服務框架,Spring Cloud提出的口號是開發「面向雲環境的應用程式」,它為微服務架構提供了更加全面的技術支持。
  • 億級流量分布式系統核心架構設計——Spring Cloud微服務
    《Spring Cloud微服務架構開發實戰》電子版資料!轉發+關注,然後私信回復關鍵字 「學習」 即可獲得電子書的免費領取方式內容簡介本書圍繞如何整合以SpringCloud為核心的技術棧,來實現一個完整的微服務架構的系統而展開。
  • 架構師之路:微服務技術選型
    作為一名架構師,需要規劃產品技術路線,負責技術選型。而技術棧選型主要參考以下幾個標準:安全穩定,不能經常被爆出安全漏洞開源社區活躍度,加入Apache的組件優先考慮一線網際網路公司落地產品,有大公司為其背書文檔閱讀性好本篇為大家帶來微服務架構的後端技術選型,當你需要進行技術選型時,可以參照他來設計自己的決策樹