服务器对一个应用来说是至关重要的,可以管理整个系统的资源和为用户提供各种服务,帮助用户来实现各种功能。比如服务器可以用来存储数据、共享资源、搭建网页服务等。服务器的选择也应当根据自己的应用大小来选择,如果一味为了省钱,而选择一台容易出问题的服务器,那就得不偿失了。(关于如何选择服务器的问题,具体查看《你需要多大的服务器支持你的应用》) 很多时候,你当时选择了一个适合你应用的服务器,可是随着企业的发展,系统注册会员的增加,同时访问量也越来越多,服务器也很难支撑应用的正常运行,那这就需要考虑服务器的大并发问题。 我们公司做过一个APP软件开发项目,在上个月的时候,突然出现访问速度很慢,甚至有些访问不了的情况,我们的技术人员通过对访问日志的查看和分析,分析中,发现注册会员增加了很多,在这个时间段向服务器发送了大量请求,占用了服务器资源,所以就会出现访问速度很慢。 我们公司的技术人员经过商讨,制定出方案,通过提高服务器的并发量来保证游戏的正常运行。下面就看看我们公司是怎么处理服务器的大并发问题的。 01 数据库层面 随着一个应用的业务不断扩展,数据不断增加,数据库的压力也会越来越大,这就需要对数据库进行优化。 首先,对数据库进行读写分离。读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力。主数据库提供写操作,从数据库提供读操作当,主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。 ▲对数据库进行读写分离 然后,数据库的分区分表。分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表。分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。对数据库进行分区分表在对一个表维护时而不影响其他表,并且在查询时,还能够提高检索速度。这样在高并发环境下,数据库仍有一个很好的表现。 02 程序设计层面 首先,根据实际情况制定缓存机制。在登陆方面,可以指定缓存机制,因为登陆的信息一般来说更新情况是比较少的,所以可以把这些数据缓存在内容中。比如这个APP项目,因为每天登陆次数多,活跃度很高,但这些登陆的用户名及密码一般是不会改变的,所以我们只需要调用缓存中的登陆信息进行登陆,同时我们也会保证登录信息更新与缓存同步。 然后,进行并发程序设计。并发程序设计以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还有利于扩充已有的系统和建立新系统。 03 服务器层面 首先,提高服务器的硬件配置。先找出瓶颈在哪,是CPU不够强力,还是内存容量不够,还是硬盘转速太慢,针对这些不够好的配置,然后换一个性能更好的服务器,或者增加服务器的数量来支撑高并发的访问量。 然后,把应用和数据分离。把应用程序、文件、数据库等存放在不同的服务器。每种类型的服务器对配置的要求是不同的。应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序,主要侧重在业务逻辑,需要更强大的处理器;文件服务器是用来提供网络用户访问文件、目录的并发控制和安全保密措施的局域网服务器,因此需要更大的磁盘空间;数据库服务器主要为客户应用程序提供数据服务,对磁盘读写操作很多,所以对磁盘和内存要求较高。 ▲把应用和数据分开 当业务发展的再多,或者同一时间对服务器请求的并发量再多,就要对应用服务器再进行分布式架构,以此来达到要求。 最后,对服务器进行负载均衡。负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。负载均衡能够扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。当某一时间有大量用户访问的时候,用户与网站之间的链路被突如其来的流量拥塞,就需要使用负载均衡技术,这样可以合理分担系统负载、提高系统可靠性、支持网站内容的虚拟化。 ▲负载均衡调度服务器 处理服务器大并发的问题,最重要的还是一开始就考虑好自己业务的现有情况以及未来的发展,对未来业务有一个准确的预估,在开发项目时候就做好大并发的规划,这样将会省掉很多不必要的成本。如果刚开始没有进行大并发规划,等应用出现问题时再做解决,不但会影响自己业务的发展,还会给自己带来很多麻烦,甚至需要重新开发项目。 本篇文章为原创内容,未经允许,谢绝转载
150-6717-1663 (大客户专线)
150-6717-1663 (售前热线)