云端酒店管理系统架构设计

在目前互联网大行其道的形势下,家具智能化正在成为趋势。本项目的主要目的是为酒店的智能化提供云端服务、监控、性能和可用性检测,保证酒店的智能化设备的正常运行,实时检测智能化设备的故障并通知管理员及时维修。本架构总体上采用本地 + 云服务器进行多端、分功能、权限分级的服务化集群RPC注册调用设计,总体架构数据图如下所示: 架构所属类别:B&S / Browser & Server


云端酒店管理系统架构设计

 

一、            项目背景

在目前互联网大行其道的形势下,家具智能化正在成为趋势。本项目的主要目的是为酒店的智能化提供云端服务、监控、性能和可用性检测,保证酒店的智能化设备的正常运行,实时检测智能化设备的故障并通知管理员及时维修。本架构总体上采用本地 + 云服务器进行多端、分功能、权限分级的服务化集群RPC注册调用设计,总体架构数据图如下所示:

架构所属类别:B&S / Browser & Server

1.jpg

 

二、            Kumara Smart Sys

服务端主体语言:PHP 7.2

工具、标准、框架使用:MMVC,REST,Layer,PSR,composer,Laravel,Register,RPC,Service,Socket,HTTP,Nginx,注释配置,Route

 

三、            系统架构


系统架构图:

2.jpg

系统采用四层架构设计

一、展现层用户终端类型:

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进行设置。

3.jpg

Web / Client 终端请求流程:

4.jpg

   四、数据层

   数据层采用mysql主从读写分离 + 缓存池结构,提高高并发情况下的数据库可用性。对于很多大型服务来说,在所处理的业务中,其中有70%的业务是查询相关的业务操作,剩下的则是写操作。在使用负载均衡集群之后,可以很大程度的提升网站的整体性能,但是最终的数据处理的压力还是会落到MySQL数据库上,所有很有必要使用一些技术来提升MySQL的负载能力。(读写分离)。写专门交给写服务器(服务)处理(一般读写比 4:1) 那么需要把读的任务分配多台服务器(or docker)来完成的架构,就叫做读写分离。

 

 

5.png

 

 

 

 

 

四、            关键中间件说明:

一、认证系统

采用双token的方式完成数据链。其中accessToken 用于用户身份认证。refreshToken用于当accessToken失效时重新生成。

 

用户登录流程:

6.png

 

Token访问:

用户本地cookie/session/url param存储token

发起token验证请求

认证服务token认证通过

服务调度中心发起业务调用请求,获取业务处理结果

服务调度中心返回数据给客户端

 

 

7.png


 

Access Token失效:

用户本地cookie/session/url param存储token

发起token验证请求

认证服务token认证失败

认证服务获取用户refresh token

返回用户refresh token

客户端重新存储token数据

客户端使用refresh token重新发起业务请求

认证服务refresh token验证通过

服务调度中心发起业务调用请求,获取业务处理结果

服务调度中心返回数据给客户端

8.png

 

Refresh token失效

用户本地cookie/session/url param存储token

发起token验证请求

认证服务token认证失败

发起refresh token验证请求

认证服务refresh token认证失败

客户端接收验证失败返回

客户端发起重新登录

9.png

二、服务注册、发现、调度中心

整体架构图:

实现自动化的服务注册

·             服务的发现和注册均依赖Consul,作为整个系统核心存在

·             自动服务注册采用 Consul Registrator。当有新的服务启动之后,会被自动注册。

 

10.png

 

 

 

客户端访问:

11.png

服务注册:

12.png