如何处理高并发:

如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿offer基本如探囊取物,没啥问题。

但是如果你要是真是干过高并发系统,面试官绝对绝对不会问这个问题,否则他就不太明智了。因为真正干过高并发的人一定知道,脱离了业务的系统架构都是在纸上谈兵,真正在复杂业务场景而且还高并发的时候,那系统架构一定不是那么简单的,用个redis,用mq就能搞定?当然不是,真实的系统架构搭配上业务之后,会比这种简单的所谓“高并发架构”要复杂很多倍

其实所谓的高并发,如果你要理解这个问题呢,其实就得从高并发的根源出发,为啥会有高并发?为啥高并发就很牛逼?

我这么说吧,很简单,就是因为刚开始系统都是连接数据库的,但是要知道数据库支撑到每秒并发两三千的时候,基本就快完了。

所以才有说,很多公司,刚开始干的时候,技术比较low,结果业务发展太快,有的时候系统扛不住压力就挂了。当然会挂了,凭什么不挂?你数据库如果瞬间承载每秒5000或8000,甚至上万的并发,一定会宕机,因为像mysql数据库压根儿就扛不住这么高的并发量。

所以为啥高并发牛逼?就是因为现在用互联网的人越来越多,很多app、网站、系统承载的都是高并发请求,可能高峰期每秒并发量几千,很正常的。就像每年的双十一,一年比一年的峰值高,每秒并发几十万都是洒洒水。

那么我们可以从以下几个方面来进行考虑:

1,系统拆分:

系统拆分,将一个系统拆分为多个子系统,用dubbo来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,这样就可以抗高并发。

2,缓存:

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

毕竟人家redis轻轻松松单机几万的并发啊。没问题的。所以你可以考的虑考虑你的项目里,那些承载主要请求读场景,怎么用缓存来抗高并发。

3,MQ消息队列:

MQ(消息队列),必须得用MQ。可能你还是会出现高并发写的场景,比如说一个业务操作里要频繁搞数据库几十次,增删改增删改,疯了。那高并发绝对搞挂你的系统,人家是缓存你要是用redis来承载写那肯定不行,数据随时就被LRU(淘汰掉最不经常使用的)了,数据格式还无比简单,没有事务支持。

所以该用mysql还得用mysql啊。那你咋办?用MQ吧,大量的写请求灌入MQ里,排队慢慢玩儿,后边系统消费后慢慢写,控制在mysql承载范围之内。所以你得考虑考虑你的项目里,那些承载复杂写业务逻辑的场景里,如何用MQ来异步写,提升并发性。MQ单机抗几万并发也是ok的。

4,分库分表

分库分表,可能到了最后数据库层面还是免不了抗高并发的要求,好吧,那么就将一个数据库拆分为多个库,多个库来抗更高的并发;

然后将一个表拆分为多个表,每个表的数据量保持少一点,提高sql跑的性能。

5,读写分离:

读写分离,这个就是说大部分时候数据库可能也是读多写少,没必要所有请求都集中在一个库上吧,可以搞个主从架构,主库写入,从库读取,搞一个读写分离读流量太多的时候,还可以加更多的从库。

6,搞个es:

Elasticsearch(一个基于Lucene的搜索服务器),可以考虑用es。

es是分布式的,可以随便扩容,分布式天然就可以支撑高并发,因为动不动就可以扩容加机器来抗更高的并发。

那么一些比较简单的查询、统计类的操作,可以考虑用es来承载,还有一些全文搜索类的操作,也可以考虑用es来承载。

总结:

上面的6点,基本就是高并发系统肯定要干的一些事儿。

你需要考虑,哪些需要分库分表,哪些不需要分库分表,单库单表跟分库分表如何join,哪些数据要放到缓存里去,放哪些数据可以抗掉高并发的请求,你需要完成对一个复杂业务系统的分析之后,然后逐步逐步的加入高并发的系统架构的改造,这个过程是务必复杂的,一旦做过一次,一旦做好了,你在这个市场上就会非常的吃香。


单点故障

1,什么是单点故障?

通常分布式系统采用主从模式,一个主机连接多个处理节点,主节点负责分发任务,而子节点负责处理业务,当主节点发生故障时,会导致整个系统发故障,我们把这种故障叫做单点故障。

2,如何消除单点故障问题:

大体可以从以下几个方面来消除单点故障:

一个网站,从基础的硬件层,到操作系统层,到数据库层,到应用程序层,再到网络层,都有可能产生单点故障。

如果要有效地消除单点故障,最重要的一点是设计的时候要尽量避免引入单点,随着架构的变化,定期审查系统潜在的单点也是有必要的

  1. 增加硬盘,做镜像,让出错的概率降低。
  2. 网卡与网线的单点问题。系统里面最容易物理损坏的就是网线。网卡绑定(NIC bonding)一个很简单很通用的办法。配置多个网卡,一个网卡坏了并不会影响服务器的正常运行。
  3. SSH 服务器和Telnet 服务器共存。毕竟 SSH 和 Telnet 都不是百分之百靠谱的事。
  4. IDC 机房的单点。由于中国特色的“南北互通”,所以选择IDC机房的时候,一定要有冗余。
  5. 靠谱的DNS解析

以上几点,是一些比较常见的解决方法。

我们一个常见的应用架构,在服务器上安装MySQL作为作为应用数据库,为了提高性能,在服务器和数据库之间加上了Redis缓存服务器,那么Redis缓存服务器和MySQL数据库都是一个单点故障的隐患,此时,我们就可以考虑主从备份的设计。

如何处理高并发和单点故障相关推荐

  1. 如何处理几十万条并发数据_Swoole 如何处理高并发以及异步 I/O 的实现

    Swoole 介绍 1.swoole提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis, 数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件 ...

  2. node和php处理高并发,node.js“多线程”如何处理高并发任务?,nodejs java 高并发

    node.js"多线程"如何处理高并发任务?node . js"多线程"是如何处理高度并发的任务的?,下面的文章介绍了使用nodejs"多线程&quo ...

  3. 我在支付宝是如何处理高并发case的

    写在开头,好多人都问我在支付宝是如何处理高并发的.哎~~~~,那我今天就说一下,我是怎么解决每天上百万的还款的,顺便介绍一下高并发的思路. 首先,先看一个图(看不懂没关系,稍后我会解释). 首先,介绍 ...

  4. nginx如何处理高并发

    一.阅前热身 为了更加形象的说明同步异步.阻塞非阻塞,我们以小明去买奶茶为例. 1.同步与异步 ①同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式. 同步 当一个同步调用 ...

  5. RabbitMQ(mq) 如何处理高并发、负载均衡、消息幂等性、丢失、消息顺序错乱问题?

    目录 介绍: 1.连接器(connection): 2.信道.通道(channel): 3.交换机(exchange): 4.队列(queue): 以下通过两个例子,让我们先来对rabbitmq 有个 ...

  6. 一文教你如何处理高并发

    目录 前言 一.为什么要解决高并发问题 二.性能评估 计算峰值流量方法 本章结论 三.性能测试 测试目的 找到系统最高承受压力的临界点 找出系统中的短板 测试工具 简单测试 1.数据抓包 2.加压测试 ...

  7. 云时代架构阅读笔记十三——你的系统如何处理高并发?

    1 从最基础的地方做起,优化我们写的代码,减少必要的资源浪费. a.避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式.对于String连接操作,使用StringBuf ...

  8. mysql 并发_mysql如何处理高并发

    mysql高并发的解决方法有:优化SQL语句,优化数据库字段,加缓存,分区表,读写分离以及垂直拆分,解耦模块,水平切分等. 高并发大多的瓶颈在后台,在存储mysql的正常的优化方案如下: (1)代码中 ...

  9. 如何处理高并发业务场景

    要具备高并发的经验确实需要有实际项目,因为业务逻辑其实很容易理清,但是要在高并发的情况下如何找到业务繁忙的热点并进行优化,完全只能凭经验. 假如没有靠谱的公司,接触不到高并发的业务场景怎么办? 从处理 ...

最新文章

  1. 二十六、深入Python中的time和datetime模块
  2. 用VS2017开发安卓应用
  3. 开发java流程步骤,优秀Java开发人员的10个步骤
  4. Python数据预处理:使用Dask和Numba并行化加速
  5. 如何在Ubuntu中屏蔽一个网站
  6. 【STM32】FLASH擦写+FLASH相关操作+注意事项
  7. Docker学习总结(29)——Docker核心技术与实现原理
  8. SAP License:SAP 销售成本会计VS期间会计
  9. 18.ChainOfResponsibility-职责链模式
  10. 堪称神器的命令行工具系列——curl
  11. 太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
  12. mysql redo/binlog 放在ssd盘或SAS盘性能差异测试
  13. 你的第一个 iOS 应用程序: 100% 的编程方式
  14. C语言中文网设计模式,C语言和设计模式(访问者模式)
  15. 【C++/OOP】(侯捷著) (转)
  16. chemdraw怎么画拐弯的箭头_怎么样绘制弧形箭头?
  17. IDEA vs VSCode在java开发上的横向对比
  18. iphone12绿色好看 iphone12系列哪个颜色好看
  19. html5怎么查看路由器状态,怎么查看普联路由器的运行状态?
  20. 如何解决:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

热门文章

  1. 跨境电商平台运营知识:亚马逊日常运营技巧
  2. Ocata Neutron代码分析(一)——Neutron API启动过程分析
  3. 跨境电商平台哪个好?——扬帆际海
  4. Windows安装Dolby Vision 杜比视界插件
  5. 从零学前端第一讲:前端开发是什么?给初学者有什么建议?
  6. 使用 MyBatis 的 Maven 插件生成代码
  7. 抖音如何推动音乐的流行?看完这篇文章你就明白了
  8. OtterCTF 3-4
  9. 三星拿出了四摄手机,可惜诚意不足,挑战国产手机成奢望
  10. 《AngularJS深度剖析与最佳实践》简介