由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 春运系统的一个方案(ZT)请大家点评
相关主题
Celery in Golang and Scala?问个问题.shell/perl
NASDAQ match engine is written in Javacode profiling 的问题
server端用Threadpool实现request/response的两种不同方法比较请教如何实现:几百个点find 20 largest values in C
how to know the contents in Message queue?windows桌面画图刷新一问
做项目的土鳖不和你们开了GOD模式的瞎掺和了innerHtml的问题
goodbug看过来,欠你的一个道歉请问一个关于web编程的问题
[转载] 问一个C++下计时的问题[合集] Linux/Unix下时间的精度 (转载)
C里面的延时函数线程中可以循环延时吗?
相关话题的讨论汇总
话题: 系统话题: 铁道部话题: queue话题: 数据库话题: 服务器
进入Programming版参与讨论
1 (共1页)
k***s
发帖数: 277
1
是转载,这个链接中海油很多评论
http://www.ccthere.net/thread/3798488
是西西河中的大鱼 布老虎 写的
(这是另一篇相关的介绍,属于业内人士写的 http://www.ccthere.net/thread/3793728)
请各位大牛点评一下。
(不知道如何排版,大家将就一下)
为了避免铁道部把这个系统再次搞成世界级的笑话,那我就免费给他们大概地,简单地
设计一个每秒千万级响应的系统吧。
首先,实际的做法是eventual consistency,而不是immediate consistency。全世界最
大的电商Amazon,就是eventual consistency的老祖宗。有的同学提出async
processing,算是摸着点儿边了。IBM之流肯定会忽悠你去搞一个实时交易系统,然后通
过系统硬件升级狠宰你一刀。注意,这就一个人民群众买车票的系统,我草,别把自己
当NYSE了。
其次,绝对不能和其他系统互联。高峰时间的流量未必能crash铁道部的这套系统,但
是一定会搞死工农中建的交易支付系统。简单的解决方法就是全国人民用身份证号登陆
,事先在铁道部的系统里存钱。
最后,所有的数据库必须offline,绝对不能让实时的流量冲击数据库,不管是NoSQL还
是SQL,这帮数据库都不行。Oracle肯定一定绝对会忽悠铁道部升级到“高级”数据库
。铁道部的“专家们”,请一定要大叫呀咩跌。
好了,下面就是系统描述:
查询车次:请求被负载均衡到任意一台前端服务器,前端服务器直接按车次/时间把做
好的html从一个hashmap里取出来,扔回去给用户。全部响应时间应该在毫秒级。
有勤于思考的同学就要迷惑地问,这个车次之类的东西,难道不更新吗?我摸摸这个同
学的脑袋,慈祥地说,“this is a good question.”。每个前端服务器都定时(每5
秒吧,要不每3秒?每2秒?)从后端的cache里取出更新数据。No, no, 先不要问这个
cache的问题,叔叔马上告诉你。
下订单:请求被负载均衡到任意一台前端服务器,前端服务器知道这哥们要下订单了,
二话不说把订单扔到一个message queue(叫做fund checking queue吧, 瞧,我连变
量名字都替铁道部起好了),然后返回一个响应给用户,订单已经提交,请查email或
短信。全部响应时间应该在毫秒级。
后端服务器先检查这哥们的钱够不够。因为这钱已经存进铁道部的系统, 这就直接在
铁道部的数据库里(就叫存款数据库吧)查询就行了,用不着到工农中建的服务器上去
做啥web service。钱够了,直接扣就行。简单的按身份证号sharding数据库table就行
了,200个MySql serve, 每个32G内存,够全国人民用的吧?全部响应在毫秒级。
如果这哥们钱不够,把请求扔到一个message queueu(就叫insufficient funds queue
吧), 然后email 短信啥的就不多说了。
如果这哥们钱够了,先扣钱,然后把请求扔到一个message queue(就叫 seat
checking queue 吧),这个queue主要就是占座位了。如果座位被占了,那么就回到存
款数据库里把钱退回去。如果座位还有,那么就占座,然后发送两个message, 一个
message到另外一个message queue (就叫做cache update queue吧),这个queue的任
务是更新第一步里面的cache(看,叔叔没有骗你吧?)。另一个message当然就是发短
信确认订座了。 这一步的响应也应该在毫秒级。
当然肯定存在这样的二百五,事先没往铁道部的系统里存钱,要订座了才开始存钱。也
有的无聊人士定完座之后不愿意等,不停地刷个人账户的网页看看有没有更新。存款的
过程会比较慢,因为要和其他银行系统互联。个人账户/订票历史网页倒可以飞快,把
前面的系统照抄一遍就可以了。
7. 当然中国电信/移动/网通之类的必须在春运期间保证铁道部的带宽,如有差错,那
就必须不得不把这几个老总们与数名女性发生或保持不正当性关系了。
至于https reverse proxy之类的load balancer问题,就留给小的们办吧。
那么大概盘算一下开销,前端服务器/cache/数据库/message quque,每样来个300台吧
,那就1200台,每台大概$1000,一两百万美刀左右吧。加上开发费用,5个mil美刀应
该搞定了。报价个2000万美刀不过分吧?
其实像这样的系统实在太初级,世界上现有的highly scalable (Amazon EC2 可以随时
调用数百上千个instance救急),高频系统(NYSE的高频交易系统让Knight Capital在
一个半小时内损失4.4亿美元),那处理的交易流量不知道比铁道部水平高到哪里去了
,人家还不是谈笑风生就搞定了?
你们呀,还是图森破,奶一捂。
f****4
发帖数: 1359
2
回复很精彩
谢谢了~
d******e
发帖数: 2265
3
看前端优化那部分,连我这个外行都看不下去了。
简单的动静分离,减少动态流量都没有。是在是流于表面。
等于全是放屁。

【在 k***s 的大作中提到】
: 是转载,这个链接中海油很多评论
: http://www.ccthere.net/thread/3798488
: 是西西河中的大鱼 布老虎 写的
: (这是另一篇相关的介绍,属于业内人士写的 http://www.ccthere.net/thread/3793728)
: 请各位大牛点评一下。
: (不知道如何排版,大家将就一下)
: 为了避免铁道部把这个系统再次搞成世界级的笑话,那我就免费给他们大概地,简单地
: 设计一个每秒千万级响应的系统吧。
: 首先,实际的做法是eventual consistency,而不是immediate consistency。全世界最
: 大的电商Amazon,就是eventual consistency的老祖宗。有的同学提出async

1 (共1页)
进入Programming版参与讨论
相关主题
线程中可以循环延时吗?做项目的土鳖不和你们开了GOD模式的瞎掺和了
我写的CUDA屏保软件 (转载)goodbug看过来,欠你的一个道歉
关于big data[转载] 问一个C++下计时的问题
所谓的nano second都是骗人的吧C里面的延时函数
Celery in Golang and Scala?问个问题.shell/perl
NASDAQ match engine is written in Javacode profiling 的问题
server端用Threadpool实现request/response的两种不同方法比较请教如何实现:几百个点find 20 largest values in C
how to know the contents in Message queue?windows桌面画图刷新一问
相关话题的讨论汇总
话题: 系统话题: 铁道部话题: queue话题: 数据库话题: 服务器