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


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


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

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

头条号:小豆君编程分享

相关文章
|
8天前
|
机器学习/深度学习 计算机视觉 iOS开发
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
31 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
|
3月前
|
机器学习/深度学习 自然语言处理 分布式计算
大规模语言模型与生成模型:技术原理、架构与应用
本文深入探讨了大规模语言模型(LLMs)和生成模型的技术原理、经典架构及应用。介绍了LLMs的关键特点,如海量数据训练、深层架构和自监督学习,以及常见模型如GPT、BERT和T5。同时,文章详细解析了生成模型的工作原理,包括自回归模型、自编码器和GANs,并讨论了这些模型在自然语言生成、机器翻译、对话系统和数据增强等领域的应用。最后,文章展望了未来的发展趋势,如模型压缩、跨模态生成和多语言多任务学习。
434 3
|
12天前
|
机器学习/深度学习 算法 文件存储
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
38 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
8天前
|
机器学习/深度学习 算法 文件存储
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
19 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
23天前
|
自然语言处理 算法 JavaScript
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架通过生成和评估两个步骤处理长文档,支持集中式和分散式两种策略。每个LLM独立生成文本摘要,集中式方法由单一LLM评估并选择最佳摘要,而分散式方法则由多个LLM共同评估,达成共识。论文提出两阶段流程:先分块摘要,再汇总生成最终摘要。实验结果显示,多LLM框架显著优于单LLM基准,性能提升最高达3倍,且仅需少量LLM和一轮生成评估即可获得显著效果。
58 10
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
|
12天前
|
机器学习/深度学习 计算机视觉 iOS开发
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
53 12
|
1月前
|
机器学习/深度学习 编解码 vr&ar
NeurIPS 2024最佳论文,扩散模型的创新替代:基于多尺度预测的视觉自回归架构
本文详细解读NeurIPS 2024最佳论文《视觉自回归建模:基于下一尺度预测的可扩展图像生成》。该研究提出VAR模型,通过多尺度token图和VAR Transformer结构,实现高效、高质量的图像生成,解决了传统自回归模型在二维结构信息、泛化能力和计算效率上的局限。实验表明,VAR在图像质量和速度上超越现有扩散模型,并展示出良好的扩展性和零样本泛化能力。未来研究将聚焦于文本引导生成和视频生成等方向。
166 8
NeurIPS 2024最佳论文,扩散模型的创新替代:基于多尺度预测的视觉自回归架构
|
28天前
|
搜索推荐 架构师 数据挖掘
架构实操:画好一张业务模型图
本文以SDK设计的角度分析了如何构建一张属于SDK的各个业务的模型图。
|
4月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
181 0
|
2月前
|
机器学习/深度学习 测试技术 定位技术
新扩散模型OmniGen一统图像生成,架构还高度简化、易用
近期,一篇题为“OmniGen: Unified Image Generation”的论文介绍了一种新型扩散模型OmniGen,旨在统一图像生成任务。OmniGen架构简洁,无需额外模块即可处理多种任务,如文本到图像生成、图像编辑等。该模型通过修正流优化,展现出与现有模型相当或更优的性能,尤其在图像编辑和视觉条件生成方面表现突出。OmniGen仅含3.8亿参数,却能有效处理复杂任务,简化工作流程。尽管如此,OmniGen仍存在对文本提示敏感、文本渲染能力有限等问题,未来研究将继续优化其架构与功能。
86 16