g****u 发帖数: 252 | 1 目前代码的目的是打赌测性能,不是做产品卖钱。
老魏的这个抢票器(要说计数器也行)离整个12306差十万八千里,
但这个和打赌没关系。
各种有志于改进老魏代码的同学能不能稍安勿噪,
看热闹的也不要喊牛。网络那块还没出来,结果怎么样还不一定。
现在如果第三方出来给老魏的代码打补丁,到时候万一老魏
性能超标,goodbug也会不服。
goodbug至今还没有反应。考虑到要让goodbug写客户端评测
这个事情其实是有conflict of interest的,我已经用
C++写了一个客户端了,正等着老魏的服务器出来测试。
大家先不要拿无关紧要的事情让老魏fix。
我这个客户端会在goodbug放出他的客户端,或者goodbug
声明放弃写客户端认输之后放出。
老魏的代码大家都看到了,难道就没兴趣看看goodbug的
代码?
等赌完了,我们再慢慢研究怎么共同提高老魏的代码,
怎么做persistence之类的别的对12306来说是essential的东西。
到时候老魏愿意再写点code就写点,不愿意写反正已有的东西
都在github上,大家fork出来就是。
谢谢大家。 |
|
b****r 发帖数: 672 | 2 【 以下文字转载自 Military 讨论区 】
发信人: bauner (bauner), 信区: Military
标 题: 看到华为的故事,我也糊涂了。来问问大家的理解。如果老魏在美国。
发信站: BBS 未名空间站 (Sat Aug 13 17:23:35 2016, 美东)
看到华为的故事,我也糊涂了。来问问大家的理解。如果老魏在美国:
Long-Term Disability: 象老魏这种情况,一病病几年。前两年还算华为员工,Long-
Term Disability应该是包括的。比方说60%的coverage,这个是每个月工资的60%由保
险公司给吧,公司不再发工资了。另外象自己及家庭的medical, dental也是60%继续
cover?后面几年,华为把他辞退了,这个Long-Term Disability还继续有效吗?
Employee Life Insurance: 如果后几年老魏不再是华为员工了,这个继续有效吗?理
解中,这个保险是cover老魏后面几年的大病医疗及生后事给老婆小孩的吧,一次性给? |
|
b****r 发帖数: 672 | 3 看到华为的故事,我也糊涂了。来问问大家的理解。如果老魏在美国:
Long-Term Disability: 象老魏这种情况,一病病几年。前两年还算华为员工,Long-
Term Disability应该是包括的。比方说60%的coverage,这个是每个月工资的60%由保
险公司给吧,公司不再发工资了。另外象自己及家庭的medical, dental也是60%继续
cover?后面几年,华为把他辞退了,这个Long-Term Disability还继续有效吗?
Employee Life Insurance: 如果后几年老魏不再是华为员工了,这个继续有效吗?理
解中,这个保险是cover老魏后面几年的大病医疗及生后事给老婆小孩的吧,一次性给? |
|
q*c 发帖数: 9453 | 4 催啥, 我的信老魏早看到了。
老魏做我们看看, 老魏早就有用户密码了, 有结果了自然给我们看看。 人不做我也
没办法。 |
|
b***i 发帖数: 3043 | 5 是吗?goodbug同意了?
没有联程我理解,老魏是客户端来查询,比如javascript,完成联程的搜索。然后用户
点击买票,才发送一个请求到最后面的那个抢票线程来完成。
有没有查询,估计差不多。我估计老魏这个思路,搜索联程票也许经过几毫秒的延时,
最后信息变了,但是只要最后买票是否正确不出错就行。这个在票卖差不多的时候用户
多点几次不同线路。
这个就是这个赌约和老魏的解决方案?那么,怎么保存结果到文件,讨论了吗?效率足
够吗? |
|
z****e 发帖数: 54598 | 6 老魏的所谓核心机,其实就是主机的简化
性能差了几个档次,所以只能跑一些非常简单的操作
比如各种int操作,远没有主机靠谱
但是从整体结构上看,所谓的核心机就是老魏版的主机
老魏用一个破烂机器替换掉主机
以节省机器的钱,真是寒碜,堂堂一个国家铁道部
连个主机都用不起,还要省这点钱,关键是真能省下来么?
卖机器的人一般都是鼠目寸光
人工的费用远大于软件的费用远大于硬件的费用
硬件每年都在贬值,要多无聊才会去省机器的钱啊?
斤斤计较算半死,过两年,不用算一样便宜下来 |
|
n*******7 发帖数: 181 | 7 我想清楚了。老魏是对的。
试这个例子。
select top 1 from ticket where A>=1 AND B>=2 ORDER BY C
| A | B | C |
-------------
| 1 | 2 | 3 | 《=qxc result
| 1 | 4 | 2 |
| 1 | 4 | 4 |
| 2 | 3 | 5 |
| 2 | 4 | 1 | 《= 正确
| 2 | 4 | 5 |
按qxc做法,只在{A,B}={1,2}里找最小C。
正确做法是遍历所有满足A>=1 AND B>=2的{A,B},找最小C。这个遍历过程是站数
平方。
不理解为什么是(n/2)^2,我我觉得好像是n^2/2
composite index, the internal is a hierarchy of trees. For each tree, the
order is log(n).
selecting a range of elements is not log(n).
老魏和qxc的数据库做法tickets是一样的,所以很容易对应比较。
db的composite ... 阅读全帖 |
|
s******g 发帖数: 3530 | 8 魏出来在民运道上混的时候, 估计小波还在娘胎里面喝奶吧, 按理老魏资历最深,
类似当年孙大炮在革命党人的地位, 很奇怪 老魏为啥没有统一海外的民运力量?
结果搞得海外民运四分五裂, 不成气候?
是不是有啥人格缺陷? 不能团结人啊? |
|
w*******e 发帖数: 15912 | 9 老魏和晓波都蹲过天朝的笆篱子好多年,老魏参加革命更早,78年他往“西单民主墙”
贴大字报<第五个现代化:民主及其他>时晓波还未出道,可惜起大早赶了个晚集,炸药
奖旁落他人,换成你心里能不搓火嘛。 |
|
|
z****e 发帖数: 54598 | 11 我感觉,老魏那个500w/s能做的实在是很少
不要说复杂的操作,一些非常简单的操作都很难实现
老魏觉得我说的不对,尽管做出来反驳我
这种计算太细微了,一般pc上cpu估计实现不了
我在家里以前试了几次
mac本的cpu到ms就已经很不精确了
打印出来都是一连串相同的数字 |
|
n**x 发帖数: 606 | 12 本人纯凑绕闹,不倾向任何一方。
系统主要特点:
- 多线程。(老魏没有给出具体多少个线程,假定100个吧。我的12 core intel xeon轻
轻松松100 thread)
- 无锁。
- 单机。
数据结构:
1. 全国1000条线 (X1, X2, X... , X1000), 每条20个区段 (S1, S2, S3... S20)。
2. 每条线的每个区段的票的总数计为:T[X1,S1], T[X1, S2]....... T[X1000, S20]
抢票程序(注意举得例子是联票)
1. 100个thread处理收到的请求
2. 每个请求包括三个参数(线路, 起始站,结束战). 比如(234次列车, 济南, 上
海)。 (注意, 234次列车是从沈阳出发,到上海的, 济南是第5个区的开始,上海最
后一个区段的结束)
3. 计算过程就是把234次列车从济南到上海的每个区段的票数做interlocked.
decrement, 如下:
- Interlocked.Decrement( T[X234,S5] )
- Interlocked.Decrement( T[X234... 阅读全帖 |
|
n**x 发帖数: 606 | 13 you are right. 老魏的方案里没有说如何解决这个问题。
老魏? |
|
n**x 发帖数: 606 | 14 加了锁老魏的系统就完蛋了。 不枷锁就会出现你前面提到的本来有票结果出现没票的
结果。
老魏人去哪里了? |
|
z****e 发帖数: 54598 | 15 又不是不让你说
你为什么不说?
说到一点就开始打滚
目前看,同意让老魏和古德霸确定需求的占了大多数
所有人都等着看热闹呢
不做,不配合,那说明什么? |
|
g*****g 发帖数: 34805 | 16 你小看老魏了。老魏发现计数器有问题,已经改回单线程了。发现多线程太难了,还是
单线程比较安全。 |
|
q*c 发帖数: 9453 | 17 没干货是不行,其实就是几小时的事情!
我给老魏老霸老姜出机器, 老魏 16 核的 aws 高端机,老霸 10 台测试机, aws 内
部10千兆网没问题, socket 100MB /每秒 毫无压力。平均20 bytes 一个请求,5MM
tps. 10%转一次车
请求 {
4 bytes transactionId
4 bytes date
2 bytes trainId
1 byte start
1 byte end
1 byte seatType}
返回 {
4 bytes transactionId
1 byte isSuccess
}
老霸麻纺点, socket, tcp 协议。 http 实在强人所难。
1000 车, 20 站, 3种票, 每种1000张。每天60MM 票,实测一小时, 5MM tps. 要
保证有票的情况下 99。9% 要出票。30s 99.9% percentile.
大家同意的话,明天先上中等机器供开发,然后上大机器实测。 |
|
q*c 发帖数: 9453 | 18 好吧,老魏太夸张,我等会给你起两个 8gb 4 core 的,你试试你那程序跨机器的速度
。记着就用那个老魏的数据结构,11 byte
我是很好奇能多块,又没时间!
LOL |
|
c******3 发帖数: 296 | 19 老魏的方案追求快,本质是计数器。某软的测试interlockedIncrement都达到70M/s了
。老魏目标才是5M/s,很保守了。但他最初的方案要换座。车次不变,不同区段,会给
不同座号。7,80岁的老太太,还要每隔几个站就换个车厢座位,多惨呀。完全违反常
理。加入同车同座的要求,暴力解的话,每张票扫一遍,计算量一下增加1000倍。5M后
面一下去3个0。玩不下去了。
goodbug的方案追求吞吐量,可以任意加机器,理论上出全银河系的票都可以。但要命
的是不时实。用户好容易填完单子,提交了,屏幕上显示“是否买到票,以后告诉您”
。晕。这也违反常理。碰上象zhaoc这样一点就火的客户,还不得把设计这个系统的人
问候个遍。
几个用过12306的都说明现在基本上是提交了就立即得到座号。见以下帖子。根本不用
等。用户体验超好
http://www.mitbbs.com/article_t1/Programming/31315263_0_2.html
设计师是不容易当的。好的PM管好码工也很重要。
看来击败12306还得请二爷出马了。期待下一篇“Node又秒XXXXX了”。这回XXXXX应... 阅读全帖 |
|
i**i 发帖数: 1500 | 20 好比你去银行, 门口有一个取号机, 拿到号以后去窗口办手续, 存钱/取钱等等各种业
务.
现在, 取号机每天只给一个号. 不管门口一百个人抢号,打架, 那个拿到号的可以悠悠
闲闲地办手续.
对应到老魏的系统, 号就是那个id, 你买的就是这个id. 外围有一万个机器为银行服务
都与老魏无关. |
|
s********k 发帖数: 6180 | 21 麻烦的事情才是需要解决的事情,得看需要解决什么问题,不能因为麻烦就不做,老魏
要是想做硬件,做上面的网络设计实现,可以联系我。
硬件的门槛现在低了不少,深圳做demo的公司很多,第一版本只要出来就行,关键还是
硬件软件一起,软件不能只提供老魏这样的OS,得有应用 |
|
z****e 发帖数: 54598 | 22 老姜,一般玩法是这样的
我说你做了
你说你没做
好,我确认了
那既然出现了冲突
那就发个毒誓好不好?
就像古德霸说老魏主动问候他家人
你就看老魏敢不敢承认吧 |
|
n****j 发帖数: 1708 | 23 他俩的事关我屁事,老魏说了,狗的爸逼逼了两年,就问候了,怎么着。老魏也是脾气
好能忍两年,换我这种混混,早骂出翔来了。 |
|
z****e 发帖数: 54598 | 24
我可没claim说看不懂,老姜自以为我看不懂而已
单个step的单机就是一个瓶颈,直接掐住整个系统的咽喉
再怎么折腾,都改变不了单机的事实
至于是不是有外围机,那这个其实一点都不重要
不是说有外围机这些毛病就少了的
老魏也说过,这台机器挂了,重启嘛
顶多说搞个热备,现在也已经都不这么搞了
都转成netflix那种搞法了,让chaos monkey进去砸
铁道部,银联什么都是这种搞法
包括visa什么,都是如此了,老魏这一套就是上个世纪的东东 |
|
z****e 发帖数: 54598 | 25
说了嘛,这种方式就是上个世纪的东西
热备你妹,现在只有主机才搞热备,大部分公司早就转成netflix的搞法了
都允许chaos monkey进去砸,说你这套是上个世纪的破烂还不信
我可以告诉你银联就这么搞的
现在谁还搞什么热备啊?
而且两年前的热备是小弟擦屁股擦出来的,老魏根本没想过好吧?
那根本就不是老魏的idea |
|
z****e 发帖数: 54598 | 26
哈哈哈,我们八区的战友属于阶级情怀
我天天追着轮回骂,如果都跟老魏一样,估计轮回海日什么都要跟我真人pk了都
不过老魏这人小心眼,估计以后也就这样了 |
|
f******2 发帖数: 2455 | 27 赵老师,你这样真的很low,没意思。何必糟蹋自己呢?
老魏真刀真枪的拿出代码了,你“牛”也是在嘴上,而且嘴上比你更牛的都玩消失了。
编程版每个语言上有两三个老魏这样的实干家,老刑的流量就有了。 |
|
n*****t 发帖数: 22014 | 28 赵老师你有意思伐,我找出老魏的原帖,你换个帖子继续撒谎。我估计你是爱上老魏了
,跟我们小时候一样,故意往小姑娘铅笔盒里放毛毛虫,不为让人家喜欢你,就为了被
人家骂一通也开心。 |
|
b***i 发帖数: 3043 | 29 你是说,老魏的数据结构可以处理这种请求:一种是多个人同乘一趟车,另一种是一个
人换乘。那么,如果客户端的请求发来包含了多个车票的一致请求,那么,老魏的程序
经过简单修改可以处理这样的请求?
怪就怪在这里。为什么当初不在赌约里呢? |
|
q*c 发帖数: 9453 | 30 终于放假了, 你们这些单机党也太猖獗了。 有点时间给你们个堆机器版的。 不过时
间很少所以剩余的自己脑补。
老魏你说的能达到你的单机版的 1/10 就了得了,你的也就几M/s. 你看看我这个版本。
用的全是 proven technology. 有点经验的一看就知道肯定能 work. 全套卖票。
当然你也说了, 我这个酒不需要实现了, 因为比较麻烦。 不过你看看就知道肯定无
问题
实现的和你那个功能完全一样。
前段, 无状态的 web server. 接受订票. 受到订票直接转到相应的中间集群。
中间, 是按照用户 id hash 的 用户数据库群 + 用户 controller.
收到订单然后在数据库中产生该用户的订票信息. 比如有三张连票,
userid, orderID, start1, end1, status = processing
userid, orderID, start2, end2, status = processing
userid, orderID, start3, end3, status = processing
后端, 是按照车次hash ... 阅读全帖 |
|
n*******7 发帖数: 181 | 31 仔细看了你的方法。“从小到大的顺序开始去后端数据库锁票”和“任何异常情况,
返回失败, 已经
索票的数据库自动回卷”归结到数据库底层的实现,都是需要锁的,只是高层应用看不
到罢了。我同意“这些都是自动功能, well tested in real world.”。但实际做出
来,肯定不会有老魏的做法快。你一个车次一个数据库,老魏也一个core只管一个车次
,他的速度快上百倍都是很可能的。
再换一个做法,就用单机,直接实现用C实现roll lock和自动回卷,因为用锁了,比老
魏的做法慢,但是,因为省去数据库的overhead,还是应该比你的方法快。
当然,你的方法是在通用方面是有优势的,就是不要比性能了。 |
|
q*c 发帖数: 9453 | 32 没人比性能啊,那是老魏说联机版的连他现在这个 几 兆票 每秒 的 性能的 10 分之
一也做不到。
我是给个例子,就是联机板的,质量绝对保证不出错,而且能 scale 的, 性能可以上
去。
你说用现成轮子,性能一般都比不上你单独开发的专门系统,这是肯定的。 但是用轮
子的好处就是通用嘛,不需要多少年不断的慢慢 fix bug, 因为别人已经帮助你做了,
也不需要依靠一个人的人品,保证能出货。
更何况老魏那东西车站一多就是平方下降(我没看 code, 看前面说的)。 我这个办法
哪怕是几年后无人汽车10000站一条线,性能不变,他那个就要下降 1万倍。 这个联
机版的扩展性好的多。
所以要是出去忽悠,J这 sql 联机版的肯定忽悠能力比单机的强。 |
|
k****i 发帖数: 101 | 33 老魏难得冒泡,
抓住交流下。
国内经济转型,
装备制造业寄望于
包括以物联网连接
大数据支撑的智能制造。
假设某国内初创公司
专注于智能制造,
同时希望
整合智能家居
以完善产品线。
你觉得有无合作的可能?
从成就事业的角度,
双拳难敌四手,
取长补短,
资源整合,
共赴前程为上策。
反之,
或为理想,
或是爱好,
或难为凤尾,
则另当別论。
想听听老魏的看法。
:多少年没更新的网页了。
: |
|
x******y 发帖数: 6946 | 34 老子有希拉里和她老公的私人email, 选举时也是支持的希拉里, 但是朗朗这事连想都
没想过跑去说。
老魏这还算中华民族的子孙么? 恨不得当年在广场上就捅了丫的 |
|
|
|
s*****V 发帖数: 21731 | 37 坐牢出来的时候太早了,当年国家地位还不行。如果两个人都在牢里,肯定是老魏得。 |
|
z****e 发帖数: 54598 | 38 一天到晚在这里吹一些不着边际的牛
有意思么?
我代码都写了一堆了,回头看
这丫的还在这边吹这些破烂
累不累?
老魏的逻辑就是,我的产品比cassandra强一万倍
就是强一万倍,一万倍,一万倍,没完没了
尼玛,你要真强一万倍,赶紧做成产品去赚钱
如果想装逼一点,就做成开源,让人民受益
你一天到晚在这边吹牛,有意思么?
还跟人计较半天,你看我是这么实现的
别搞笑了,谁在乎你怎么实现的? |
|
z****e 发帖数: 54598 | 39 还记得你自己说的最初的目的是什么么?
我来替你重述一遍
就是,有些东西,如果你来做,会不一样
ok,那假设有些东西==12306,会不一样==能搞定
如果你不同意这个前提,我没话说,但是我相信正常人应该会这么认为
但是问题在于,铁道部的问题在于票少人多
怎样设计系统,都会造成很多人买不到票
你怎么设计,结果是不是都一样?
我们不需要谈技术,你已经挂了
其实我从头到尾只有一句话跟你说
你这么做,没有必要,并且不能解决实际问题,因为你前提就错了
码农要明白为什么而码,不要为了码而码
老魏你同意这一句么? |
|
n*****t 发帖数: 22014 | 40 你这最后两句有隐形 PA 的嫌疑,LOL
我同意,定 scope,双方都能妥协的,也不需要花太多钱,往古德八靠,降低指标,往
老魏靠,降低条件。最后做到啥样算合格,大家评判。
无论谁输谁赢,都算实实在在做了事,不丢脸 |
|
n**x 发帖数: 606 | 41 我其实也很想知道。interlock要霸占总线,多出好几个cpu cycle. 不过老魏说没问题
呀。呵呵。 |
|
n**x 发帖数: 606 | 42 按照老魏的说法,这已经有联票了:
北京到上海:北京-〉济南, 济南-〉上海。 每一段重复step #3 |
|
N*n 发帖数: 456 | 43 应该每个车次一个锁。。
否则按老魏的算法到后来有可能整票(从头到尾的)有票卖不出去,区间
票倒先卖掉了 |
|
z****e 发帖数: 54598 | 44 说再多,没用
不信你能做出来
我现在对500个伪币很有信心了
追加500个,赌老魏搞不定 |
|
|
z****e 发帖数: 54598 | 46 老魏,我说了,我不PA你
你为什么PA我?
我一不信你说的,你就疯狂pa我
为什么呢? |
|
z****e 发帖数: 54598 | 47 给你点拨一下
老魏就自以为解决了商业逻辑的问题 |
|
z****e 发帖数: 54598 | 48 所以一开始就没觉得有多好玩
谁知道老魏玩这个玩了整整三个月
我的天 |
|
z****e 发帖数: 54598 | 49 第一,控制并发线程数,控制在16个左右
第二,用计数器来替换锁,因为并发线程数量少,所以也很难出现一些互斥的情况
想表达的就是这么一回事吧?
什么全国一盘棋,太过于拗口了,忽悠
当然这样会有问题,牛逼网卡能解决,至于是不是真行
老魏担保,信不信就看你自己了 |
|
g****t 发帖数: 31659 | 50 你妈教你这么说话的吗?
我老只好退散了。
李嘉诚也不懂怎么实现12306,你算个球啊
李嘉诚懂的买东西就行了。你是不是球都不算。
我觉得这里就你智力最低。你真的没看懂老魏说的是啥。 |
|