备注
- 由于这是自己整理的解决思路,比较粗放,希望觉得整理的不到位的地方,欢迎各位大牛补充
高并发的技术演进之路
单机系统
- 单机系统的硬件资源具有局限性,无法承载大的并发访问量,可能导致服务器的崩溃。所以为了抗住访问量,就需要对单机系统做升级
粗放型升级(用钱解决问题)
- 垂直扩展:单纯的升级硬件资源,但是终归有上限
- 水平扩展:增加多台服务器,也就是分布式,一台服务器做的事分成多台服务器来解决。
- 分布式原型
系统优化第一步,缓存
- 在确定了分布式的方案,那么还是会有性能问题,比如频繁的访问数据库。但是我们会有一个二八原则,就是百分之80的访问的其实是百分之20的高频数据,那么对于这些被访问的高概率数据,可以使用缓存的方式,不管是本地缓存还是分布式缓存。
- 缓存的优点:成本比较低,同时直接访问内存数据库,效果提升大;例如Redis等
- 加入分布式缓存后,如图
集群
- 当应用服务器扛不住的时候,这个时候就可以考虑用集群了。集群的意思就是原来一台应用服务器可以完成的事情,现在分成多台应用服务器来承载,每台应用服务器都可以单独完成任务。
- 为了搭建集群,那么就需要做负载均衡,也就是将进入访问的请求进行分发。
- 做负载均衡的方式可以分为硬件和软件,硬件级负载均衡如F5,一般有钱的企业会用,效率高,成本也高,也就是用钱解决。软件级的负载均衡可以使用Nginx,应用最广泛。
- 集群结构图如下:
数据库层面优化
- 应用服务器这边可以通过负载均衡,增加应用服务器,缓解并发访问压力。那么在数据库这边也可以继续做优化
- 还是二八原则,由于数据库的增删改的操作一般只占百分之20,大部分都是查询需求,所以我们可以采用读写分离的方式。采用主库从库的方式。
- 分库的方式也可以选择是垂直划分和水平划分
- 垂直划分:比如电商网站分为,订单库,仓储库,用户库
- 水平划分:按地区分华南库,华北库和华东库
- 结构图如下: