系统高并发设计

一、系统架构扩展
系统的扩展性可以提供系统的性能。代表系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展可以分为两种:

垂直扩展(stade up),提高单一的机器性能配置,如添加内存、更换更强的处理器等等。
2.水平扩展(out),横向添加新机器。

水平扩展比垂直扩展有更强大的扩展性,但水平扩展也来了更高的维护成本。实践中需要根据具体情况来寻求一个平衡点。

二、静态化技术
采用预处理方式将页面静态化,存储在磁盘,不需要连接数据库读取数据,可以提高服务端性能

三、使用缓存服务器减少IO
使用Redis,Memache内存服务器,在内存中存储数据,减少磁盘IO读取量

四、引入微服务器框架Dubbo,SpringCloud
将业务模块切分为多个微服务,托管在微服务框架中,提高负载均衡与容错处理

五、使用数据库集群技术
数据库层面采用主从复制模式、集群模式、采用分区表将数据平均分配到多个磁盘控制器。采用读写分离设计模式

六、图片存储在分布文件系统或CDN服务中
静态资源(图片、视频、网页)采用分布式存储,或者使用CDN服务分发,系统需要设计为前后端分离。

七、业务处理采用NIO技术
采用非阻塞IO技术,借鉴Dubbo使用Netty框架。

八、应用服务调优(Tomcat,Weblogic,Websphere)
通用的配置是设置JVM参数,内存各分区大小,垃圾回收线程多少。再根据不同应用服务器的配置参数,优化应用服务器。

九、负载均衡
使用了水平扩展之如何将大量的请求“均衡”到我们的扩展机器上

两种负载均衡模式:有状态(如有携带session)和无状态

两种负载均衡方式:硬件均衡和软件均衡

硬件均衡比较简单,通常接入一个设备即可,之后的均衡和故障检测等等都由硬件自动完成。成本较高。

软件均衡则是通过软件来转发各种请求,更加容易的定义转发规则,有较多的开源产品选择。

第四层和第七层

经常在负载均衡中看到第四层和第七层这两个名词。它们实际上是指它们各自工作时所处理的网络协议的层数(使用ISO模型)。

第四层是数据传输层,包括TCP和UDP,第七层则是应用层,通常web中为HTTP应用。如Apache、nginx等支持第七层的均衡,而且可配置性都相当强大,能够适应较复杂的应用。例如可以简单的将流量分担到各个负载机上,也可以定义一套业务规则,将应用划分为不同的池,每个池处理某些固定规则的URL。

对比软件均衡与硬件均衡,可以发现它们各自的优缺点:

硬件均衡成本比较高,软件均衡多数可以使用免费的开源软件来实现。

硬件均衡对于故障检测比软件均衡更加强大、快速。在采用硬件均衡时,一旦某台机器出现故障,马上就可以检测出来并立即屏蔽。

硬件均衡可以快速的添加机器(接入硬件接口即可),而软件均衡除了添加机器外还要添加一些配置信息,以将某些流量导入到新的机器。

软件均衡可以定义非常复杂的业务规则,而硬件均衡在这方面相对较弱。

多数的硬件均衡方案都有捆绑附加的一些服务如HTTPS加速、DOS防火墙等等。

十、操作系统优化
虚拟内存调优、可用文件句柄多少配置,
 

猜你喜欢

转载自blog.csdn.net/soul17999/article/details/89187165