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


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


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

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

头条号:小豆君编程分享

相关文章
|
2月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
86 0
|
22天前
|
机器学习/深度学习 自然语言处理 C++
TSMamba:基于Mamba架构的高效时间序列预测基础模型
TSMamba通过其创新的架构设计和训练策略,成功解决了传统时间序列预测模型面临的多个关键问题。
69 4
TSMamba:基于Mamba架构的高效时间序列预测基础模型
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型最强架构TTT问世!斯坦福UCSD等5年磨一剑, 一夜推翻Transformer
【7月更文挑战第21天】历经五年研发,斯坦福、UCSD等顶尖学府联合推出TTT架构,革新NLP领域。此架构以线性复杂度处理长序列,增强表达力及泛化能力,自监督学习下,测试阶段动态调整隐藏状态,显著提升效率与准确性。实验显示,TTT在语言模型与长序列任务中超越Transformer,论文详述于此:[https://arxiv.org/abs/2407.04620](https://arxiv.org/abs/2407.04620)。尽管如此,TTT仍需克服内存与计算效率挑战。
167 2
|
2月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
81 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
3月前
|
机器学习/深度学习
ACM MM24:复旦提出首个基于扩散模型的视频非限制性对抗攻击框架,主流CNN和ViT架构都防不住它
【9月更文挑战第23天】复旦大学研究团队提出了ReToMe-VA,一种基于扩散模型的视频非限制性对抗攻击框架,通过时间步长对抗性潜在优化(TALO)与递归令牌合并(ReToMe)策略,实现了高转移性且难以察觉的对抗性视频生成。TALO优化去噪步骤扰动,提升空间难以察觉性及计算效率;ReToMe则确保时间一致性,增强帧间交互。实验表明,ReToMe-VA在攻击转移性上超越现有方法,但面临计算成本高、实时应用受限及隐私安全等挑战。[论文链接](http://arxiv.org/abs/2408.05479)
80 3
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
|
3月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
100 4
|
3月前
|
分布式计算 负载均衡 监控
p2p网络架构模型
P2P(Peer-to-Peer)模式是一种网络架构模型,在这种模型中,每个节点(peer)既是服务的提供者也是服务的消费者。这意味着每个参与的节点都可以直接与其他节点通信,并且可以相互提供资源和服务,例如文件共享、流媒体传输等。
87 6
|
3月前
|
机器学习/深度学习 数据采集
详解Diffusion扩散模型:理论、架构与实现
【9月更文挑战第23天】扩散模型(Diffusion Models)是一类基于随机过程的深度学习模型,通过逐步加噪和去噪实现图像生成,在此领域表现优异。模型分正向扩散和反向生成两阶段:前者从真实数据加入噪声至完全噪音,后者则学习从噪声中恢复数据,经由反向过程逐步还原生成清晰图像。其主要架构采用U-net神经网络,实现过程中需数据预处理及高斯噪声添加等步骤,最终通过模型逆向扩散生成新数据,具有广泛应用前景。
|
4月前
|
机器学习/深度学习 自然语言处理 数据处理