Giter Club home page Giter Club logo

distributedservertest's Introduction

《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+运行演示 需要编写实验报告,格式随后发给大家

distributedservertest's People

Contributors

sleaf avatar

Stargazers

 avatar 九条涼果 avatar dccif avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.