/DistributedServerTest

a distributed service test

Primary LanguageJavaScript

《NTM去哪儿》分布式服务集群系统 (课内实验)

类去哪网(机票)的分布式架构网站

Overview

image

  • 登录浏览网页刷新机票信息等走日常服务器,刷新订单信息时先拉取缓存,如果不存在则拉取数据库。
  • 更新:由更新服务器定期爬取机票供应商授权的api接口写入主网站的服务器,保证服务可用性。
  • 抢票:
    1. 前端日常服务器发送创建订单请求,日常服务器初步检查是否有余量,如果有则创建订单(状态:RESERVED),无则返回拒绝。
    2. 创建成功订单后,前端银行发送请求支付授权,用户登录银行账户并附带授权扣款金额,银行返回授权token(需验证余额充足,且token有时效性)。
    3. 获得token成功后,前端将token与订单号交给日常服务器,日常服务器检查订单信息,通过后将订单发送至消息队列,等待订单状态转化为SUCCESS/FAIL(每秒轮询数据库),返回前端订单状态。
    4. 订单服务器消息队列中获得订单信息,先向机票供应商确认订单存量信息,若存量不足或服务失效,修改订单状态为FAIL,若存量充足则先担保下单,并使用token向支付提供商要求扣款,若扣款成功则修改订单状态为SUCCESS。

    订单状态有:RESERVED / SUCCESS / FAIL

目录结构说明

.
├── assets                  # 各种静态资源
├── docs
│   ├── protocol.js         # 前后端交互协议
│   ├── 架构设计.xmind       # 架构设计xmind文件
│   └── 项目要求.txt         # 老师提出的项目要求
├── Servers                 
│   ├── daily               # 日常服务器源文件
│   ├── flight              # 航班供应商服务器源文件
│   ├── order               # 订单服务器源文件
│   ├── payment             # 支付提供商服务器源文件
│   └── update              # 更新服务器源文件
│
├── accounts.js             # 各种附件的密码文件(gitignore)
├── staticWeb               # 前端网页源文件
├── README.md
└── *                       # 其他文件

Getting Start

npm run dev-web     # 开始开发前端网页
npm run build-web   # 编译前端网页

npm run dev-server-daily    # 开发日常服务器
npm run dev-server-order    # 开发订单服务器
npm run dev-server-flight   # 开发航班供应商服务器
npm run dev-server-payment  # 开发支付提供商服务器

项目要求

  1. 三个角色
    • 主网站(android APP+server):人机界面的显示
    • 机票供应商(多家):提供某种方式的服务调用接口,供主网站进行调用
    • 支付服务提供商(多家):提供服务供主网站进行调用
  2. 功能方面的设计(可以考虑但不限于以下功能)
    • 主页:用户注册登录、浏览各个代理商的机票价格(可以查询、排序、多个时间段最低票价的搜索。。。)、可以进行订单的管理(下订单、查询删除订单),前段建议采用ajax的方式进行服务调用
    • 代理商:登录自己的服务器进行增加删除修改实时机票信息的管理,可以查询订票的相关信息、提供机票查询、订票的相关服务给主页网站进行调用。
    • 银行:客户账户的管理(增删改),可以进行帐单的查询(银行客户),银行后台管理可以查询统计每一笔交易信息,提供扣款等服务供主页网站调用
  3. 分布式服务调用的设计
    • 服务的方式:同步(RPC,WEBSERVIC等),异步(消息队列)
    • 服务的治理:代理商和银行的服务如何注册、查找,服务的可用性如何保证(如服务提供者关机维护、网络掉线等)
    • 系统性能:访问者数量比较高,如何避免主网站变慢、查询时间长、宕机等情况出现
    • 服务的有效性:如果保证7*24不间断的服务

验收方案: 机房现场运行程序 如需报优,直接在教室PPT+运行演示 需要编写实验报告,格式随后发给大家