客户端-服务器模式,即我们常说的C/S模式。它是常用的架构模式之一。C/S架构可以是两层的,也可以使三层的。
两层的C/S是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S架构定义了工作站(客户应用程序)如何与服务器相连,以实现数据和应用分布到多台计算机上。服务器负责有效地管理系统的资源,其任务集中于:数据库安全性的要求、数据库访问并发性的控制、数据库前端的客户应用程序的全局数据完整性规则、数据库的备份与恢复,除最后一点,其他几点可概括为对数据库管理系统的管理和控制;客户应用程序的主要任务是提供用户与数据库交互的界面,向数据库服务器提交用户请求并接收来自数据库服务器的信息,对存在于客户端的数据执行应用逻辑要求。网络通信软件的主要作用是完成数据库服务器和客户应用程序之间的数据传输。
C/S架构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。服务器为多个客户应用程序管理数据,而客户程序发送、请求和分析从服务器接收的数据。
在一个C/S结构的软件系统中,客户应用程序是针对一个小的、特定的数据集,如一个表的某一行来进行操作,而不是像文件服务器那样针对整个文件进行,对某一条记录进行封锁,而不是对整个文件进行封锁,因此保证了系统的并发性,并使网络上传输的数据量减到最少,从而改善了系统的性能。
C/S结构的优点主要在于系统的客户应用程序和服务器构建分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。在C/S结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量的费用。
C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。但随着企业规模的日益扩大,软件的复杂程度不断提高,C/S结构逐渐暴露了以下缺点:
1.开发成本较高,C/S体系结构对客户端软硬件要求配置较高,尤其是软件的不断升级,对硬件要求不断提高,增加了整个系统的成本,且客户端变得越来越臃肿。
2.客户端程序设计复杂,采用C/S结构进行软件开发,大部分工作量放在客户端的程序设计上,客户端显得十分庞大。
3.信息内容和形式单一,因为传统应用一般为事务处理,界面基本遵循数据库的字段解释,开发之初就已确定,用户获得的只是单纯的字符和数字,即枯燥又死板。
4.用户界面风格不一,使用繁杂,不利于推广使用。
5.软件移植困难,采用不同的开发工具或平台开发的软件,一般互不兼容,不能或很难移植到其他平台上运行。
6.软件维护和升级困难,采用C/S结构的软件要升级,开发人员必须现场为客户机升级,每个客户机上的软件都需维护。对软件的一个小小的改动,每一个客户端都必须要更新。
7.新技术不能轻易应用,因为一个软件平台及开发工具一旦选定,不可能轻易更改。
二层C/S结构的客户机的负荷太重,并且是单一服务器且以局域网为中心的,难以扩展。因此出现了三层C/S结构,与二层相比增加了一个应用服务器。而HI有表示层存在于客户机上,整个应用用逻辑驻留在应用服务器上。也就是“瘦客户机”。
三层结构在逻辑上保持了相对独立性,提高系统的可扩展性和可维护性。可以更灵活的选择平台。
精简总结版:
一个问题:资源不对等,如何实现资源共享
解决方案:1.增加服务器数量 2优化数据库-连接池访问数
3二层发展成三层-中间件筛选过滤:
(二层是客户端-服务器直接进行交互。三层架构的中间件被用来执行所有的安全检查和重负载情况下的负载平衡。中间件需要从客户端的所有请求,并做必要的验证后,通过向服务器发出请求。然后,服务器没有所需的处理和发送响应回中间件,中间件终于通过这个响应返回给客户端。)
4优化客户端,服务器处理完后0.06秒已已经处理完,已传输到了但在5秒客户端才显示。
5中间加队列,减少数据库的压力
实例:京东图书大促时服务器崩溃,增加服务器数量并不能解决问题。这时需要找到瓶颈,如控制数据库的连接数量等