在目前互联网大行其道的形势下,家具智能化正在成为趋势。本项目的主要目的是为酒店的智能化提供云端服务、监控、性能和可用性检测,保证酒店的智能化设备的正常运行,实时检测智能化设备的故障并通知管理员及时维修。本架构总体上采用本地 + 云服务器进行多端、分功能、权限分级的服务化集群RPC注册调用设计,总体架构数据图如下所示: 架构所属类别:B&S / Browser & Server
一、 项目背景
在目前互联网大行其道的形势下,家具智能化正在成为趋势。本项目的主要目的是为酒店的智能化提供云端服务、监控、性能和可用性检测,保证酒店的智能化设备的正常运行,实时检测智能化设备的故障并通知管理员及时维修。本架构总体上采用本地 + 云服务器进行多端、分功能、权限分级的服务化集群RPC注册调用设计,总体架构数据图如下所示:
架构所属类别:B&S / Browser & Server
二、 Kumara Smart Sys
服务端主体语言:PHP 7.2
工具、标准、框架使用:MMVC,REST,Layer,PSR,composer,Laravel,Register,RPC,Service,Socket,HTTP,Nginx,注释配置,Route
三、 系统架构
系统架构图:
系统采用四层架构设计
一、展现层用户终端类型:
1、基于HTML/HTML5/Vue/CSS3开发web前端页面,兼容主流浏览器。展现层和数据层完全分离,通过跨域实现前后端数据通信。
2、android,ios 基于原生开发。在app端实现https链路请求优化。
3、更新业务需要,将部分数据以微信公众号+H5的方式展现;涉及硬件设备控制功能的系统部分模块采用微信小程序,增加用户操作体验和访问便捷性。【建议】
4、采用Nginx服务器提供前端接口,自带一定程度负载均衡,能保证前端接口及web服务的稳定运行。
二、通讯层
1. 公共资源访问基于阿里云CDN实现静态数据加速;
2. 云服务器集群和Web服务基于阿里云SLB,实现服务器负载均衡,适当采用弹性伸缩可保证服务高可用性。
3. 基于TCP/HTTP/HTTPS 三种通信方式/协议,实现前后端数据通信。其中,TCP基于Socket套接字实现;
三、服务层
核心业务基于PHP + Laravel 5.7 服务框架实现服务化。Laravel是一套PHP Web开发框架。它是基于Web服务器并采用HTTP/HTTPS的访问协议进行服务的。在Laravel中已经具有了一套高级的PHP ActiveRecord(活动记录)实现 -- Eloquent ORM。它能方便的将“约束”应用到关系的双方,这样你就具有了对数据的完全控制, Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法,对于数据操作提供极高的便利性,配合其任务调度特性可用于构建本项目中的核心服务和数据服务。
本地服务池:主要处理数据的存、取、缓存、日志记录,统一对外提供数据接口;采用≥2台本地数据服务器,采用RPC方式对外提供数据接口。基础安全采用端口暴露、访问白名单IP进行设置。
Web / Client 终端请求流程:
四、数据层
数据层采用mysql主从读写分离 + 缓存池结构,提高高并发情况下的数据库可用性。对于很多大型服务来说,在所处理的业务中,其中有70%的业务是查询相关的业务操作,剩下的则是写操作。在使用负载均衡集群之后,可以很大程度的提升网站的整体性能,但是最终的数据处理的压力还是会落到MySQL数据库上,所有很有必要使用一些技术来提升MySQL的负载能力。(读写分离)。写专门交给写服务器(服务)处理(一般读写比 4:1) 那么需要把读的任务分配多台服务器(or docker)来完成的架构,就叫做读写分离。
四、 关键中间件说明:
一、认证系统
采用双token的方式完成数据链。其中accessToken 用于用户身份认证。refreshToken用于当accessToken失效时重新生成。
用户登录流程:
Token访问:
用户本地cookie/session/url param存储token
发起token验证请求
认证服务token认证通过
服务调度中心发起业务调用请求,获取业务处理结果
服务调度中心返回数据给客户端
Access Token失效:
用户本地cookie/session/url param存储token
发起token验证请求
认证服务token认证失败
认证服务获取用户refresh token
返回用户refresh token
客户端重新存储token数据
客户端使用refresh token重新发起业务请求
认证服务refresh token验证通过
服务调度中心发起业务调用请求,获取业务处理结果
服务调度中心返回数据给客户端
Refresh token失效
用户本地cookie/session/url param存储token
发起token验证请求
认证服务token认证失败
发起refresh token验证请求
认证服务refresh token认证失败
客户端接收验证失败返回
客户端发起重新登录
二、服务注册、发现、调度中心
整体架构图:
实现自动化的服务注册
· 服务的发现和注册均依赖Consul,作为整个系统核心存在
· 自动服务注册采用 Consul Registrator。当有新的服务启动之后,会被自动注册。
客户端访问:
服务注册: