Loading

12306咋抢不到票?还搞不瘫他?

12306咋抢不到票?还搞不瘫他?

学习了:http://blog.csdn.net/suifeng3051/article/details/52607544

https://my.oschina.net/xianggao/blog/524943

https://www.csdn.net/article/2015-02-10/2823900

https://www.csdn.net/article/2015-03-03/2824091

http://www.chinaz.com/web/2015/0508/404608_2.shtml

https://www.zhihu.com/question/27321479

12306是2011年底上线,2014年淘宝讨论将余票放到云上;75%的余票查询业务放到云上;
为什么是余票查询?访问量90%以上,不需要对整个网站业务架构改动;
实施过程?余票模块分离独立部署,云上部署,
云计算与堆硬件什么区别?硬件周期长、空闲多;云按量计费;
内存数据库使用VMWare的GemFire;分布式内存运算数据管理云平台-Pivotal Gemfire;

12306技术负责人朱建生说,为了应对2015年春运高峰,采用五项措施:一是利用外部
云计算资源分担系统查询业务,可根据高峰期业务量的增长按需及时扩充。二是通过
双中心运行的架构,系统内部处理容量扩充一倍,可靠性得到了有效保证。三是对系统
的互联网接入带宽进行扩容,并可根据流量情况快速调整,保证高峰时段旅客顺畅访问
网站。四是防范恶意抢票,通过技术手段屏蔽抢票软件产生的恶意流量。五是制定了多套
应急预案,以应对突发情况。

选择Pivotal Gemfire原因:
1,关联数据节点设计:可以根据客户的业务逻辑特性和数据关联性,将关联性强的数据放置于同一个服务器节点,提高系统性能,避免分布式系统服务器的频繁数据交换。
2. 将数据移到内存:由于数据是放在内存里面,屏蔽传统数据库频繁访问, CPU与数据库的交互作用,影响服务器性能。内存的数据交换速度远高于磁盘速度上千倍, 极大提高系统性能。

3. 扩展和伸缩性:以Gemfire构建的应用云平台,是以 x86 PC服务器为主的硬件基础。在保证系统的性能下,此平台可以随着客户业务的成长来任意调配x86服务器的数量,避免以后昂贵的硬件升级带来的困扰。经POC测试结果显示,整个系统性能可随着服务器的数量的增加实现几乎线性的成长。

4. 数据可靠性:在同个集群里面可以有多个数据节点备份,数据可以自动同步,或是将内存数据持久化到硬盘或是数据库

5. 跨地域的数据分布或同步 :可以透过“广域网”将指定的 Gemfire集群的内存数据“实时同步”到异地的数据中心。这是属于“应用层”的数据同步异于传统的“数据库”同步。

6. Pivotal Gemfire使用 x86 PC服务器,其性价比远远高于 Unix 小型机。


如何设计一个秒杀系统:
秒杀系统特点:同一时间峰值,请求大于库存,逻辑简单:下单减库存;

秒杀架构设计:限流(只允许少部分流量进入服务器后端),
削峰(利用缓存和消息中间件),异步处理(提高系统并发性,削峰的方式),
内存缓存(数据库瓶颈),可扩展(流量来了,拓展机器);

设计思路:将请求拦截在系统上游,降低下游压力;充分利用缓存;利用消息队列;
前端方案:页面静态化(用CDN),禁止重复提交,用户限流(只允许提交一次,IP限流)
后端方案:限制UserId访问频率;
服务层:采用消息队列缓存请求(服务层知道只有100个手机,没必要把100万请求都交到数据库,把请求交到消息队列进行缓存,数据库层订阅消息减库存,减库存成功返回秒杀成功,失败返回秒杀结束),利用缓存应对读请求(类似12306读多写少的业务,利用缓存分担数据库压力),利用缓存应对写请求(库存数据转移到Redis);

数据库层,只承担“能力范围内”的访问请求。

利用消息中间件和缓存实现简单秒杀系统:用Redis接收请求,满了就不接收了,用数据库慢慢处理请求。

 

posted @ 2018-01-17 22:00  stono  阅读(369)  评论(0编辑  收藏  举报