12.1 架构概述
在动手开发之前,需要先了解一下牛刀云的技术架构,整体技术架构如图12-2所示,分为前端页面、微服务网关、微服务、存储和主机等5个方面。对于开发者而言,需要开发的只有前端页面中的小程序语言和微服务中的自定义服务两部分。
前端 |
|
小程序 |
公众号 |
APP |
…… |
JavaScript |
||||||
开发时 |
小程序语言 |
|||||||||||
运行时 |
小程序 |
H5、React |
Hybrid
APP |
|
||||||||
|
|
|
|
|
|
|
|
|||||
微服务 |
API Gateway |
Kong |
||||||||||
路由 |
身份验证 |
鉴权 |
黑白名单 |
流量控制 |
…… |
|||||||
|
|
|
|
|
|
|
|
|||||
微服务 |
通用数据服务 |
短信服务SMS |
自定义服务 |
存储对象代理服务 |
用户账号和认证服务UAA |
…… |
Maven |
|||||
|
|
|
|
|
|
|
|
|||||
存储 |
数据库(PostgreSQL、MySQL、……) |
对象存储(Minio、……) |
|
|||||||||
|
|
|
|
|
|
|
|
|||||
主机 |
阿里、腾讯等云主机、私有云主机 |
|
图12-2 牛刀云技术架构
牛刀云的前端页面采用小程序语言开发,实现一次开发,多端任意部署。可以部署为小程序、公众号和APP。通过将小程序语言转化为H5 + React,实现浏览器运行,因此可以部署到公众号中。再通过使用Hybrid APP + Cordova插件的方式,生成独立APP,直接安装在手机上。前端页面代码采用JavaScript最新国际标准ECMAScript2015,前端页面样式集成WeUI样式库,达到同微信原生应用视觉体验一致的效果。
牛刀云的后端采用微服务架构,每个微服务可以独立部署、运行和升级。微服务之间在结构上是“松耦合”的,但在功能上表现为一个统一的整体。从而有效的拆分应用,实现敏捷开发和部署。目前已提供的微服务包括:用户账号和认证服务UAA、短信服务SMS、通用数据服务DBRest和存储对象代理服务Storage。在牛刀云中可以自定义服务,牛刀云使用Maven进行项目管理,使用Spring MVC实现MVC框架,使用Spring Data访问数据库。支持多种开发语言,包括Java、php、Nodejs和Python等(目前只支持Java)。
微服务网关是微服务架构标准化服务的模式。微服务网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理是一样的。微服务网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、功能调用的业务鉴权、流量与并发控制。使用Kong 作为管理工具,还可以安装其它插件。
在存储方面,支持数据库存储和对象存储。数据库支持PostgreSQL和MySQL等数据库,还支持通过配置连接外部数据库,支持连接PostgreSQL、MySQL、Oracle和SQLServer四种数据库。对象存储目前支持Minio,用于存储大容量非结构化的数据,例如图片、视频和日志等文件。
在部署方面,不仅支持阿里、腾讯等云主机,还支持私有主机。