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


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


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

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

头条号:小豆君编程分享

相关文章
|
10月前
|
机器学习/深度学习 人工智能 监控
大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案
大型动作模型(LAMs)作为人工智能新架构,融合神经网络与符号逻辑,实现企业重复任务的自动化处理。通过神经符号集成、动作执行管道、模式学习、任务分解等核心技术,系统可高效解析用户意图并执行复杂操作,显著提升企业运营效率并降低人工成本。其自适应学习能力与上下文感知机制,使自动化流程更智能、灵活,为企业数字化转型提供坚实支撑。
626 0
大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案
|
11月前
|
存储 BI Shell
Doris基础-架构、数据模型、数据划分
Apache Doris 是一款高性能、实时分析型数据库,基于MPP架构,支持高并发查询与复杂分析。其前身是百度的Palo项目,现为Apache顶级项目。Doris适用于报表分析、数据仓库构建、日志检索等场景,具备存算一体与存算分离两种架构,灵活适应不同业务需求。它提供主键、明细和聚合三种数据模型,便于高效处理更新、存储与统计汇总操作,广泛应用于大数据分析领域。
1168 2
|
机器学习/深度学习 人工智能 文件存储
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
NVIDIA推出的Llama Nemotron系列推理模型,基于Llama架构优化,包含Nano/Super/Ultra三款,在数学推理、编程和工具调用等任务中展现卓越性能。
533 5
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
|
人工智能 负载均衡 API
长连接网关技术专题(十二):大模型时代多模型AI网关的架构设计与实现
随着 AI 技术快速发展,业务对 AI 能力的渴求日益增长。当 AI 服务面对处理大规模请求和高并发流量时,AI 网关从中扮演着至关重要的角色。AI 服务通常涉及大量的计算任务和设备资源占用,此时需要一个 AI 网关负责协调这些请求来确保系统的稳定性与高效性。因此,与传统微服务架构类似,我们将相关 API 管理的功能(如流量控制、用户鉴权、配额计费、负载均衡、API 路由等)集中放置在 AI 网关层,可以降低系统整体复杂度并提升可维护性。 本文要分享的是B站在大模型时代基于多模型AI的网关架构设计和实践总结,希望能带给你启发。
1189 4
|
人工智能 缓存 自然语言处理
Bolt DIY架构揭秘:从模型初始化到响应生成的技术之旅
在使用Bolt DIY或类似的AI对话应用时,你是否曾好奇过从输入提示词到获得回答的整个过程是如何运作的?当你点击发送按钮那一刻,背后究竟发生了什么?本文将揭开这一过程的神秘面纱,深入浅出地解析AI对话系统的核心技术架构。
475 5
|
人工智能 算法 网络安全
基于PAI+专属网关+私网连接:构建全链路Deepseek云上私有化部署与模型调用架构
本文介绍了阿里云通过PAI+专属网关+私网连接方案,帮助企业实现DeepSeek-R1模型的私有化部署。方案解决了算力成本高、资源紧张、部署复杂和数据安全等问题,支持全链路零公网暴露及全球低延迟算力网络,最终实现技术可控、成本优化与安全可靠的AI部署路径,满足企业全球化业务需求。
|
9月前
|
数据采集 机器学习/深度学习 搜索推荐
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
MIT与丰田研究院研究发现,扩散模型的“局部性”并非源于网络架构的精巧设计,而是自然图像统计规律的产物。通过线性模型仅学习像素相关性,即可复现U-Net般的局部敏感模式,揭示数据本身蕴含生成“魔法”。
369 3
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
|
8月前
|
机器学习/深度学习 存储 缓存
115_LLM基础模型架构设计:从Transformer到稀疏注意力
大型语言模型(LLM)的架构设计是其性能的核心决定因素。从2017年Transformer架构的提出,到如今的稀疏注意力和混合专家模型,LLM架构经历了快速的演进。本文将全面探讨LLM基础架构的设计原理,深入分析Transformer的核心机制,详细介绍稀疏注意力、MoE等创新架构,并展望未来架构发展方向。通过数学推导和实践案例,为构建高效、强大的LLM提供全面指导。
1151 0
|
8月前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
392 0
|
10月前
|
编解码 文字识别 自然语言处理
Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
Dots.ocr 是一款仅1.7B参数的视觉语言模型,正在重塑文档处理技术。它将布局检测、文本识别、阅读顺序理解和数学公式解析等任务统一于单一架构,突破传统OCR多模块流水线的限制。在多项基准测试中,其表现超越大参数模型,展现出“小而精”的实用价值,标志着OCR技术向高效、统一、灵活方向演进。
954 0
Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22