1 後端技術框架
咱們選擇Spring Cloud做爲微服務的分佈式架構:
Spring Cloud vs Dubbo?前端
背景
Dubbo,是阿里巴巴服務化治理的核心框架,並被普遍應用於阿里巴巴集團的各成員站點。
Spring Cloud,是Spring Source的產物,Spring社區的強大背書能夠說是Java企業界最有影響力的組織了,除了Spring Source以外,還有Pivotal和Netfix是其強大的後盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。
小結:從框架影響力和可持續性上,Spring Cloud優於Dubbo。java
社區活躍度
Spring Cloud仍處於高速迭代的階段。
小結:在社區活躍度上,Spring Cloud毋庸置疑的優於Dubbo,這對於沒有大量精力與財力維護這部分開源內容的團隊來講,Spring Cloud會是更優的選擇。從目前Spring Cloud的被關注度和活躍度上來看,頗有可能未來會成爲微服務架構的標準框架。web
架構完整度
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 的體驗。