高并发解决思路

备注

  • 由于这是自己整理的解决思路,比较粗放,希望觉得整理的不到位的地方,欢迎各位大牛补充

高并发的技术演进之路

单机系统

  • 单机系统的硬件资源具有局限性,无法承载大的并发访问量,可能导致服务器的崩溃。所以为了抗住访问量,就需要对单机系统做升级

粗放型升级(用钱解决问题)

  • 垂直扩展:单纯的升级硬件资源,但是终归有上限
  • 水平扩展:增加多台服务器,也就是分布式,一台服务器做的事分成多台服务器来解决。
  • 分布式原型
    高并发解决思路

系统优化第一步,缓存

  • 在确定了分布式的方案,那么还是会有性能问题,比如频繁的访问数据库。但是我们会有一个二八原则,就是百分之80的访问的其实是百分之20的高频数据,那么对于这些被访问的高概率数据,可以使用缓存的方式,不管是本地缓存还是分布式缓存。
  • 缓存的优点:成本比较低,同时直接访问内存数据库,效果提升大;例如Redis等
  • 加入分布式缓存后,如图
    高并发解决思路

集群

  • 当应用服务器扛不住的时候,这个时候就可以考虑用集群了。集群的意思就是原来一台应用服务器可以完成的事情,现在分成多台应用服务器来承载,每台应用服务器都可以单独完成任务。
  • 为了搭建集群,那么就需要做负载均衡,也就是将进入访问的请求进行分发。
  • 做负载均衡的方式可以分为硬件和软件,硬件级负载均衡如F5,一般有钱的企业会用,效率高,成本也高,也就是用钱解决。软件级的负载均衡可以使用Nginx,应用最广泛。
  • 集群结构图如下:
    高并发解决思路

数据库层面优化

  • 应用服务器这边可以通过负载均衡,增加应用服务器,缓解并发访问压力。那么在数据库这边也可以继续做优化
  • 还是二八原则,由于数据库的增删改的操作一般只占百分之20,大部分都是查询需求,所以我们可以采用读写分离的方式。采用主库从库的方式。
  • 分库的方式也可以选择是垂直划分和水平划分
  • 垂直划分:比如电商网站分为,订单库,仓储库,用户库
  • 水平划分:按地区分华南库,华北库和华东库
  • 结构图如下:
    高并发解决思路