当前位置: 首页 > news >正文

架构很简单:系统拆分与组合

背景

分治是将复杂问题简单化的方法。从分布式系统到微服务架构,无不在使用分治的思想。在架构设计中,如何进行有效的系统划分是架构师面临的一个重要的话题,本文将介绍系统拆分的原则。

综述

通常来讲一个系统有两个问题域,业务问题域和技术问题域。业务问题域描述业务的范围和规划。技术问题域描述如何支撑业务,比如技术选型、技术决策等。所以我们拆分也可以从业务和技术两个角度进行拆分。

拆分方法

业务拆分:也称为垂直拆分,通常来讲会按照业务域或业务属性进行拆分。可以拆分为多级。以电商系统距离。

1、首次拆分:会员、商品、订单、支付、活动、履约、售后、客服、配送等。

2、二次拆分:根据业务发展可以把商品拆分为类目、商品、价格、库存等。

技术拆分:也成为水平拆分,根据非功能性需求、比如海量数据、高性能、高可用等。通常会拆出分层架构、通用组件、框架。

1、分层架构:客户端、接口层、应用层、业务层、资源层等。

2、通用组件(框架):网关、注册中心、配置中心、缓存服务、消息中心、流程编排等。

拆分原则

1、高内聚、松耦合

内聚是指同一个元素(系统、模块、类等)中各个要素之间的关联性。高内聚,是指这种关联性要高。

耦合是指元素与元素之间的关联性(依赖性)。松耦合是指这种关联性要低。

高内聚、松耦合的系统,复用性、扩展性、灵活性会非常强。个人认为,这是系统设计需要满足的最低也是最高要求。

2、通用专用

是指将通用的与专用的拆分,通用的代码、功能、能力下沉。专用的上升。这样可以更大程度达到复用和扩展。比如通用形成的中台能力,专用形成的各端业务能力等。

组合方法

拆分和组合永远是一对好搭档,拆分是为了将复杂问题简单化、组合是为了让多个个体成为整体。通常在系统领域有以下组合的方法。

1、通信方式:RPC调用、Http调用、Web服务,MQ消息,进程内通信、方法调用等。

2、数据方式:宽表、Elasticsearch、同一库、同一表等。

3、页面方式:嵌入URL,嵌入HTML代码等

结尾

通常简单的会是更好的,因为复杂会让你感觉到压力、凌乱、找不到方向。在分治原则、化繁为简的基础上,结合组合原则,就可以构建宏大的系统蓝图。

https://mp.weixin.qq.com/s/dk3VrUmriSTEhJVTG4CxmQ

http://www.cnnetsun.cn/news/617033.html

相关文章:

  • VSCode函数级开发与代码审计——核心操作全解析与落地实践
  • Qwen模型快速选型指南:3小时试遍主流方案不超30元
  • 康养休闲旅游服务实训室教学应用与实践
  • 快讯|DeepSeek Engram论文详解存算分离,华为SWE-Lego开源轻量级代码智能体全栈方案,
  • SOLIDWORKS Simulation:SOLIDWORKS螺栓仿真该怎么设置?
  • GB/T 34986《产品加速试验方法》
  • 凤希AI提出:FXPA2P - 当P2P技术遇上AI,重新定义数据与服务的边界
  • 水质氟化物检测仪:技术原理、行业应用与智能化解决方案深度解析
  • python基于vue的美食外卖点餐平台的设外卖员商家django flask pycharm
  • 央国企2026年的信创之虚拟专用网络
  • AI原生应用开发必知:上下文理解的10个最佳实践
  • 数据库之StarRocks
  • 1992-2024年全国/分省/分市经过矫正的夜间灯光数据
  • Springboot影视周边电商平台hlnap(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 告别高成本低效率!“轻竹办公AIPPT”高性价比搞定PPT制
  • AI率从90%降到10%,亲测有效的降AI率工具,这10款总有一款适合你的论文降AIGC!
  • 1998-2024年上市公司财务冗余数据+stata代码
  • 2015-2025年电影票房数据
  • 1_2_五段式SVPWM (传统算法反正切+DPWMmin)算法理论与 MATLAB 实现详解
  • 别再熬夜手动发圈了!实测「私域神器」,多号运营效率翻倍不再是梦
  • 单电感玩转电池均衡:一个Buck-Boost引发的“血案
  • AGV全覆盖移动避障路径规划matlab代码 扫地机器人路径规划 第一类算法 全覆盖智能算法 %%
  • 学长亲荐!继续教育必看TOP8AI论文平台测评
  • python基于flask框架的在线医疗问诊咨询平台的设计与实现
  • β-CGRP (rat);SCNTATCVTHRLAGLLSRSGGVVKDNFVPTNVGSKAF
  • python基于vue的健身房管理系统django flask pycharm
  • 帧同步游戏设置一个“固定输入延迟”它背后的逻辑
  • 论文与期刊的级别
  • 22.C++进阶:⼆叉搜索树|手撕二叉搜索树
  • 8继承多态