分布式微服务架构选项

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 的体验。