分散式微服務架構選項

佩洛斯達發表於2017-10-29

1 後端技術框架
我們選擇Spring Cloud作為微服務的分散式架構:
Spring Cloud vs Dubbo?

 背景

Dubbo,是阿里巴巴服務化治理的核心框架,並被廣泛應用於阿里巴巴集團的各成員站點。
Spring Cloud,是Spring Source的產物,Spring社群的強大背書可以說是Java企業界最有影響力的組織了,除了Spring Source之外,還有Pivotal和Netfix是其強大的後盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。
小結:從框架影響力和可持續性上,Spring Cloud優於Dubbo。

 社群活躍度

Spring Cloud仍處於高速迭代的階段。
小結:在社群活躍度上,Spring Cloud毋庸置疑的優於Dubbo,這對於沒有大量精力與財力維護這部分開源內容的團隊來說,Spring Cloud會是更優的選擇。從目前Spring Cloud的被關注度和活躍度上來看,很有可能將來會成為微服務架構的標準框架。

 架構完整度

Dubbo只是實現了服務治理,而Spring Cloud下面有17個子專案(可能還會新增)分別覆蓋了微服務架構下的方方面面,服務治理只是其中的一個方面,一定程度來說,Dubbo只是Spring Cloud Netflix中的一個子集。但是在選擇框架上,方案完整度恰恰是一個需要重點關注的內容。

SpringCloud分散式架構五大核心套件:

 服務發現——Netflix Eureka

雲端服務發現,一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。

 客服端負載均衡——Netflix Ribbon

提供雲端負載均衡,有多種負載均衡策略可供選擇,可配合服務發現和斷路器使用。

 斷路器——Netflix Hystrix

熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。

 服務閘道器——Netflix Zuul 

Zuul 是在雲平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。Zuul 相當於是裝置和 Netflix 流應用的 Web 網站後端所有請求的前門。

 分散式配置——Spring Cloud Config

配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理叢集配置,目前支援本地儲存、Git以及Subversion。配合Spring Cloud Bus實現動態的配置更新。

我們選擇Spring Boot作為微服務的基礎框架
旨在簡化建立產品級的 Spring 應用和服務,簡化了配置檔案,使用嵌入式web伺服器,含有諸多開箱即用微服務功能。
Spring Boot主要特性:

 遵循“習慣優於配置”的原則,使用Spring Boot只需要很少的配置,大部分的時候我們直接使用預設的配置即可;
 專案快速搭建,可以無需配置的自動整合第三方的框架;
 可以完全不使用XML配置檔案,只需要自動配置和Java Config;
 內嵌Servlet容器,降低了對環境的要求,可以使用命令直接執行專案,應用可用jar包執行:java -jar;
 提供了starter POM, 能夠非常方便的進行包管理, 很大程度上減少了jar hell或者dependency hell;
 執行中應用狀態的監控;
 對主流開發框架的無配置整合;
 與雲端計算的天然繼承;

我們選擇Mybatis作為資料存取層基礎框架
Mybatis優勢:

 MyBatis可以進行更為細緻的SQL優化,可以減少查詢欄位。
 MyBatis容易掌握,而Hibernate門檻較高。

2 前端技術框架
我們選擇Vue.js作為我們的前端基礎框架,並採用前後端分離的模式進行業務模組開發。
目前主流的前端開發框架有Angular、React和Vue.js。
Vue.js 更加靈活,(比起 Angular)更少專制,它能然你按照自己想要的方式構建應用,而非凡事非得 Angular 如此如此。它只不過是一層介面而已,因此你可以拿它作為頁面中一個輕量的功能來使用,而不是一個完整的 SPA。
Vue.js 和 React擁有一些類似的功能特性,如:
1) 使用了一個虛擬 DOM
2) 提供了響應式的,並且可組合式的檢視元件。
3) 保持對核心庫的專注, 而像路由和全域性狀態管理這樣的關注點則交給附帶的庫來處理。
三者有相通之處,例如元件化,這是大勢所趨。Vue吸取了 React 和 Angular 的教訓,同時也吸收了它們的成功之處。Vue 是輕量級且容易學習掌握的。

3 移動端技術框架
我們選擇採用Hybrid App框架,Android端JAVA語言,IOS端採用Swift語言,都採用Native+H5的混合式(Hybrid App)架構。
目前主流應用程式大體分為三類:Web App、Hybrid App、 Native App。

 Native App

優點:
(1)打造完美的使用者體驗
(2)效能穩定
(3)操作速度快,上手流暢
缺點:
(1)開發成本高(不同平臺有不同的開發語言和介面適配)
(2)維護成本高(例如一款App已更新至V5版本,但仍有使用者在使用V2, V3, V4版本,需要更多的開發人員維護之前的版本)
(3)更新緩慢,根據不同平臺,提交–稽核–上線 等等不同的流程,需要經過的流程較複雜

 Web APP

優點
(1)開發成本低,
(2)更新快,
(3)更新無需通知使用者,不需要手動升級,
(4)能夠跨多個平臺和終端。
缺點:
(1)臨時性的入口
(2)無法獲取系統級別的通知,提醒,動效等等
(3)體驗較差

 Hybrid App

Hybrid APP指的是半原生半Web的混合類App。需要下載安裝,看上去類似Native App,但只有很少的UI Web View,訪問的內容是 Web 。
例如Store裡的新聞類APP,視訊類APP普遍採取的是Native的框架,Web的內容。
Hybrid App規避了Native App和H5 App缺點,極力去打造類似於Native App 的體驗。

相關文章