2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

架构设计实践五部曲(四):单体式与分布式的应用架构

  • 2019-09-27
  • 本文字数:2287 字

    阅读完需:约 8 分钟

架构设计实践五部曲(四):单体式与分布式的应用架构

产品架构在业务架构的基础上,按照解决的业务问题域,划分出不同的功能模块,再根据功能模块间的关系,组合成子系统。应用架构在产品架构的基础上考虑两个事情:第一、考虑的是子系统间的关系。第二、考虑将可复用的组件或模块进行下沉,沉淀到平台层,为业务组件提供统一的支撑。应用架构是要说明产品架构分哪些应用系统,应用系统间是如何集成的,这就是应用架构和应用集成架构。


应用架构分为两种:一种是单体式应用架构、一种是分布式应用架构。


单体式应用架构就是系统只有一个应用,数据存储在一个 DB 等存储介质里面。


分布式应用架构是指存在多个系统,系统之间通过接口的形式进行调用,不同系统的数据存储在多个 DB 里面。

1.划分应用

在做应用架构之前,我们已经完成了业务架构和产品架构这 2 步。在产品架构这个架构域,我们通过按照模块之间的聚合和分层,逐步形成产品内部子系统的边界。那么,按照子系统的边界进行切分,能得到整个产品的子系统组成。


还是以风控系统的产品为例,在产品架构这一环节,我们输出了下面的产品架构图。



图 1


应用架构的分解,通过对产品架构按照水平和垂直两个维度进行划分。

水平划分

在产品架构的环节,按照同一产品范围的模块放在同一层级的原则,得到水平层面的应用系统划分。只要产品架构明确定义了系统间的边界,很容易确定整个产品的各个子系统。



图 2

垂直划分

当应用内存在几个相对独立的模块,每个模块的业务逻辑差别比较大,且内部的组成较为复杂和庞大时,还需要进一步对应用内进行子系统的切分。这里的切分原则是,对应用内按业务进行切分,保证子应用是相互独立。


比如风控系统的案例中,在风控引擎这个应用中,存在实时、离线的校验场景。每种场景都是相对独立。这时候将这三个模块按照子系统进行切分成:实时风控引擎子系统、离线风控引擎子系统。



图 3

2.单体式应用

单体式应用架构是比较传统的分为 4 层:数据层(Data Layer)、应用逻辑层(Business Layer)、表现层(Presentation Layer)和基础通用层(Common Layer)。



图 4

展现层

展现层是整个应用面向用户的入口,用户通过展现层实现与系统的交互。展现层为用户提供系统功能的操作、系统数据的展现。展现层按照面向的用户类型提供不同的交互服务。


例如在业务场景中,用户有实操层用户、管理层用户、决策层用户。针对不同层级的用户,系统所提供的功能是不相同。


面向实操层用户,提供的是对系统的操作功能,满足业务日常运营。往往更多的是执行具体操作。


面向管理层用户,满足管理者的日常管理需求,通常提供经营数据、日常管理数据、团队业务数据等等。通过数据分析,改善日常运营的流程。


面向决策层用户,这一层的用户不需要太细的数据,为其提供企业的经营诊断数据和报告,辅助决策支持。

业务层

业务层是应用为解决业务需求,按照产品架构中的功能模块进行细化。业务层是对将产品层从粗到细的分解过程。这个过程是对业务的细化过程,把项目要交付的模块细分到最基本的单元。最基本单元是实现日常业务操作的最细粒度的功能点。由此,我们能够得到实现业务逻辑的全功能结构。

数据层

数据层按照应用的数据模型分别进行存储。这里的存储介质包含关系型数据库、NoSQL、分布式文件系统。

通用基础层

通用基础层是为系统提供通用能力的中间件,比如流程引擎、消息中间件、缓存、搜索引擎等等。这些中间件和业务是无相关性的,提供的是通用的基础技术能力。


按照上述的方式,我们得到风控系统中的子系统:处置中心系统的单体应用架构。如下图:



图 5

3.分布式应用

分布式应用架构图实质是产品内部所有应用在分布式环境下的调用关系图。各应用间通过服务的形式相互调用,这是典型的 SOA 架构。在应用架构图中,SOA 架构中的服务注册、服务治理、服务发现这些 RPC 框架的基础平台功能不用在应用架构中体现。


应用架构图的重点是体现应用之间的逻辑关系和通信关系,体现产品的内部关系和外部关系。内部关系是产品内各应用的调用关系;外部关系展现的是产品与外部系统间的调用关系。将应用的内外关系呈现在应用架构中,产品在整个业务中的定位和影响将变得清晰。

应用间调用关系

在产品内部的各子系统之间,为了解决业务需求,通过应用之间的服务调用或者异步消息调用产生数据关系。通过产品架构图中得到的应用系统划分,按照系统间的调用关系,形成内部应用的集成架构图。在应用集成架构图中,需要标注调用链路中的业务含义,清楚的标注应用之间发生的业务关系。



图 6

外部系统调用关系

数据输入做为产品的业务数据来源,很大部分是外部系统提供。在应用架构图中,按照业务属性、来源关系进行对外部系统进行归类,并将外部的来源系统纳入整个应用架构中。我们知道计算机系统中,数据输入和数据输出是作为一个整体。应用架构中除了输入系统,输出系统做为整个产品的一部分,需要纳入到应用架构图中。



图 7

明确应用调用边界

应用边界对于产品的定位、产品的设计有很重要的影响。在应用架构中需要通过不同颜色的标注,来确定产品与外部系统的边界。通过不同颜色标注外部来源系统、内部应用、应用依赖系统、输出系统。为后续的规划、发展提供基础。



图 8


最终一种好的应用架构图,应该具备以下特点:


  • 清晰的应用边界。

  • 应用之间的调用关系明确。

  • 有入必有出,有输入系统、必有输出系统。

  • 清晰的呈现应用的全局关系。


作者简介


胡斌,菜鸟网络技术专家,目前负责菜鸟风控系统的建设。曾在淘宝技术部先后负责卖家平台、商家运营等领域。在大规模分布式应用、大数据、架构领域有多年的开发和管理经验。

延展阅读

架构设计实践五部曲(一):架构与架构图


架构设计实践五部曲(二):业务架构与产品架构设计实践


架构设计实践五部曲(三):从领域模型提取数据架构


2019-09-27 09:3015271

评论 1 条评论

发布
用户头像
2019-10-12 11:06
回复
没有更多了
发现更多内容

牛啊!长这么大还是头一次见24W字的SpringBoot从入门到实战文档

程序知音

Java spring 微服务 springboot 后端技术

react源码中的fiber架构

flyzz177

React

Java高手速成 | 高质量代码编写最佳实践

TiAmo

编程好习惯 设计原则 Java’

TDengine 公布 2022 年度中国时序数据应用创新奖,33 个科技企业创新应用脱颖而出

TDengine

数据库 tdengine 时序数据库

react hook 源码完全解读

flyzz177

React

ElasticSearch必知必会-基础篇

京东科技开发者

大数据 搜索引擎 数据分析 技术分享 Elastic Search

赞赞赞!融云收获行业媒体「组团打 Call」

融云 RongCloud

无监控,不运维!深入浅出介绍ChengYing监控设计和使用

袋鼠云数栈

HDI压合设计准则作业规范

华秋PCB

PCB PCB设计 HDI

react源码中的hooks

flyzz177

React

ISV生态合作伙伴体系多领域赋能,开拓市场赛道

元年技术洞察

数据中台 数据 数字化转型 ISV 方舟平台

【等保小知识】等保四级是最高级别吗?等保四级适用于哪些领域?

行云管家

等保 等保测评 等保四级

【等保小知识】等保3.0就是等保三级吗?

行云管家

等保 等保2.0 等保3.0

要避免的自动化实践

FunTester

软件测试/测试开发 | AppCrawler 自动遍历测试工具实践(一)

测试人

软件测试 自动化测试 测试开发 自动遍历 AppCrawler

学术加油站|机器学习应用在数据库调优领域的前沿工作解读

OceanBase 数据库

数据库 oceanbase

编程的终结;展望2023年AI系统方向;AI的下一个阶段

OneFlow

人工智能 深度学习

文末领资料 | 研发效能领域的三个年度关键词

思码逸研发效能

研发管理 研发效能

大咖说·对话开源|与Tapdata论道数据技术开放生态

大咖说

开源

行业分析| 交通综合执法对讲系统

anyRTC开发者

指挥调度 快对讲 语音对讲 视频对讲 综合执法

一文总结ACE代码框架

OpenHarmony开发者

OpenHarmony

硬实力,高潜力!旺链科技当选“2022德勤中国高科技高成长50强”

旺链科技

区块链 区块链技术

使用 NineData 高效编写 SQL

NineData

数据库 sql 数据库开发 数据管理工具 NineData

华为云Stack新版发布:构筑行业云底座,共创行业新价值

华为云开发者联盟

云计算 后端 华为云 企业号 1 月 PK 榜

火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!

字节跳动数据平台

大数据 数据治理

总有一个你能用上的29个IDEA小技巧

风铃架构日知录

Java 程序员 IDEA IT 开发工具

信用卡APP评测系列:科技赋能信用卡APP创新升级,助力客户体验提升

易观分析

金融 信用卡

Diffie-Hellman密钥协商算法探究

百度Geek说

数据安全 企业号 1 月 PK 榜

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(数据检查对比)

码界西柚

redis 1月日更 数据对比 Redis-full-check

开源共建|旺链科技与FISCO BCOS达成产业应用合作

旺链科技

区块链 开源 区块链技术

网页抓取中最常用的三大 Python 库

极客天地

架构设计实践五部曲(四):单体式与分布式的应用架构_架构_胡斌_InfoQ精选文章