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 的体验。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。