假设需求(如有雷同,纯属巧合):
有一个全国性的大企业,在全国各地需要部署上千台客户机,这些客户机需要实时与服务器交互,进行数据处理。实时性要求高,安全性高,要求支持事务,以及不中断服务。
硬件部署:
1、 3000台客户机
2、 10台服务器
3、 6台数据库
软件设计:
3000台客户机通过web浏览器与服务器实时交互
4服务器上同时运行java app Server
2台消息服务器
2 台数据控制器
数据库采用oracle,分为2组,每组2个副本
概要设计步骤:
1、 保证客户机每个请求即为一个事务
2、 客户机发送一个事务请求到随机一台服务器,服务器接收到请求
3、 服务器检测自身性能、工作正常则处理请求,否则通知客户端异常请求另外的服务器
4 服务器验证客户身份和权限后,开启事务操作,向数据控制器发出数据操作请求
5 数据控制器接收数据请求,评估各自的负载压力,由压力小的控制器负责向数据库发送操作请求,如果为读操作,则选取压力最小的数据库读取,如果为写操作,则同步写入2台数据库,第3台数据操作采用异步写入
6 数据控制器返回操作结果,并更新缓存,并通知消息服务器缓存的最新时间戳
7 服务器向客户端返回结果
8 客户端获得返回结果