如何设计一个高并发系统

如何设计一个高并发系统?

如果你确实有真才实学,在互联网公司里,干过高并发系统,那你拿Offer,基本如探囊取物一样简单。

但你要真干过高并发系统,面试官绝对不会问这个问题,否则他就不太明智了。

因为真正干过高并发的人一定知道,脱离了业务的系统架构,都是纸上谈兵。

真正在复杂业务场景、而且还高并发的时候,这个系统架构一定很难搞。

要理解高并发,就得从高并发的根源出发——为什么会有高并发?为什么高并发就很牛X?

因为刚开始,系统都是连接数据库的,但是数据库支撑到每秒并发两三千的时候,基本就快完了。

数据库如果瞬间承载每秒5000、8000、甚至上万的并发,一定会宕机,因为比如MySQL就压根儿扛不住这么高的并发量。

所以为什么高并发牛X?

因为现在网民越来越多,很多App、网站、系统承载的都是高并发请求,高峰期每秒并发量几千都很正常。就像每年的双十一,一年比一年的峰值高,每秒并发几十万,都是洒洒水。

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

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

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

3、MQ。必须得用MQ。

可能你还是会出现高并发写的场景,比如说一个业务操作里,要频繁搞数据库几十次,增删改增删改,疯了。

那你咋办?用MQ吧,大量写请求灌入MQ里,排队慢慢玩儿,后边系统消费后慢慢写,控制在MySQL承载范围之内。

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

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

5、读写分离。多数时候,数据库可能也是读多写少,没必要所有请求,都集中在一个库上。

可以搞个主从架构,主库写入,从库读取,搞一个读写分离。读流量太多的时候,还可以加更多的从库。

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

如何解决单点故障?

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

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

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

增加硬盘,做镜像。让出错的概率降低。

网卡与网线的单点问题。系统里面最容易物理损坏的就是网线,网卡绑定(NIC bonding)是一个很简单、很通用的办法,建议你配置多个网卡。

SSH服务器和Telnet服务器共存。毕竟SSH和Telnet,都不是百分之百靠谱的事;

IDC机房的单点。由于中国特色的“南北互通”,所以选择IDC机房的时候,一定要有冗余。

靠谱的DNS解析。

原文:https://blog.csdn.net/csdnnews/article/details/86065474

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李超线段树 [Heoi2013]Segment

问题 D: [Heoi2013]Segment 时间限制: 4 Sec 内存限制: 256 MB 题目描述 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x k相交的线段中,交点最靠上的线段的编号。 输…

Android 城市选择,热门城市,全部城市(美团、滴滴、淘宝)

demo链接:https://download.csdn.net/download/meixi_android/10819638 实现效果: 实现方法:非常简洁快速,三步集成实现地区选择器 1、导入city.module module导入方法:https://blog.csdn.net/meixi_android/articl…

虚拟化资料

很感谢 http://pan.baidu.com/netdisk/extractpublic?uk503876868#dir

汽车列表 车型选择 源码备忘

因为版权问题&#xff0c;选汽车的时候不能显示汽车自己真实的图片&#xff0c;下面我需要改成列表形式&#xff0c;下面记录一下代码 1、实现效果 2、源码 <div class"car-brand-list"><div v-for"(brand,index) in brandList" :key"inde…

Android View生命周期

View的关键生命周期为&#xff1a;> 构造View() --> onFinishInflate() --> onAttachedToWindow() --> onMeasure() --> onSizeChanged() --> onLayout() --> onDraw() --> onDetackedFromWindow()Creation&#xff08;创建&#xff09;Constructors&a…

oracle数据库安装过程中出现主目录不兼容的问题

今天是不顺利的一天&#xff0c;一大早机器就开不了机&#xff0c;结果是硬盘坏了。 网管安装好系统后&#xff0c;剩下的工作就要我完成了&#xff0c;刚开始远程桌面时&#xff0c;就出现了登录后系统反应超慢&#xff0c;根本没办法操作&#xff0c;一直是卡起的&#xff0…

mock 生成在线图片

1、需要用到库mockjs yarn add mockjs2、引入 const Random require(mockjs).Random;3、生成一张图片 Random.image(200x100);返回结果是url格式&#xff1a;http://dummyimage.com/200x100 4、主要的配置参数 Random.image( size?, background?, foreground?, format?…

android base64encoder 不存在

下载jar包:https://pan.baidu.com/s/1TxnW8DqEgRvIL4Urqlnzyw 在线回复密码&#xff1a;QQ1085220040 把jar包添加到libs下并且add as Lib /*** 利用MD5进行加密** param str* 待加密的字符串* return 加密后的字符串* throws NoSuchAlgorithmException* …

获取鼠标句柄

&#xff08;1&#xff09;引用 using System.Runtime.InteropServices; (2)调用方法 1、获取窗口标题 [DllImport( "user32.dll" )]   public static extern int GetWindowText( IntPtr hWnd, StringBuilder lpString,int nMaxCount ); 注&#xff1a;hWnd 窗口句…

WIN2003 X64 系统上安装sql server 2000 的步骤

SQL Server 2000 安装要在 64 位操作系统上安装此应用程序&#xff0c;请使用以下步骤&#xff1a; 浏览至 SQL Server 2000 安装点 安装 SQL Server 2000&#xff1a; 双击“x86\setup”子文件夹中的 setupsql.exe。 安装 SQL Server 2000 分析服务&#xff1a; 双击…

windows 环境下 0x色彩对应表

RGB颜色查询对照表0xFFFFFF 0xFFFFF0 0xFFFFE0 0xFFFF00 0xFFFAFA 0xFFFAF0 0xFFFACD 0xFFF8DC 0xFFF68F 0xFFF5EE 0xFFF0F5 0xFFEFDB 0xFFEFD5 0xFFEC8B 0xFFEBCD 0xFFE7BA 0xFFE4E1 0xFFE4C4 0xFFE4B5 0xFFE1FF 0xFFDEAD 0xFFDAB9 0xFFD700 0xFFD39B 0xFFC1C1 0xFFC125 0xFFC…

小程序 上拉刷新 下拉加载 代码备忘

使用wux-refresher扩展实现上拉刷新&#xff0c;下拉加载&#xff0c;再配合上小程序原生的scroll-view感觉很完美了。 核心代码如下&#xff1a; <div class"m-active-list"><wux-refresher id"wux-refresher" loadmore"more" refres…

oracle 10.2.0.1升级到10.2.0.4

--********************************* -- Oracle 10.2.0.1 升级到 10.2.0.4 --********************************* 本文是基于LINUX环境下的ORACLE&#xff0c;不过和WIN差别不是很大&#xff0c;命令等都是一样的。我升级时也是参照此文档执行。所以可执行性比较强。 数据…

[JSOI2007]麻将

[JSOI2007]麻将 题目 麻将是中国传统的娱乐工具之一。麻将牌的牌可以分为字牌&#xff08;共有东、南、西、北、中、发、白七种&#xff09;和序数牌&#xff08;分为条子、饼子、万子三种花色&#xff0c;每种花色各有一到九的九种牌&#xff09;&#xff0c;每种牌各四张。在…

获取颜色值 抓取颜色值 获取颜色代码RGB

搜索 FastStone Capture 下载 FastStone Capture 链接&#xff1a;https://download.csdn.net/download/meixi_android/11016008 http://www.fixdown.com/faststonecapture.htm 下载完&#xff0c;解压即可使用&#xff0c;获取颜色值颜色代码 这是网上找的注册码&#x…

mongoose $sum

_id:... Segment:[{ field: "S1", value: 1 },{ field: "S2", value: 5 },{ field: "Sn", value: 10 }, ]查询方式 db.collection.aggregate( [{ $unwind: "$Segment" },{ $group: {_id: $_id, sum: { $sum: $Segment.value } } } ]…