写点什么

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

  • 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:3013103

评论 1 条评论

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

ONES 创始人兼 CEO 王颖奇:ONES.ai 上线,以及我的一些思考

万事ONES

项目管理 AI 研发管理 SaaS

教你如何使用PyTorch解决多分类问题

华为云开发者联盟

人工智能 华为云 华为云开发者联盟

DeFi开发:DeFi中的去中心化保险世界

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

什么是原生IP?原生IP与住宅IP有何区别?

Geek_bf375d

静态代理IP是什么?一文看懂静态代理IP

Geek_bf375d

ProPresenter 7 for Mac(多屏演示软件)

展初云

Mac 演示文稿制作软件 ProPresenter

限时开发、码力全开、2w奖金!AGI Hackathon等你挑战!

飞桨PaddlePaddle

开发者 大模型 黑客马拉松 AGI

DEVONthink 3 for Mac(文档管理软件)

展初云

Mac 文档管理软件 DEVONthink

git 撤销某一次 commit 提交

秃头小帅oi

git 前端 低代码

实力见证!ONES 荣获南方周末「年度科创力产品」大奖

万事ONES

获奖 研发管理软件

一文看懂JavaScript 如何实现继承

伤感汤姆布利柏

前端 低代码 Java’ java 技术提升

悄悄上线:CSS @starting-style 新规则

伤感汤姆布利柏

CSS 前端

大模型创业“风投”正劲,AGI Foundathon 大模型创业松活动精彩看点

飞桨PaddlePaddle

大模型 AGI 创业松

杉岩数据:基于鲲鹏DevKit高效开发产线质检数据智能存储管理平台,破解数据管理难题

彭飞

Redis桌面管理工具 Redis Desktop Manager最新中文版

胖墩儿不胖y

redis Mac软件

DaVinci Resolve Studio 18 达芬奇影视后期处理工具 支持M1

加油,小妞!

视频编辑 DaVinci Resolve Studio

人工智能知识图谱设计技术点解析

测吧(北京)科技有限公司

测试

技术分享| gcc版本升级到5.2

anyRTC开发者

音视频

情感语音识别:现状、挑战与未来趋势

来自四九城儿

字节跳动AB实验经验分享:企业如何构建数据驱动的实验文化?

字节跳动数据平台

大数据 A/B 测试 对比实验

Dash for mac(代码文档浏览器) 7.1.7完美激活版

mac

苹果mac Windows软件 DASH

【ps破解版软件下载】Photoshop 2024 for Mac,全新升级,打造极致图像处理体验

晴雯哥

11ax and 11be technical-IPQ8072-IPQ9554, IPQ9574- Faster, smarter, smore stable WiFi

wifi6-yiyi

IPQ8072 ipq9554 11ax

Beyond Compare 4 for Mac 文件同步对比工具 支持M1

加油,小妞!

Beyond Compare Beyond Compare 4

智达方通EPM,解决企业经营分析和管理难题

智达方通

企业风险管理 经营分析 经营管理

Moho Pro 14 for Mac(2D动画制作软件)

展初云

Mac 动画制作软件 Moho

软件测试/测试开发/人工智能丨Python算术运算符

测试人

Python 人工智能 软件测试

NineData:为大型房产集团数据库统一纳管,推动业务高效运行

NineData

数据库 运营 房地产 权限管理 NineData

1688 API接口测试指南

Noah

Mac电脑思维导图软件推荐 Xmind 2023激活中文版

mac大玩家j

思维导图 Mac软件 思维导图软件

FFA 2023 「核心技术」专场: Flink 核心技术动向深度解读

Apache Flink

大数据 flink 实时计算

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