02-项目系统架构

news2024/11/23 12:45:26

1、为何选择xxxxx

1.1、高并发场景有哪些?

商品秒杀,双11
微信支付宝平台
微博突发热点
用户操作日志
购票平台

1.2、为何选择xxxxx

业务复杂度高于淘宝双11,考验个人程序设计能力

动态库存

选座功能

线上线下        持续高并发业务,需要更综合的高并发设计。

不停的刷票

绝不能超卖

2、如何解决忙碌问题

提高处理能力:QPS和TPS

        堆积硬件

        软件:Gemfire

        算法:模型、逻辑

削峰

        业务:验证码、分时段、排队

        技术:限流、异步

3、持续秒杀高并发技术

前端

        针对静态资源做CDN

        页面静态化

        倒计时&Loading

        使用验证码削峰

后端

        微服务-服务拆分

        负载均衡

        限流降级

        缓存

        令牌

        异步处理

数据库

        分库:业务分库、读写分离

        分表:横向分表、纵向分表

        冗余设计,反范式,空间换时间

        分布式数据库

其它

        分时段秒杀

        弹性扩容

        候补+排队

4、如何保证不超卖、不少卖,还要能承受极高的并发?

 4.1、模型设计&逻辑实现

余票查询:记录站站余票

        一列火车有5个站,可拆分成4+3+2+1=10条站站记录。

座位购买:记录座位销售详情

        一列火车有5个站AE,1号座位:0111,代表只剩AB可买。

5、系统核心功能

6、 系统的功能模块划分

gateway 网关模块:路由转发、登录校验
member 会员模块:会员、乘客、已购买的车票
business 业务模块:所有的车次数据、余票信息
batch 跑批模块:所有的定时任务,可通过界面启停
web 模块:会员相关界面
admin 模块:管理员相关界面

7、系统架构设计

加入common模块,放置公共代码;

制作generator代码生成器模块

加入中间件及微服务组件

 

8、 数据库表

会员模块:

        会员表:手机号

        乘客表:会员ID,姓名,身份证,旅客类型

        车票表:会员ID,乘客ID,乘客姓名,日期,车次信息,座位信息

业务模块:

        车站表:站名,站名拼音

        车次表:车次编号,车次类型,始发站,出发时间,终点站,到站时间

        到站表:车次编号,站名,进站时间,出站时间,停站时长,里程

        车箱表:车次编号,箱号,座位类型,座位数,排数,列数

        座位表:车次编号,箱号,排号,列号

        每日车次表:日期,基础车次信息

        每日到站表:日期,基础到站信息

        每日车箱表:日期,基础车箱信息

        每日座位表:日期,基础座位信息,销售详情

        每日余票表:日期,车次编号,出发站,出发时间,到达站,到站时间,

                                各种座位的余票信息

其它:

        quartz相关表

        seata相关表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/597150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G宏基站的形态5G基站长什么样?

据说,全国建了约273.3万个5G基站。 真是春城无处不飞花,5G遍布千万家。 今天我们换个轻松的话题,来看看春光下的5G宏基站。 胜日寻芳泗水滨,无边光景一时新。 等闲识得东风面,万紫千红总是春。 古人在春游时寻芳&am…

QGIS 对 GeoJson 文件数据进行压缩

项目场景 地图开发,友商提供的是边界Shapefile文件,文件比较大,例如某个文件就 29.2 M ,这么大的数据,在echarts 上显示地图,前端会很卡,特别是有地图下钻的时候,体验很不好&#x…

【终极计算平台】上海道宁为您提供​Wolfram技术,支持跨桌面、云、服务器和移动设备的强大工作流程

Wolfram帮助世界 加快研究、教育、技术发展和 革新的步伐 无论您所在任何领域 无论您需要任何应用 Wolfram技术都是您的终极计算平台 Mathematica 具有 涵盖所有技术计算领域的 将近 6,000 个内置函数—— 所有这些都经过精心制作 使其完美地 整合在Mathematica系统中…

黑马优购学习笔记

1. uni-app 简介 uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码,可发布到 iOS、Android、 H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。 详细的 uni-app 官方文档,请翻…

PX4之commander详解

如前所述commander的作用主要处理各种事件,调度控制系统的运行,事件包括遥控输入、用户指令、状态变更等。调度的作用主要设置控制系统运行的变量和模式,以使控制系统按照用户期望的模式运行,实现不同的控制功能。控制系统主要由n…

PIC 使能485/422_Part2.1使能485_Tx_Only

1.需求 工作中需要把目前设备的单向232转为485/422模式,实现双向通讯,目前查找相关资料。突然想到一件事,我是否能让232现有的单向上发线同时连工控机的tx,rx,然后靠协议,来定时切换PIC一侧的tx rx?PIC可能不支持这个…

零基础学会用Airtest-Selenium对Firefox进行自动化测试

1. 前言 本文将详细介绍如何使用AirtestIDE驱动Firefox测试,以及脱离AirtestIDE怎么驱动Firefox(VScode为例)。 看完本文零基础小白也能学会Firefox浏览器自动化测试!!! 2. 如何使用AirtestIDE驱动Firef…

MyBatis 所有的 jdbcType类型

MyBatis处理MySQL字段类型date与datetime 1) DATETIME 显示格式:yyyy-MM-dd HH:mm:ss 时间范围:[ 1000-01-01 00:00:00到9999-12-31 23:59:59]2) DATE 显示格式:yyyy-MM-dd 时间范围:[1000-01-01到9999-12-31]3&#…

【SpringCloud】1.一文带你入门SpringCloud微服务

文章目录 1. 搭建父工程2. 搭建注册中心3. 搭建一个服务提供者4. 搭建一个服务消费者5. 整合OpenFeign实现服务之间的调用 1. 搭建父工程 最近打算使用 springcloud 搭建微服务玩一下,用到的东西大致有以下这些: jdk 1.8idea 2019maven 3.6.3springclo…

CS5466应用电路图|CS5466设计方案原理图|TypeC转HDMI8K30HZ(4K144HZ)芯片方案原理图

CS5466支持dsc1.1/12a压缩视频传输,是一款Type-C转HDMI8K30HZ或者4K144HZ方案芯片,其设计原理图如下: CS5466 Type-C/DP1.4转HDMI2.1的显示协议转换芯片, 内部集成了PD3.0及DSC decoder,可支持DP 2Lane最高8K30或4K144, 并能按客户…

拉取maven项目 pom出现 The <project> element is the root of the descriptor.

引入将各个module 修改JDK版本为1.8,然后再修改 Perferences -> Build -》Compiler -> Java Compiler各个版本,对各个项目改为1.8

Docker容器学习笔记

一、初始Docker 实质上:是将开发的代码和运行环境打包成一个容器。解决开发(开发环境)、测试(测试环境)、运维(生产环境)之间的沟通交流。 1.1Docker的概念 docker:解决跨环境迁移…

B. 广告投放

B. 广告投放 Problem - B - Codeforces 思路:对于这个题来说,我们很容易可以想到是一个dp问题,我们可以使用f[i][j]表示我们已经处理了前i-1个问题,并且当前剩余的人数是j的情况下,能够得到的最大的收益,那…

共享内存(内存映射的使用、注意事项、进程间通信、systemV共享内存)

一、内存映射 概念:使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通内存一样对文件进行访问,不必再调用read,write。 mmap()的优点: 实现了用户空间和内核空间的高效交互方式 二、函数定义 void *mmap(void *ad…

PMP课堂模拟题目及解析(第17期)

161. 项目发起人任命一位高级工程师到指导委员会,来帮助监督项目管理计划。该工程师经常不同意由项目团队制定的计划,并在提交批准之前对项目管理计划表达严重关切。项目经理应该怎么做? A. 通知项目发起人,该工程师延迟了规划过程…

2、Kingbase - 修改密码报错

情况 Kingbase数据库修改密码后,重新连接失败 提示信息 致命错误: 用户 "system" Password 认证失败 (kbjdbc: autodetected server-encoding to be GB2312, if the message is not readable, please check database logs and/or host, port, dbname, u…

软件外包开发项目管理工具

随着软件项目的规模越做越大,项目管理人员需要使用工具管理项目进度,从而更有成效的管理好软件开发进度。软件开发的进度管理工具有很多,今天和大家分享一些常用的系统工具,希望对大家有所帮助。北京木奇移动技术有限公司&#xf…

phpStudy2018 mysql启动失败问题

phpStudy2018 mysql启动失败问题 1.winR运行窗口输入services.msc,检查服务里面有MySQLa没有。 有,就打开服务 没有,就打开phpstudy面板,点击其他选项菜单——>服务管理器——>MySQL——>安装服务;然后刷新…

C++ 继承 文字+图片+代码 超详细解刨

什么是继承? 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。 继承呈现了面向对象程序设计的层次结构&am…