因为刚开始,系统都是连接数据库的,但是数据库每秒并发两三千的时候,基本就完了!
数据库瞬间承载5000到8000甚至上万的并发,一定会宕机了,应为如果数据库为mysql就压根
扛不住这么高的并发

所以为什么高并发牛X?
因为现在的网民越来越多,很对App,网站,系统都承载着高并发的请求,高峰值每秒
并发量几千都是很正常的,就像每年的双十,一年比一年的峰值高,每秒并发十万,都是
随随便的!

如何设计一个高并发系统?所以一般我们可以按照这些方法进行考虑!

1.系统拆分:将一个系统拆分为多个子系统,如dubbo,springCloud,然后每个系统连接一个数据库
这样实现多个数据库来处理数

2.缓存:必须的用缓存,大部分高并发场景都是读得多,写的少,你完全可以在数据库和缓存里都写一份
然后读的时候,大量走缓存就好

3.MQ:必须要用MQ,可能你还会出现高并发写的环境,比如一个业务里,要频繁搞数据库几十次CRUD,那你就疯了
怎么处理? 用MQ吧,大量请求灌入到MQ队里里面,后面系统消费慢慢写,控制在mysql承载范围内

4.分库分表:可能到了最后数据库层还是避免不了抗高并发的要求,还可以将一个表拆分为多个表,每个表的记录
少点,提高sql性能

5.读写分离,多数据时,数据库也可能是读多写少,没必要所有请求都集中在一个数据库上,可以用一个主从架构
主库写,从库读,搞一个读写分离,读流量太多时候还可以加跟多从库,

6.Elasticsearch可以考虑用ES: es是支持分布式的可以随便扩容,分布式天然就支持高并发,因为动不动就可以
扩容加机器,来抗更高的并发。

二:如何解决单点故障?
    简单的解释下单间故障就是(系统一个地方出项故障,整个系统就会出现崩溃,瘫痪)
一个网站,从基础到硬件,到操作系统,到数据层,到应用层,都可能产生单点故障,如果要有效的
解决单点故障,最重要的一点,设计的时候尽量避免引入单点(冗余)

解决单点故障可以大致分为以下几个方面:
    1.增加硬盘,增加镜像,让出错的概念降低
    2.网卡与网线的单点问题,系统里面最容易物理损坏就是网线,网卡绑定(nicbonding) 是一个简单很
    通用的方法,可以建议多配置几个网卡
    3.SSH服务器和Telnet服务器共享,毕竟SSH和Telnet,都不是百分百靠谱的事情,
    4.IDC机房的单点,由于中国特色的南北互通所以选择IDC机房的时候,一定要有冗余。
    5.靠谱的DNS解析。