zoukankan      html  css  js  c++  java
  • 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接收请求,满了就不接收了,用数据库慢慢处理请求。
  • 相关阅读:
    数组中的逆序对★★
    把数组排成最小的数★★★
    丑数★★★
    整数中1出现的次数(从1到n整数中1出现的次数)
    连续子数组的最大和
    每两个字符串中插入字符串
    linux R环境安装以及注意事项
    JAVA调用R脚本 windwos路径下
    springboot 配置多数据源
    springboot 在配置文件写参数注入到类中
  • 原文地址:https://www.cnblogs.com/stono/p/8306389.html
Copyright © 2011-2022 走看看