服务器集群技术,如何提高服务器并发处理能力

既然题目中问的是提高【服务器】并发处理能力服务器集群技术,那么先说说关于提高单机服务器性能的方法代备案;一台服务器在单位时间里,能够处理的请求越多,就说明服务器并发处理能力越强。服务器集群技术,如何提高服务器并发处理能力内存:减少内存的分配和释放,这个本质上只为了内存分配和数据复制的时间;比如程序在启动的时候,就申请一块足够大的内存,不需要再次分配;另外可以考虑内存共享。CPU:使用多线程,提高CPU的并发度;但是线程数不可以无限制地增加,因为进程切换也是需要花费时间的;减少使用不必要的锁,因为当一个资源被锁住的时候,其余的进程会等待锁的释放;改进I/O模型,使I/O和CPU计算尽量重叠进行,减少CPU空闲和调度的时间。网络:根据应用的特点,合理地选择使用长链接还是短链接;因为建立连接是很耗时的,但是如果要使用长链接,依然要考虑超时的问题,因为如果连接时间过长并且没有使用,需要维持空闲连接,影响服务器性能。提高硬件资源:说白了,就是花更多的钱,买更好的设备,比如带宽、更大的内存、更多的CPU、SSD等等。还有很多手段,可以提高整个项目的并发处理能力:负载均衡、集群:一台服务器再怎么优化,也不如十台服务器同时工作,通过负载均衡,把请求分发到多台服务器上进行处理;另外一个好处,当一台服务器发生故障的时候,并不会影响整个项目的运行;缓存:其目的就是减少服务器的计算,把数据直接返回给用户;比如CDN、本地缓存、分布式缓存等等;分布式:如果说集群是把相同的项目部署在多台服务器上,那么分布式相当于把一个项目拆分成多个项目,每个子项目都可以独立地集群化部署;分布式架构意味着可以利用更多的服务器,能过处理的并发访问会越大。异步:调用方不需要等待被调用方处理完成,可以先做其它的事情,所有的事情可以并发处理;异步可以通过消息队列来实现异步;冗余、弹性扩缩容:根据访问量,部署更多一些的服务器;当有突发流量的时候,弹性扩容机制可以保证快速地增加机器的数量,保证系统的稳定运行;我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。首先要结合具体的业务场景,不根据业务就云设计就是在耍流氓。业务场景首先你要确定你所架构的系统服务于什么业务。假如我们现在是一个小创业公司,注册用户就20万,每天活跃用户就1万,每天单表数据量就1000,然后高峰期每秒钟并发请求最多就10。但是你要考虑到后面注册用户数达到了2000万!每天活跃用户数100万!每天单表新增数据量达到50万条!高峰期每秒请求量达到1万。静态资源大宽带、CDN、缓存(页面缓存、对象缓存),WEB服务器缓存等N级分布式缓存,Redis、Memcached缓存集群。动态资源计算:多组服务器,负载均衡等技术控制流量。存储:存储这里就比较麻烦,按照KV存储简单的资源,然后在计算部分进行整合。真的没办法做KV的,采用跨库索引来做。单机存储数量要合理,不能太多。还有就是事务性的问题,解决方案就是BASE思想或者采用日志方式。纵向拆分、水平扩展系统按照模块功能纵向拆分,再水平扩展,抽象服务层利用各种中间件完善,优化JVM应用服务器。消息中间件用mq解决稳定性。将耗时比较长或者耗费资源的请求排队,异步处理,减轻服务器压力增加稳定性数据库关系型、非关系型数据库上最牛比SSD硬盘,分库分表,读写分离,读的流量多时还要增加从库提高IO性能。每秒1万请求到5台数据库上,每台数据库就承载每秒2000的请求,相应的压力也就会减少。SQL语句避免跨表查询,优化好存储过程,此时注意存储过程利用好了是把利剑,利用不好就成为了累赘。负载均衡负载均衡由多种实现方式,一种是在硬件上的,常用软件由F5、NetScaler、Radware和Array等商用的,但是价格较昂贵。另外一种就是软件的,常见的软件有LVS、Nginx、Apache等,它们是基于Linux系统并且开源的负载均衡策略。简单架构图结语系统架构中需要注意的点太多,具体业务也不尽相同。实现方案也有多种,此处只提供一个思路。码字不宜,如果对您有所帮助请点击一个小赞。


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/32615/