本篇内容来源于网络
一、服务器技术架构的三大发展趋势
一般而言,客户需求决定了服务器的发展方向,从服务器的技术架构来看,目前整个服务器的技术架构的发展有三个大趋势:纵向扩展架构、横向扩展架构、超融合架构。
1、纵向架构(Scale-up)
Scale-up纵向扩展,主要是提升单台服务器的性能,包括高可靠、高可用性以及可扩展性,主要应用于高性能交易类业务。
主要用于关键数据库、应用系统以及HPC高性能计算业务等。Scale-up架构广泛应用与金融交易、电信计费、科学研究、气象分析等领域。
2、横向架构(Scale-out)
简单说就是以数量取胜,Scale-out架构通常对单台服务器性能要求不高,主要通过更多的服务器协同完成任务。
这种架构具有高性能、低沉本、高密度、节能低碳和集群管理等特点,该架构通常应用于超大规模数据中心、大数据分析、公有云、Web应用集群等业务场景。
3、超融合架构(Hyper-converged)
这种架构理念是将计算、存储、网络和统一管理放在一个盒子里。
通过一体化的设计、集成与优化,消除系统瓶颈,实现更好的整体系统效能。这种架构主要应用于高性能数据分析、数据库整合、云计算资源池平台、一体化数据中心等应用场景。
二、业务应用和服务器部署
1、早期应用部署
早期的服务器系统都是单机应用,在一台服务器上部署了所有应用软件,这种服务器为一个或者几个用户提供计算或者业务服务,这种单机系统通常也被称作工作站。
2、服务器C/S应用部署架构
在C\S架构中,通常会有一个集中共享的应用数据库,而每个使用系统的员工会有自己的PC机,每个PC机安装不同的应用程序,这些应用程序能够操作使用或者共享应用数据库,这样能够实现业务系统的协同操作、应用共享和统一保存。
3、服务器B/S应用部署架构
这是一种优化的架构,伴随着因特网的兴起而发展起来,PC客户机只需要有一个标准的web浏览器即可与服务器交互。当用户需要不同的业务时,只需要连接到不同的应用服务器即可。客户端使用简单、免维护。
三、服务器互联网应用部署架构
采用的是是典型的B/S架构。因为互联网应用通常具有用户数量庞大、并发点击负载高、海量大数据等特点。因此一直朝着开放、分布式的架构模式发展。如当今的百度、腾讯数据中心普遍采用大规模分布式的数据库。Hadoop大数据集群、高密Scale-out水平扩展应用、搜索web集群接入的部署架构模式。
查看原文
四、服务器的基本框架结构原理
首先,基础C/S结构的服务器框架,请求和相应流程:
这种框架结构满足基础的基础的应用,客户端的请求多了的时候,就会存在一个请求等待的问题。处理请求都会有一个阀值,请求数量超出阀值,剩下的的请求需要等之前的处理好了,才能再访问数据库。不能很好的处理高并发的情况。
第二种设计思路可以在应用服务器和数据库服务器中间增加中间层DAL采用缓冲队列和连接池设计。
DAL设计缓冲队列,存储等待的请求,在DAL中设计数据库连接池,当数据库连接池中有空闲连接时,从缓冲队列中取出一个请求处理,这种方式并没有提高访问的速度,释放了服务器的压力,如果遇到高并发还是不能有效的处理。
第三种技术在此基础上添加一个缓存服务器,当有请求到来时,应用服务器先从缓存中获取数据,如果缓存中没有相应的数据,在访问数据库取出数据,并更新缓存。
缓存的方式就需要考虑缓存同步的情况,缓存是具有时效的,超时缓存失效,有需要重新去数据库查询,查询后再更新缓存,这样实时性比较差。我们可以当有请求修改数据时,再更新缓存,并且将要修改的数据投入DAL层,当数据库有空闲连接时,再持久化。
但是这种方式还是有一定的不足,大量的业务请求的时候,虽说可设计多个应用服务器,架设缓存服务器,完善中间层的缓冲队列和数据库连接池,但是大量复杂的读写操作数据库,还是会造成数据库操作阻塞的。
此时就需要将数据库实现读写分离。对数据库执行负载均衡。主流数据库都有replication机制,采用replication机制可以实现负载均衡。中间层的写数据库操作投递到master数据库中,读操作从slave数据库中读取,当master数据库中数据被修改后,数据库采用replication机制将数据同步给slave服务器。
同样的道理,应用服务器也可以实现负载均衡,架设多个应用服务器,不同的请求分配给不同的应用服务器。让应用服务器主动去请求任务服务器,主动获取任务处理,如果应用服务器处于忙碌状态就不需要请求新的任务,空闲的应用服务器会去请求任务服务器中的任务,这是最合理的负载均衡。如果所有应用服务器都处于忙碌状态,那么任务服务器将任务缓存至自己的任务队列,当应用服务器空闲时会来取任务。
任务服务器需要有多台,并且实现failover机制,当服务器出现故障的时候,其他服务器做为主任务服务器。
同时为保证数据库的响应速度和处理效率,我们还可以对数据库进行分区。
因为大部分情况下数据库中各个表是关联的,我们往往是将一个表的不同数据分配到各个数据库,数据库的表结构就是一样的,只是存储的用户数据不同而已。
查看原文
(说明:内容来源于网络,基本上都是博主学习时看到一些容易理解的知识点,如果想要查看原文,可以点击链接查看)