赞
踩
内容总结自《亿级流量系统架构设计与实战》
高并发系统的三大必要条件:
基本的高并发读场景的解决方案,本质都是读/写分离,这也是微服务架构中经常被提及的CQRS模式。将数据读取操作与更新操作分离的模式。Q为query,C为command,指会引起数据变化(增、删、该)的操作的总称
特点:
路由方式
主从延迟与解决方案
添加数据缓存,提高数据查询性能,注意数据淘汰策略,以及数据一致性问题
选定读数据存储和写数据存储后,通过消息中间件为两者建立数据关联。创建一个消费者服务并使消息中间件监听数据库的binlog数据变更日志,当数据有变更时,将最新的数据同步更新到搜索引擎中
遇到需要多张表join查询时,提前将多张表关联的数据进行聚合计算,把聚合结果单独存储到一个包含全部关联字段的宽表中,查询时直接读取宽表中的聚合结果,而不用执行join语句
用户请求并发大,海量用户访问数据库,很快会达到数据库处理能力的上限,无论是数据库的最大请求连接数、CPU资源、内存资源还是网络带宽均有可能成为性能瓶颈。为解决数据库性能问题,一般会进行分库。
拆分策略:
当业务发展到一定阶段,数据表存储了千万行甚至上亿行数据,查询性能急剧下降。此外,在涉及数据表结构修复的场景下,DDL语句执行完成消耗的时间令人难以接受。为解决但表的读/写效率问题,一般会进行分表操作。
拆分策略:
一致性hash环特点:当增加或移除数据分区是,只有被操作的节点的逆时针相邻的数据需要重新分区。由于一致性哈希分区法并不指定每个数据分区的哈希值范围,所以数据分区在哈希环上分布越均匀,各个数据分区的数据量就越均衡。避免出现“数据倾斜”(存的不均匀)和“热点数据”(读的不均匀)
类比数据库分库分表外,还有其他数据分片形式
将“用户发起写请求并同步等待结果返回”转变为“用户提交写请求后,异步查询结果”两阶段:
将若干个写请求,聚合为一个写请求,减少写请求量。如Kafka的Producer批量生产、AliSQL热点数据优化
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。