正在加载
澳门永利娱场官方网
版本:v5.6.5
类别:理财
大小:36M
时间:02月15日


AI智能猜你在找:


温馨提示:苹果用户下载后须在:设置>>通用>>设备管理,添加信任!安卓用户可直接下载!

该app属于无毒绿色应用程序,请用户放心下载使用!

  • 特色安全
  • 澳门永利娱场官方网
  • ios系统下载
    

      记得几年前,一到过年用12306买票就成为了一大难题,各种服务不响应,后来就是各种显示排队中...当时还有同事跟菠菜开玩笑说,要不你跳槽过去给他们优化优化?也有同事开玩笑说12306是几个毕业生做的...开了个人公众账号后,菠菜就一直挂念着,如果我去设计12306,该如何支撑超高并发场景呢?不过呢,考虑到大家的阅读时间,菠菜会分为两篇文章来写,本文着重讲一下该如何实现查车次,查余票,购票的,下一篇文章会着重写一下如何支撑春节的购票高峰。

      一个车次,会经途n个站,而n个站点都可以单独的拆开来售卖,比如:北京-廊坊-天津-德州-济南,用户可以买北京-天津的,也可以买天津-济南的,那如何根据我的起始点查询到相应车次,以及购票,是需要好好设计下的。

      先来定义几个名词:train表示列车,ticket表示票,site表示站(如北京站、廊坊站),order表示购票记录。它们的结构定义如下:

      注:这里值得注意的一点是,乘客购买的其实不是t澳门永利娱场官方网icket,而是ticket中的一段,只不过有些乘客会购买整段的ticket而已。另外所有的结构定义仅仅给出了关键字段,不求全。对于这些结构如何在MySQL中存储,大概如下:

      这里将用到倒排索引(菠菜之前在RTB-DSP中介绍过,有兴趣的小伙伴可以再看看)。首先按照天来建立索引(后边在介绍类似索引时默认去掉了天的维度,是为了方便),然后每天里会建立两个索引簇:起点、终点,最后遍历所有列车,根据列车所包含的站点建立相应索引,注意的点是,列车的起点只能在“起点簇澳门永利娱场官方网”中建立索引,列车的终点只能在“终点簇”中建立索引,而其他站点在两个簇中都要澳门永利娱场官方网建立索引。如下图:

      假设有两列车,A、B,建立索引后,如果检索“天津-济南”的列车,最终会检索出A、B都可以到。

      查询出列车后,列车对应的票就自然而然的可以得到,这里余票检索菠菜暂时给到的办法是遍历,如果使用倒排的话,成本比较高,主要的问题在于下图:

      假设有一张票是澳门永利娱场官方网北京-济南的,而中途廊坊-天津的已售,那么参考车站的倒排索澳门永利娱场官方网引模式,起点簇有北京,终点簇有济南,而如果用户查询北京-济南的余票,就会将这张实际不符合的车票查询出来。

      而遍历会有性能问题吗?我们可是要支撑春节高并发场景的。菠菜做了一个测试,假设一列车有20(车厢) * 20(一节车厢的排数) * 5(一排有5座) = 2000张票,而每张票假设有20个站点,即40000万个站点要遍历,那经过菠菜测试,耗时不超过40微秒,假设用户查询余票一次查询50趟列车的余票,那总共耗时在2毫秒,性能足够了。

      不过还有一个地方需要达成共识,就是在高并发下,余票一定是不准的,在查询的时候是允许有误差的。但是在购票的时候,这个误差是不允许存在的。导致误差的原因有很多,比如当查询出余票为3的时候,返回给客户端展示,但是在这个时间段内,已经有他人成功购买了一张票,这时余额应该是2。

      由于查询余票我们采取了看似暴力的遍历方式,然后这让购票变的简单。其实高并发下,写操作一定需要锁,而锁的粒度越大,整体的性能越低,而目前的数据结构,会让锁尽可能的小。

      首先用户会选定某一车次,并且给出起终点,然后参考上边的查询逻辑,查询出车次的全部余票,注意,这里是余票,而不是全部车票,因为如果是拿全部车票去逐个遍历是否可以购买,会让锁的范围变大。

      遍历余票,需先对ticket进行加锁,然后再次确认该票是否符合用户需求(查询跟操作是两个时间点的事儿,怕这两个时间点之间车票有变化),大体如下:

      本篇文章是在比较微观的角度去看如何实现基本的查票、购票过程,下篇文章会在比较宏观的角度去上思考,如何支撑春节超高并发的流量,而且还要保证高可靠性。

    展开全部收起
    留言专区
    热门评论
    • 赵羿 02月15日 23:28

      黑铁酒吧里熙熙攘攘,是各路怪杰异士时常帮衬的处所,而科林烈酒也喜好这里。

    • 朱爵乐 02月15日 15:55

      换句话说:有人已经经庖代了你正在《金卡戴珊:好莱坞》游戏中的重要地位,那你就连忙拿脱手机也接纳一些步伐。对此,德马西还称,他认为智妙手表游戏照旧一个初期现象,正在两到三个或者更多的摩尔定律周期内还很难成为支流,并且这些产物的价钱还会随之上涨。

    • 吴玟欣 02月15日 05:34

      操作简朴,简朴明晰的操作界面,细心详实的功效注明,让你操作更简朴。

    • van♂ 02月15日 04:14

      近程挫伤-62。5%(梦魇地带中为-25%)

    • 王如超_Z1tC 02月15日 15:06

      北京柏诚珈铭商业无限公司LMBLTS562

    ×