1.4 CS架构模型

简介: 1.4 CS架构模型

1.4.1 C/S架构模型概念

要讲客户端,离不开C/S架构模型

C-Client-客户端

S-Server-服务器

客户端/服务器模型,简称C/S架构模型

01ebd755782e4c909dad0843d3544acf.jpeg

1.4.2 客户端版的C/S架构模型分层

1.4.2.1 两层模型

在我接触到的一些客户端应用中,有相当一部分分为两层

客户端层和数据库层

01ebd755782e4c909dad0843d3544acf.jpeg

1)优点

此种分层结构简单,易于理解,代码编写相对容易

2)缺点

a. 可扩展性差: 无法进行多客户端的调度管理等任务。同时也面临数据库连接数的限制以及异构数据库间的切换,数据库性能成为瓶颈。

b. 可维护性差: 若数据库地址发生变化,所有客户端配置都需要修改,这是一项庞大的任务。所有功能都汇聚在客户端,只要需求一变动就需要升级,而客户端散落在各个端系统中,端系统的环境复杂多变,不可控,升级非常复杂和困难,如果再遇到发布失败需要回滚,那就是地狱级别的升级模式了

c. 安全性差:没有任何安全保障,一旦中毒,后果不堪设想。即使是本地局域网与外网物理隔绝,那也存在着安全隐患。例如,我在一家企业中从事客户端开发,网络物理隔绝,在其他同事将带病毒的u盘拷贝了进来,造成了不小的安全问题。

d. 稳定性差:代码逻辑混合在一起,bug容易增多,且不好复现。


1.4.2.2 三层模型

基于两层模型的种种问题,我们提出了三层模型,这也是做客户端开发非常推荐的模型,即使现在的需求只需要两层,但我仍然推荐采用三层模型,这样会很方便的对产品能力进行扩展

01ebd755782e4c909dad0843d3544acf.jpeg

1)优点

a. 易扩展: 可管理多个客户端的调度,当系统遇到瓶颈时也可以动态扩展或升级底层库,也可以设置主从数据库等,方便系统整体扩展。例如近年来很火的容器化,k8s,方便我们能够顺利的进行底层升级。

b. 易维护:我们可以开发统一的管理后台,当需要修改客户端的某些配置时,在服务器侧进行统一设置,然后自动同步到各个客户端,可制作统一的升级方案,对于公共部分的功能只需要升级服务器能力即可。

c. 安全性: 可设置统一的网关,安全设置,拦截、权限等这会使服务器不那么容易受攻击,保证服务器的健壮性。

d. 稳定性: 统一由专业人员维护,运行在确定的系统中,保持环境稳定,这会使我们的产品更加稳定。我们还可以加入健康检测,服务网格,缩小爆炸半径,提供便捷的隔离措施。


2) 缺点

代码复杂,需要较高的编码水平,且不易迁移


1.4.3 C/S三层架构的功能划分

关于在服务侧如何进行网关设置,路由转发,负载均衡,服务网格,持久化,服务分级等集群相关的内容这里就不讲述了,这并不是我们本系列的重点。


下面我仅对C/S功能划分上做一个简单的整理

相比较两层架构所有功能写在客户端,三层架构实际上是对产品功能进行了一次重新分类,那么体现在客户端上我们就有必要区分将哪些功能放到客户端,哪些功能放到服务端,所以我们得有一个判断准则,下面提供一些思考方向

1.4.3.1 放到服务端

1)公共功能: 服务端只有一套,那么我们可以选择将公共的功能放到服务端,那么当功能有变化时只需要升级服务端即可。但这并不是绝对的,当涉及到复杂计算而又给服务端造成巨大资源消耗的任务,我们可以选择将此一部分功能下放到客户端执行,所以这个度要实际问题实际分析。

2)频繁变动的功能:对于页面变化频繁的窗口,可考虑将此功能放到服务端,通过配置化的方式进行更新界面。原理可参考B/S架构或直接内嵌浏览器。

像wps中的稻壳首页,钉钉工作台等都是这样的模式

01ebd755782e4c909dad0843d3544acf.jpeg

3)会受到本地安全服务限制的功能: 对于有些功能可能会受到本地防火墙,杀毒软件等限制,若能放到服务端,则可考虑放到服务端


1.4.3.2 放到客户端

1)个性化功能: 不同客户端需要展示不同的界面或功能,这需要放到客户端

2)复杂计算: 复杂计算,影响到服务器性能的可考虑放到客户端进行处理

3)预处理: 为提高性能,可将发给服务器的数据进行预处理;增加缓存等

4)和本地资源联系紧密的功能: 如需要和本地操作系统有关联的,需要获取位置等感知客户端变化、需要和硬件打交道的功能等


针对功能的划分还有很多方法,需要根据不同的产品、项目进行具体问题具体分析。


1.4.4 C/S和B/S比较

一说起C/S就不得不提B/S架构,其实从概念上讲B/S是C/S发展而来的,它本质上还是C/S。浏览器也是客户端,而浏览器实现了Html渲染,JS解释器,网络接口等通用功能,它使我们可以基于html+css+js开发出各种类别的应用

1)硬件依赖: C/S客户端会比较依赖硬件环境及操作系统,而B/S只需要可以运行浏览器即可,实际上是浏览器帮助我们处理了操作系统和硬件上的依赖

2)维护升级: C/S中每个客户端都需要维护和升级,而B/S只需要升级服务端即可。所以在客户端设计开发中,应尽可能多的把公共能力放到服务端。

3)处理性能: 一般C/S都是部署在局域网,私有化部署的,且使用的是性能更高的C++,所以在处理速度上一般会优于B/S


最后,无论是几层模型最适合的才是最好的,例如只需要做一个小巧的客户端,我们直接使用一层模型即可。


我的公众号会专门更新一些独家干货文章,您可千万不要错过哦

微信号:小豆君编程分享 (关注后,可加入小豆君交流群进行学习交流,也可以和小豆君一对一进行专业咨询哦)

头条号:小豆君编程分享

相关文章
|
7天前
|
缓存 监控 数据格式
信息系统架构模型(2) SOA
信息系统架构模型(2) SOA
17 0
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
大模型开发:什么是Transformer架构及其重要性?
Transformer模型革新了NLP,以其高效的并行计算和自注意力机制解决了长距离依赖问题。从机器翻译到各种NLP任务,Transformer展现出卓越性能,其编码器-解码器结构结合自注意力层和前馈网络,实现高效训练。此架构已成为领域内重要里程碑。
35 2
|
3月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
33 0
|
3月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
27 0
|
7天前
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
13 0
|
23天前
|
前端开发 安全 JavaScript
计算机软件从 CS 模式到 BS 架构迁移背后的动因
计算机软件从 CS 模式到 BS 架构迁移背后的动因
29 0
|
1月前
|
设计模式 前端开发 数据处理
MVC架构中,控制器和模型之间是如何交互的
MVC架构中,控制器和模型之间是如何交互的
12 0
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
1月前
|
机器学习/深度学习 人工智能 缓存
Griffin模型的主要架构和特点
【2月更文挑战第16天】Griffin模型的主要架构和特点
84 2
Griffin模型的主要架构和特点
|
2月前
|
机器学习/深度学习 Python Windows
【架构】流水线结合生产者消费者模型赋能模型推理过程
【架构】流水线结合生产者消费者模型赋能模型推理过程
22 0