主题:【原创】身为码农,为12306说两句公道话 -- 代码狗
但是某些中国人是真的不明白,还是假装不明白?国企的国不代表一个国家的钱都投资在这一个企业身上,也是分开来一点一点的投的。所以再多的国企,具体的来看也是一个个个体,和淘宝并没有什么两样。不要再拿什么马云创业很辛苦来突显私企,真要认真追究,国企的建立更辛苦,甚至饱含了最少三百万土共党员铁打的肉体牺牲。
国企里的从业人员是从业人员,淘宝的从业人员也是从业人员,为何一定要向淘宝开放才叫做不损害公众的利益?
如果以铁路和淘宝来说,其实真正的公众是在铁路和淘宝之外的人。若真是公平的,倒应该是铁路和淘宝同样向对方公开,这才是真正对公众有利。
南方系叫喊的公众利益,只不过是希望国家资源一边倒的流向私人企业而已,只不过是希望垄断的企业从国企转变为私人企业而已。我看不出这于公众有何利益,至少在我的认知里,我不认为私人企业会比国有企业更能造福这个国家和这个国家的人民。(还是要应景的加一句‘国企确实有很多问题’这句话,免得有人抠字眼反驳,于我而言无意义,因为在我看来,私企也同样是一堆问题。)。但却可以明显看到在损害铁路内几十万员工的利益。甚到在损害几千万国有企业员工的积极性,创造性。
几千万国有企业员工当中,居然没有优秀人才可以搞好12306?铁路没有,中石油也没有?几千万国有企业人员中,没有优秀可借调到铁路去的人?非得向淘宝输送利益才能搞好?这一点我是一点也不相信的。
至于忘情,我对他的定位其实就是清流。清流会很执着,讲得都是真话,但清流不见得能看得多全面。清流也会有自己的某些坚持。
广州铁路方面已经在开始叫基层一线的所谓合同制员工下岗了,忘情知道吗?
余票查询,分配,前面有人提到了硬件加速,这是可行的,算法其实更简单。
核心,还是位表。
其样子大概如下:
0 表示空闲,1 表示占用
座位号 | A 区间 | B 区间 | C 区间 | D 区间 | E 区间 | F 区间 | G 区间 | H 区间
-------+----------+----------+----------+----------+----------+----------+----------+----------
1 | 0 0 0 0 0 0 0 0
2 | 0 0 0 0 0 0 0 0
3 | 0 0 0 0 1 1 1 1
4 | 0 1 0 0 0 0 0 0
5 | 0 0 0 0 0 0 0 0
6 | 1 1 1 1 0 0 0 0
7 | 0 0 0 0 0 0 0 0
8 | 1 1 1 1 1 1 1 1
9 | 0 0 0 0 0 0 0 0
...................
求区间余票,比如 B 到 G,只要把这个位表的相关区间按列取出,进行 “或” 操作就行了,最后得出的位表,就是查询结果。
考虑到一个车次的总车位在数百到数千,那么这个位表的总数据量大小不会超过数百 KB。
这个算法完全可以用 FPGA 或者专用的 ASIC ,位表操作和结果判定可以用硬件并行进行。
基本上来说,查询速度有多快,只取决于芯片能跑多快的频率。如果芯片工作在 1G 的频率,10个Cycle 处理一次查询或者订票请求,做到每秒一亿次是没什么问题的。
世界级难题? 我就笑笑 ...................
如果真如某篇不要脸的吹牛B 文章所说的。
12306 曾扬言 “钱管够”。
那无论是华为或者是思科,都能把订票功能内置到骨干网的路由器里面去。
唯一就看中国电信的骨干网有多快了。
毕竟身份验证的强度比刷票的强度要低很多,呵呵。
有同步和能保证事务是两个概念。
从下文可以看出12306的确是全部在内存中处理,而且是冗余内存。也就是说要坏就要冗余内存都坏才会造成数据丢失。问题在于软件就会有BUG,如果因为各种原因造成两份内存数据不一致,又怎么办呢?
所以这些都是外围的解决方案。GemFire既然叫分布式内存数据平台,而不叫内存数据库,就说明了其对事务的担忧。但是在某个具体的应用,比如12306,非通用软件,比如一个数据平台就可以使用,通过其它手段尽可能保证事务,比如排队等。这个跟淘宝把MYSQL的事务瘦身,然后承担出错风险,本质是一样的。
所以12306通过冗余内存来提高性能的办法,不叫专业,叫外行。这里并非说外行不能解决问题,而是更多风险而已。
GemFire分布式内存数据平台的原理为:
通过云计算平台虚拟化技术,将若干X86服务器的内存集中起来,组成最高可达数十TB的内存资源池,将全部数据加载到内存中,进行内存计算。计算过程本身不需要读写磁盘,只是定期将数据同步或异步方式写到磁盘。GemFire在分布式集群中保存了多份数据,任何一台机器故障,其它机器上还有备份数据,不用担心数据丢失,而且有磁盘数据作为备份。GemFire支持把内存数据持久化到各种传统的关系数据库、Hadoop库和其它文件系统中。12306之前采用Unix小型机架构,采用GemFire技术改造成Linux/X86服务器集群架构。
你告诉我他们不懂使用抢票软件?这样的人即使没有抢票软件能抢得过黄牛和其他人?
你的方案还需要维护136个最小值。。。
假设有n个站,你和楼主的方案读操作的时间复杂度都是O(1),写操作的时间复杂度都是O(n^2)(某个商品减少时,会需要要求修改O(n^2)个相关的最小值),所以本质上是一样的。
如果不维护136个最小值,那就是16个商品的做法。这样读的复杂度是O(n),写的复杂度也是O(n)。
所以楼主的说法没错,如果读的请求远远大于写的请求,用牺牲写操作性能来增加读操作性能的方案更优。
指定的就是有明确的车次和座位,不指定的可以上一段时间内任意的车,坐任意的位子。
平时车子基本都坐不满的时候这样还算好的,节假日高峰期据说一样头疼。
没想到是老大出现,失敬。
SSD有自己的优势和缺点,不考虑价格只考虑技术。
所以对SSD要有另外的算法去处理。
新的软件都支持了,所谓硬件识别算法。
但是SSD的缺点也很明显,比如容量,寿命,稳定性等等。
所以目前的主流做法,SSD也作为一种补充,是辅助用法。
从GEMFIR的描述来看,用的也不是SSD。
问题的关键是各种辅助用法或者外行做法,说白了就是打补丁,
也就是说核心的东西改不了,大家就在外围打补丁。
补丁打的多并不是好事情,不知道那块会出错。
出了错,连找谁哭都不知道。
特别是
我臆测一个你的潜台词,这不是中国人的钱,这是共产党打江山得来的钱,这钱爱给谁给谁,用不着我管。呵呵,可惜这不是所有共产党当权者的想法,就像旧社会的地主老财,也会希望找个合格的管家,起码对最卖力气的长工多给点红包。相反几个奴才,拿了东家的钱,不好好干活,偷懒耍滑,贪污自肥,还对东家说这是肉烂在锅里,东家能干吗?
至于说东家希望淘宝一起来参与竞争,不是东家对淘宝更好,而是为了这份家业更发达。这就像让亲儿子修房子,结果他好吃懒做,几个月也盖不好,自然花钱请村里的能工巧匠几天就盖完了。这样的地主老财傻吗?
帮同学订北京到枣庄的票,走的是京沪高铁,到枣庄的票几乎一分钟内就没了,但是同一线路到上海的票在三个小时后还有几百张!没办法只能花了多一倍的价钱没了到上海的票,至少能保证回家。所以充分怀疑是每个站的票都是预留好的。
http://paper.people.com.cn/rmrb/html/2014-01/20/nw.D110000renmrb_20140120_1-13.htm
12306 春运能否不瘫痪(民生三问)
对话人:铁路12306技术负责人 朱建生 本报记者 陆娅楠
《 人民日报 》( 2014年01月20日 13 版)
朱建生:我觉得网友“代码狗”在西西河论坛中发表的一个帖子里有一段话非常专业:从物理原理讲,服务器每秒钟能承受的计算量是有极限的。从经济角度考虑,一个网站不太可能以最高峰值的承受力为标准来建设。
现在有个保险箱,它的密码我们猜了很多年都没猜出来。你给我们写了封信,说:“为什么不试试112233这种组合呢?最简单的往往就是对的!”——我的问题是:是什么让你觉得我们没有试过?
银行都没有拖垮移动通信系统,春运应该不至于吧?