0%

架构设计

摘要

  • B/S架构,C/S架构,分布式架构等学习笔记

B/S架构和C/S架构 还有那些架构 详细介绍所有架构的优点和缺点

在软件系统设计中,不同的架构模式直接影响系统的性能、扩展性和维护成本。以下是主流架构模式的深度解析和对比:

一、经典架构模式

  1. C/S架构(Client/Server)

    • 技术特点:采用请求-响应模式,支持TCP/UDP协议,支持长连接
    • 演进路线
      • 两层架构:客户端直接操作数据库(如VB+SQL Server开发)
      • 三层架构:引入业务逻辑层(典型应用Delphi+中间件+Oracle)
      • N层架构:服务分层+领域驱动设计
    • 优势
      • 网络利用率高(二进制协议+连接复用)
      • 支持复杂事务处理(如数据库事务补偿机制)
      • 数据安全控制粒度细(字段级权限控制)
    • 挑战
      • 版本碎片化(需实现自动差分升级)
      • 跨平台成本(需使用QT/Electron等技术)
      • 服务端扩容瓶颈(数据库分库分表方案)
  2. B/S架构(Browser/Server)

    • 技术演进
      • CGI时代(Perl/C编写)
      • ASP/JSP/PHP服务器渲染
      • 前后端分离+SPA应用
      • PWA渐进式Web应用
    • 核心优势
      • 容器化部署(Docker+K8s实现弹性伸缩)
      • 灰度发布能力(AB测试+功能开关)
      • 全球加速(CDN边缘计算)
    • 性能瓶颈
      • 首屏加载优化(SSR服务端渲染)
      • WebSocket双工通信
      • 离线处理方案(Service Worker缓存)

二、分布式架构体系

  1. P2P架构

    • 协议实现
      • DHT算法(Kademlia实现)
      • NAT穿透(STUN/TURN)
      • 区块链应用(Gossip协议)
    • 典型应用
      • 分布式存储(IPFS)
      • 视频会议(WebRTC)
      • 加密货币网络
    • 安全隐患
      • 女巫攻击防御
      • 数据完整性验证
      • 匿名通信保护
  2. SOA架构

    • 核心组件
      • ESB企业服务总线(消息转换+协议转换)
      • 服务注册中心(UDDI增强版)
      • BPEL业务流程引擎
    • 实施要点
      • 服务粒度设计(SOMA方法)
      • 服务版本管理(语义化版本控制)
      • 服务监控(分布式追踪)
    • 转型挑战
      • 单体系统服务化改造
      • 组织架构适配(康威定律)
      • 服务契约管理(Swagger+OpenAPI)

三、云原生架构

  1. 微服务架构

    • 关键技术栈
      • 服务网格(Istio数据平面)
      • 配置中心(Apollo多环境管理)
      • 服务熔断(Hystrix舱壁模式)
    • 进阶实践
      • 领域事件溯源(Event Sourcing)
      • CQRS读写分离
      • 分布式事务(Saga模式)
    • 运维复杂度
      • 全链路压测
      • 混沌工程
      • 多集群管理
  2. Serverless架构

    • 核心原理
      • 冷启动优化(预留实例池)
      • 事件驱动架构(EventBridge)
      • 无状态设计(外部化状态)
    • 成本优势
      • 毫秒级计费
      • 自动弹性伸缩
      • 零运维成本
    • 使用限制
      • 执行时长限制(15分钟)
      • 本地调试困难
      • 厂商锁定风险

四、边缘计算架构

  1. MEC架构(Multi-access Edge Computing)
    • 核心技术
      • 边缘节点调度(K3s轻量级K8s)
      • 数据本地化处理(GDPR合规)
      • 低延迟通信(5G URLLC)
    • 应用场景
      • 工业物联网预测性维护
      • 自动驾驶实时决策
      • AR/VR云渲染
    • 实施难点
      • 边缘节点安全管理
      • 中心-边缘数据同步
      • 异构设备管理

五、架构选型决策树

  1. 合规性要求

    • 数据主权(选择区域化架构)
    • 行业标准(如金融等保要求)
  2. 团队能力评估

    • 分布式系统经验值
    • DevOps成熟度
  3. 业务特征分析

    • 流量模式(突发vs平稳)
    • 数据一致性要求(CAP抉择)
    • 计算密集型程度
  4. 成本模型

    • 基础设施沉没成本
    • 人力维护成本估算
    • 云服务计费模式优化

六、架构演进趋势

  1. 混合架构模式

    • 核心系统采用Service Mesh
    • 创新业务使用Serverless
    • 遗留系统通过API网关接入
  2. 智能运维体系

    • AIOps异常检测
    • 根因分析自动化
    • 自愈系统设计
  3. 安全架构升级

    • 零信任网络
    • 同态加密
    • 硬件安全模块

建议技术选型时采用架构评估矩阵,从性能、安全、成本等维度进行加权评分。同时建立架构债管理机制,定期进行架构健康度评估,确保系统持续演进能力。

B/S架构的优点和缺点

B/S(Browser/Server,浏览器/服务器)架构是一种基于浏览器和服务器的网络架构模式,广泛用于Web应用系统。它的优点和缺点如下:


优点:

  1. 部署维护方便

    • 用户无需安装客户端软件,只需使用浏览器访问即可,极大降低了安装和维护成本。
    • 服务器端升级后,所有用户都能直接使用新版本,无需单独更新客户端。
  2. 跨平台性强

    • 由于基于浏览器,支持Windows、Mac、Linux、手机等多种设备,只要能运行浏览器,就能使用系统。
  3. 远程访问能力强

    • 只要有网络,用户可以随时随地通过浏览器访问应用,支持分布式办公。
  4. 开发成本较低

    • 开发语言(如JavaScript、HTML、CSS等)通用性强,开发环境成熟,框架丰富(如React、Vue、Angular等)。
    • 采用Web API和HTTP协议,方便与第三方系统集成。
  5. 系统升级灵活

    • 服务器端控制业务逻辑,调整或优化功能时,只需修改服务器端代码,客户端无需操作。
  6. 支持大规模用户访问

    • 采用负载均衡、云计算等技术,可以支撑大并发访问,适用于企业级应用和互联网产品。

缺点:

  1. 性能受限

    • 由于依赖HTTP协议,每次请求都要与服务器交互,实时性不如C/S架构,响应速度受限于网络和服务器性能。
    • 复杂的计算任务需要服务器完成,增加服务器负担。
  2. 交互体验不如C/S架构

    • 受限于浏览器能力,界面交互、图形渲染、文件操作等不如客户端应用流畅。
    • 依赖前端框架(如Vue、React)和WebSocket等技术来优化交互体验,但仍有一定局限性。
  3. 安全性问题

    • 由于数据传输和存储都依赖服务器,容易受到网络攻击(如SQL注入、XSS、CSRF等)。
    • 需要采用HTTPS加密、身份验证、权限管理等安全措施。
  4. 对网络环境依赖强

    • 需要稳定的网络连接,网络不佳时,用户体验下降,甚至无法使用。
    • 断网情况下无法离线使用,除非采用PWA或本地缓存技术。
  5. 开发复杂度增加

    • 需要前端、后端、数据库等多方面的配合,涉及更多的技术栈,开发成本和调试难度较高。
    • 兼容不同浏览器和设备可能需要额外的适配工作。

总结:

适用场景:

  • 适用于互联网应用、企业管理系统、门户网站、在线办公、社交平台等。
  • 适用于需要多人协作、远程访问、快速迭代的软件产品。

不适用场景:

  • 高度依赖本地计算、数据存储、实时性强(如游戏、图形渲染、工业控制等)的应用更适合C/S架构。
  • 对离线使用需求高的应用(如某些专业软件)B/S架构可能不够稳定。

总体而言,B/S架构的优点在于易于部署和维护,适用于大多数Web应用,但在交互体验和性能方面仍然存在一定局限。

感谢老板支持!敬礼(^^ゞ