如何应对大数据高并发

如何应对大数据高并发

  • 增强服务器硬件配置
    • 增加cpu核心, 高速缓存, 频率
    • 增加内存容量, 频率
    • HDD换成SSD
    • 使用磁盘阵列
    • 使用高速网卡
    • 将双绞线换成光纤,甚至是背板
    • 使用专线
  • 分流(主要指负载均衡)
    • DNS
    • CDN
    • F5
    • LVS
    • LBF
    • HAProxy
    • Nginx
    • 文件服务器
    • 动静分离
    • 数据库读写分离
    • 数据冷热分离
  • 服务拆分
    • 分布式/微服务: 细粒度的服务拆分,方便按需进行伸缩
    • 数据库: 分库,分表
    • 前后端采用不同域名
  • 服务治理(故障转移和服务伸缩)
    • 服务注册: zookeeper, etcd, consul
    • 服务发现: ocelot
    • 心跳检测
  • 服务质量
    • 限流
    • 熔断
    • 降级
  • 提前一切可提前的
    • 缓存预热
    • 异步刷新缓存(使用MQ或定时任务, 即事件调度和定时调度)
    • 站点预热: 动态内容静态化
  • 延迟一切可延迟的
    • 使用MQ将一些不是那么重要的或无需同步执行完毕的计算任务,延迟执行
  • 性能优化
    • 批量读写
    • 顺序读写
    • 减少网络IO
    • 减少磁盘IO
    • IO多路复用
    • 按需读写
    • 尽可能的将数据和计算资源放在较近的位置
    • 优化数据库索引,规范查询,必要时,可适当调整业务
    • 尽可能快速的释放不再需要的资源
    • 减少资源竞争
  • 服务扩容
    • 服务集群化
    • RDB集群化
    • NoSQL集群化
    • 服务无状态化
    • 使用K8S对服务进行动态伸缩

案例总结:

我们以秒杀场景为例, 当大量用户请求进来时, 一个服务是扛不住的, 这时候我们想到的是分流, 就像现在打疫苗一样, 不同地区的人, 就近打疫苗, 如果全部去大医院, 或全部去北京打, 这个肯定是扛不住的; 当请求到达服务, 如果此时服务才开始准备数据, 势必会照成请求的拥塞, 所以我们需要提前将动态内容静态化, 就像我们打疫苗时, 是提前生产好的, 而不是打的时候再生产, 这样就可以加快速度; 为了提高并发, 我们一般取数据时, 比如库存, 不去数据库取, 而是从redis缓存取, 就像打疫苗时, 我们的疫苗是提前分发到疫苗服务网点, 然后直接在打疫苗的服务网点拿, 而不是去厂家或仓库拿一样; 当缓存中没有数据时, 我们会去数据库中取, 但是一个数据库可能存不下或无法提供非常高的查询请求, 此时我们就会去做数据的垂直拆分和水平拆分, 以提供更高的存储容量, 做读写分离, 以提高查询的并发, 就像疫苗多个厂家生产, 多仓库储存一样; 我们将生成订单和发送通知, 先生成一个消息发往MQ, 然后由其它服务处理一样, 就像我们打完第一针, 给个凭证(即消息), 等过个21天再来打第二针(即消费消息), 将无需同步执行的任务, 延时执行; 最后将订单信息落库, 将用户带到支付页面, 就像我们打完第二针, 会发另外一个凭证, 方便出行一样.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值