应对大数据高并发

应对大数据高并发

  1. 如果应对大数据高并发
    a) 读写分离
    b) 负载均衡/集群
    c) 消息队列
    d) Redis
    e) 分布式
    f) 缓存
    g) 分库分表
  2. 怎样成为架构师
    a) 成熟的大型网站不是设计出来的,是演化出来的《淘宝技术这十年》
    b) 要相信因事成人,而不是因人成事
    c) 学习实践总结进阶
  3. 解决问题步骤
    a) 钱能解决的问题,用钱解决
    b) 用钱解决不了的问题,用技术解决
    c) 用技术解决不了的,用业务解决

应对大数据高并发
5. 单机系统
a)
应对大数据高并发
b) 多线程并发相应(内存/CPU/带宽/硬盘读写),用户变多任何一个环节都有可能成为负担(硬件资源不够)
c) 压力测试:loadrunner可测试
d) 时间推移,用户增多,数据增多,并发量增多,服务器压力也越来越大,解决方案
i. 垂直扩展::升级硬件,见效快但是有上限
ii. 水平扩展:多来几台服务器,
6. 独立服务器
a) 分布式:一台服务器能做的事分成多台服务器协作完成
应对大数据高并发
B) 很轻松的提升承载能力
6. 缓存
系统性能优化的第一步就就是使用缓存
应对大数据高并发
二八原则:

  1. 集群负载均衡
    a) 集群:一台服务器做的事儿,现在由多台服务器共同承载,每台服务器都能独立完成的
    b) 分布式:一台服务器做的事分成多台服务器协作完成,每台服务器完成其中的一部分
    应对大数据高并发
    c) 集群和负载均衡
    i. 集群------必然需要负载均衡----请求分发
    ii. DNS-----负载均衡------就是可以就近分发—毕竟不是自己的,不灵活
    iii. 硬件负载均衡----F5
    iv. 软件级负载均衡:
  2. LVS----Linux----4层协议(ip/端口)----转发更有效率,功能性差,配置麻烦
  3. HAProxy—7层协议(http报文(cookie))----策略丰富,用的不多
  4. Nginx—7层协议(http报文)----各种策略(1.平均轮询-----2.加权轮询—3.IP_hash:会话粘滞(用户IP首次访问,决定走那个服务器)(用户持久化))4.Fire策略:根据服务器信息进行智能分配5.URL-hash
    v. 解决用户持久化问题:
  5. 会话粘滞
  6. Cookie/token
  7. Session共享(stateServer /sqlServer/Redis最多)
  8. 数据库读写分离
    a) 架构图解
    应对大数据高并发
    b) 数据库瓶颈:数据库读写分离
    c) 木桶理论:决定一个木桶装水能力是由最短的那块板
    d) 二八原则:80%的业务都是查询,20%是增删改
    e) 1主库----N从库:数据结构-数据都是一摸一样
    f) 发布订阅式读写分离
    i. 一开始从库是直接镜像拷贝主库
    ii. 主数据库—增删改Sql直接操作主库----数据库日志—发往发布服务器
    iii. 发布服务器----负责接收主库的操作日志—从库订阅日志
    iv. 订阅服务器(订户—从数据库)—根据日志同步数据
    v. 注意
  9. 发布订阅,从库的多少不会影响主库
  10. 有延迟,局域网熟读够快,一般在毫秒级
  11. 从库直接从日志同步数据,比sql效率高
    vi. 数据库执行sql语句底层分析:执行语句分析—执行计划分析—执行计划—执行操作—生成日志
    vii. 开发怎末配合?很简单—增删改操作一个链接/查询搞一顿链接数据库字符串自定义策略然后均衡一下
  12. 数据库优化
    a) 分库分表,表分区
    i. 表分区:是数据库本省提供的功能,是为了解决单表数据量太大
    ii. 分库—一个库变成多个库,----垂直分库----水平分库
  13. 垂直分库:电商平台分成了,存储库,订单库,用户库
  14. 水平分库:电商平台分成了华南-华东-华北,每个库结构一致,数据不一样
  15. 跨库查询怎末办?
    a) 数据拷贝式:总数据报表,24点数据同步,专门为报表服务
    b) 即时查询式—Service/统计数据式/
    c) 业务妥协
    iii. 分表
  16. 垂直分表(文章表)
  17. 水平分表(时间/地区/类)
  18. 继续缓存(CDN加速/缓存:)
    a) 架构示例图
    应对大数据高并发
    b) CDN(外部购买,阿里云):是DNS提供的,
    i. CDN就是把数据存在离用户最近的地方,主要解决图片 视频,缓存加快速度按—减少服务器请求
    ii. 请求----dns(互联网的第一心跳)----ip/端口—
    c) 反向代理(服务端,开发者部署)屏蔽和保护,还可以缓存(js/css/….)减少请求资源
  19. 分布式文件服务器(视频多,图片多)
    a) 架构示例
    应对大数据高并发
    b) 分布式文件服务系统(TFS,GFS,NFS)把多个硬盘管理成本地硬盘可以直接读写
  20. 专项突破
    a) 架构示例
    应对大数据高并发
    b) 搜索引擎:人性化搜索()
    i. 全文检索工具(lucene.Net----Solr—ES):分词二次存储,查询是再分词,搜索新存储
    ii. 数据库全文索引(几乎没人用)
    c) NOSQL
    i. Redis
  21. 一个Key—Value内存存储-----Remote Dictionary Server
  22. 内存读写快,可以做缓存,
  23. 不仅是缓存,而是Web2.0之友
  24. 单线程模型—没有线程安全问题/原子性—10WQPS(请求)/秒----多进程
  25. 防止超卖:100件商品10000个并发请求
    a) Redis—初始化100个库存----decr----建议返回结果—结果效益0停止秒杀(只有100个请求回到数据库)—放弃支付----incr
  26. 例如:
    a) 访问计数器—分布式大家都能访问的书都快的存储
    b) 集群的用户持久化----session共享,RedisSessionState
    c) 做数据统计—直播平台(Redis—Zset—有序的列表,一个key对应一组数组—刷礼物就增加以下)