今天給你們蜻蜓點水的聊一下微服務相關的熱門技術。html
若是問什麼是微服務?那就很難回答了,並且容易引發爭論,由於微服務不是一個技術定義;若是問微服務是什麼?具有哪些特徵?則比較容易回答,微服務是一種架構設計風格,微服務的特徵,咱們尊敬的佈道師——馬丁富勒大神已經給出了很好的總結。安全
簡單的說,就是一組被集中管理的、規模較小的服務,每一個服務只完成內聚性很強的一組功能,並經過網絡彼此協做,時間所限,這裏就不對每一條展開解釋了,之後有機會能夠單獨聊下這個話題。這裏先把原文連接和一份不錯的翻譯推薦給你們,你們感興趣的話能夠看一下,原文 http://martinfowler.com/articles/microservices.html,翻譯 http://www.36dsj.com/archives/42305(複製地址在遊覽器打開)網絡
那麼微服務爲何這麼火呢?微服務到底帶來了哪些業務價值?太多了,咱們隨便列一下~~架構
還有一個常見問題就是,微服務和SOA究竟是啥關係,這又是一個引發不少爭論的問題,對這個問題,我認爲最好的解答來自Nguyen Quang Tung。框架
英文還挺押韻,簡單的說就是SOA講的是多個系統之間的集成,微服務講的是系統內部的架構風格。異步
前面介紹了微服務的概念和價值,接下來介紹一下常見的微服務實現框架。微服務
最成功的就是Netflix,就是拍紙牌屋的那家公司,開源出來的一系列項目,統稱爲NetflixOSS,OSS就是Open Source Software的縮寫了。Netflix之前是出租光碟的,如今搖身一變成了微服務時代的領軍人物,即便是Java領域最成功的微服務框架——Spring Cloud,也不少參照的Netflix OSS,實在是太勵志了!工具
咱們能夠看到,不管是Netflix OSS和Spring Cloud,都提供了服務註冊和發現、集中配置、集中日誌、服務網關和路由、容錯/熔斷等能力,這些能力也是微服務框架的必須能力。雲計算
這裏每個模塊均可以講上幾小時,因此也不展開講了,先簡單看一下Netflix OSS的一個比較有意思的模塊,業務容錯/熔斷模塊Hystrix。spa
上圖是Hystrix的調用流程,開發微服務模塊的時候,引用下Hystrix,而後按它的框架實現,就可讓Hystrix把外部對你的微服務調用都管理起來,支持同步、異步和React模式,若是調用出錯、超時或者過載,Hystrix會幫你作出相應的保護措施。下圖是Hystrix的控制檯,能夠看到各個微服務的資源使用狀況、調用次數、響應時間都數據。
其餘模塊咱們就先不看了,後面咱們能夠安排專題討論,挨個模塊講一遍~~
提到微服務就不能不提容器技術,容器技術對微服務架構的落地起了極大的促進做用,緣由很簡單,一個完整的操做系統太大了,若是裏面只跑了一個微服務,那操做系統自己的資源開銷,相對微服務,就太大了,而容器爲微服務提供了一個輕量的運行環境。
那麼咱們看一下Linux容器的核心技術:
容器「自己」其實指的是LinuxNamespace和CGroup這兩個技術的組合,其餘像Lxc、Lxd、Docker等,其實都是容器的用戶空間操做工具。
接下來說的是當今最熱門的容器管理工具,Docker
環境的輕量化,實際上是容器的價值,Docker只是作了一個很是易用的容器管理工具,環境的版本化和可堆疊,是Docker的創新之處,環境的版本化使環境能夠像代碼同樣管理,環境的可堆疊使環境易於修改和組裝。
固然,這裏說的Docker指的是Docker的核心功能,即Docker Engine,Docker公司還發布了Docker Swarm、Docker Compose等容器管理工具,已經成長爲一個數據中心級的容器管理解決方案廠商。
提到Docker就不能不提Docker的歡喜冤家Rkt,原本Docker和底層的操做系統(如後面要講到的CoreOS)、上層的容器編排技術(如後面要講到的Kubernetes)是和平共處互相合做的,可是燕雀焉知鴻鵠之志,Docker想本身搞定端到端的解決方案,功能越作越厚,這樣就很難再和上下游對接了,因此CoreOS和Kubernetes只好另起爐竈,搞了本身的容器管理工具Rkt,並定義了相應的技術標準——AppC
Rkt相比Docker,主要的改進在安全性上。而AppC對應用封裝的考慮更多一些。
接下來再介紹下爲容器而生的操做系統——CoreOS
CoreOS的最大優勢是天生的集羣化、容器化和可靠的自動升級,相似的操做系統還有RancherOS、Redhat的Atomic和VMware的Photon,這裏就不一一列舉了。
在容器技術棧中,咱們最後看一下Kubernetes
Kubernetes是個基於容器的微服務治理框架,能夠幫助用戶註冊和發佈微服務、經過自動故障恢復保持微服務的可用性、爲微服務提供自動伸縮和滾動升級等能力,功能很是完備。
Kubernetes的概念比較簡單,只有Pod(一組容器,對應一個微服務實例)、RC(用了建立微服務實例的副本)、Service(一個邏輯概念,用來對外提供服務)和Label(用來表示上面三個概念之間的關係),而這四個簡單的概念便可支撐上層應用的變幻無窮,這是kubernetes設計的優雅之處。
熱門技術介紹完畢,最後咱們看一下這些技術在普元數字化企業雲平臺內的應用。
平臺自動化和部署自動化部分使用了CoreOS、Docker/Rkt和Kubernetes,在API Gateway、服務發現、容錯/熔斷、監控和日誌等方面,使用了Netflix OSS的幾個組件。
普元原有的集成、流程和數據產品,在數字化企業雲平臺裏也會微服務化,第三方的應用能夠經過Service Broker包裝成微服務接入到數字化企業雲平臺中。
今天就到這裏,謝謝你們。
關於做者:
宋瀟男
EAII-企業架構創新研究院 專家委員
曾任華爲雲計算產品技術總監,現任普元雲計算架構師,負責產品規劃、市場推廣、技術合做等工做。所參與研發的雲計算產品在中國銀聯、中國石油等客戶得到應用。曾負責國家電網第一代雲資源管理平臺以及中國銀聯基於OpenStack的金融雲的技術方案、架構設計和技術原型工做。
關於EAII
EAII(Enterprise Architecture Innovation Institute)企業架構創新研究院,致力於軟件架構創新與實踐,加速企業數字化轉型。