架构之业务架构[通俗易懂]

架构之业务架构[通俗易懂]业务架构之产品经理的职责产品经理的职责用户的原始需求往往是零散和碎片化的,产品经理的职责就是:告诉用户,系统长什么样子;告诉开发,他要实现什么功能。产品经理定义了系统的外表。产品经理的职责:1、收集用户的原始需求,2、梳理成一个个业务流程,每个业务流程由多个业务步骤组成。一个业务步骤包含三部分的内容:输入、输出和业务功能。3、需求梳理好后,产品经理会把每个步骤具体化为页面原型。在原型中,会以直观的方式给出各个步骤的输入或输出,以及用户的操作过程,最后再把这些页面串起来,形成一个业

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

业务架构产品经理的职责

产品经理的职责

用户的原始需求往往是零散和碎片化的,产品经理的职责就是:告诉用户,系统长什么样子;告诉开发,他要实现什么功能。

产品经理定义了系统的外表。产品经理的职责:

1、收集用户的原始需求,

2、梳理成一个个业务流程,每个业务流程由多个业务步骤组成。一个业务步骤包含三部分的内容:输入、输出和业务功能。

3、需求梳理好后,产品经理会把每个步骤具体化为页面原型。在原型中,会以直观的方式给出各个步骤的输入或输出,以及用户的操作过程,最后再把这些页面串起来,形成一个业务流程。

业务流程例子

架构之业务架构[通俗易懂]

 

  1. 按照业务域来划分系统模块,有多少业务领域,就有多个系统模块,流程中的业务节点按照业务域的不同,可以划分到不同的系统模块。

注意不是按照业务流程划分,有多少业务流程,就有多少个系统模块,这个对应关系比较直接,但实现起来很困难。而且这种模块划分的方式并没有降低总的业务复杂度。

架构之业务架构[通俗易懂]

 

 

业务划分的目标

1、业务的可扩展

业务架构设计要能支持打造一个柔性系统,通过提供良好的业务扩展性,允许业务不断调整和快速生长。

业务的主题是变化和创新,系统的主题是稳定和可靠。

架构之业务架构[通俗易懂]

 

2、业务的可复用

首先,模块的职责定位要非常清晰。对于模块来说,在定位范围内的职责要全部涵盖到,而不在这个范围的职责全部不要。

其次,模块的数据模型和接口设计要保证通用。架构师需要归纳业务场景,通过抽象提炼,形成通用化的设计,以此来满足多个类似场景的需求。

小提示:清晰的模块定位和通用化设计,是模块能够复用的内在要求。

最后,实现模块的高复用,还需要做好业务的层次划分。我们知道,越是底层的业务,它就相对更固定。

模块划分是需要考虑的重要问题业务复用性复用其实也是业务扩展性的基础

复用的分类复用有多种形式,它可以分为技术复用和业务复用两大类。技术复用包括代码复用和技术组件复用;业务复用包括业务实体复用、业务流程复用和产品复用。从复用的程度来看,从高到低,我们可以依次划分为产品复用 > 业务流程复用 > 业务实体复用 > 组件复用 > 代码复用。

架构之业务架构[通俗易懂]

 

代码级复用和技术组件复用都属于工具层面,它们的好处是在很多地方都可以用,但和业务场景隔得有点远,不直接对应业务功能,因此复用的价值相对比较低。

业务实体复用针对细分的业务领域,比如订单、商品、用户等领域。它对各个业务领域的数据和业务规则进行封装,将它变成上层应用系统可以直接使用的业务组件。

业务流程的复用针对的是业务场景,它可以把多个业务实体串起来,完成一个端到端的任务。相比单个的业务实体复用,业务流程的复用程度更高,业务价值也更大。

最高层次的复用是对整个系统的复用,比如说一个 SaaS 系统(Software-as-a-Service),它在内部做了各种通用化设计,允许我们通过各种参数配置,得到我们想要的功能;或者说一个 PaaSPlatform-as-a-Service)平台,它会提供可编程的插件化支持,允许我们嵌入外部代码,实现想要的功能。

从技术复用到业务复用,越往上,复用程度越高,复用产生的价值也越大,但实现起来也越复杂,它能复用的场景就越有限。

但如果我们能进一步打造业务中间件,并在这个基础上,形成业务平台,这样,我们就能实现更高的业务级复用,可以更高效地支持系统的快速落地。

业务架构业务模块构建

业务模块构建要求

每个模块都代表了某个业务概念,或者说业务领域。

模块内部由数据和业务逻辑组成,其中数据是核心,业务逻辑围绕着数据,对数据做进一步加工,方便外部使用。

对模块的要求:

1、定位明确,概念完整。数据上,模块需要覆盖对应业务领域的全部数据;功能上,模块要包含业务领域的全部功能。

2、自成体系,粒度适中。粒度划分得太小,导致系统的碎片化;体量过大的模块,我们称之为肿瘤,可维护性很差。

3、依赖关系明确。简化模块的依赖关系,我们就要同时简化依赖的方向和减少依赖的数量。避免松散的网状结构,尽量把网状结构转化为层次结构。

业务模块的构建步骤

构建步骤:

通过构建合理的模块体系,有效地控制系统复杂度,最小化业务变化引起的系统调整。

打造可扩展的模块体系:

1、模块拆分我们先对系统进行模块化拆分,拆分有两种方式:水平拆分和垂直拆分。

水平拆分是指从上到下把系统分为多层,按照系统处理的先后顺序,把业务拆分为几个步骤。垂直拆分指的是按照不同的业务线拆分。

一般做业务架构时,我们先考虑垂直拆分,从大方向上,把不同业务给区分清楚,然后再针对具体业务,按照业务处理流程进行水平拆分。

举例:

市政府审核

市委/市人大审核

市高法/检察院审核

分配给组长

分配给组员

分配给组员

分配给承办单位

分配给承办单位

分配给承办单位

2、打造可扩展的模块体系:模块整合

通用化整合:通用化指的是通过抽象设计,让一个模块具备通用的能力,能够替代多个类似功能的模块。

平台化整合:平台化是把定位相同的模块组织在一起,以组团的方式对外提供服务。对于外部系统来说,我们可以把这些模块看成是一个整体,一起对业务场景提供全面的支撑。

业务架构之常见业务架构

服务端常见业务架构

1、单体架构

单体应用内部一般采用分层结构,从上到下,一般分为表示层、业务层、数据访问层、DB 层。表示层负责用户体验,业务层负责业务逻辑,数据访问层负责 DB 的数据存取。

架构之业务架构[通俗易懂]2、分布式架构

架构之业务架构[通俗易懂] 

分布式架构,简单来说就是系统由多个独立的应用组成,它们互相协作,成为一个整体。

3、传统SOA 架构

架构之业务架构[通俗易懂]4、新的 SOA 架构

架构之业务架构[通俗易懂] 

 

5、微服务架构

架构之业务架构[通俗易懂]常见业务架构

 

分布式的系统架构App 前端直接对接多个后端应用提供的 HTTP 接口。架构之业务架构[通俗易懂]

 

每个业务线的服务端进行拆分,让 App 接口和 PC 端接口各自在物理上独立,但它们共享核心的业务逻辑。

架构之业务架构[通俗易懂]

 

App 前端会通过移动网关来访问服务端接口。这里的网关主要就是负责处理通用的系统级功能,包括通信协议适配、安全、监控、日志等等;网关处理完之后,会通过接口路由模块,转发请求到内部的各个业务服务,比如搜索服务、详情页服务、购物车服务等等。

业务架构之基础服务的设计

基础服务边界划分的原则

1、服务的完整性原则

有些服务只是存储基础数据,然后提供简单的增删改查功能,这样一来服务只是一个简单的 DAO,变成了数据访问通道。这样的服务,它的价值就很有限,也容易被服务调用方质疑。划分服务边界时,要保证服务数据完整、功能全面,这样才能支撑一个完整的业务领域。

2、服务的一致性原则

服务内部的业务逻辑要尽量依赖内部数据,而不是接口输入的数据,否则会造成数据和业务规则的脱节(一个在外面,一个在里面),如果服务对外部的依赖性很强,就无法提供稳定的能力了。

3、正交原则

服务之间有数据的依赖关系,但没有接口的调用关系。

针对具体的业务场景,我们可以在上层的聚合服务里,通过聚合订单服务和商品服务来实现。

基础服务设计步骤

先弄清做什么:

服务边界划分,不主动调用其他服务、不负责和第三方系统的集成、只负责存储,不负责数据的进一步解释。

怎么做:

1、部分字段可配置:如流程状态等、也可配置主状态和子状态。基本状态称之为主状态,数量是比较有限的,状态之间的变化关系也是比较明确的,可以固定处理。子状态有哪些具体的取值,不同的项目是不一样的,可以开放给各个应用来定义。

2、拆分查询等级:查询接口可以根据返回字段数量的不同,提供三个不同粒度的查询接口来满足多样化的需求。第一个是粗粒度接口,只返回订单最基本的 7-8 个字段;第二个是中粒度接口,返回订单比较常用的十几个字段;第三个是细粒度接口,返回订单的详细信息。

3、设置不同等级的异步的消息通知。按照消息详细程度的不同,订单消息可以分为胖消息瘦消息。顾名思义,胖消息包含了尽可能多的字段,但传输效率低;瘦消息只包含最基本的字段,传输效率高。如果外部系统需要更多的信息,它们可以通过进一步调用订单服务的接口来获取。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182728.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • sql语句练习题整理

    一、现有数据库casemanage中表结构如下图TABLENAME:afinfo Id name age birth sex memo 1 徐洪国 37 1979-03-23 男 高中 2 王芳芳 …

  • header发送Cookie

    header发送Cookie

    2021年10月26日
  • Git使用流程_git提交流程

    Git使用流程_git提交流程以coding为例,演示如何使用git首先理解下整个流程,如图一,将本地代码上传到远程仓库1.(电脑里得先下载git)登录coding,新建一个仓库,点击代码浏览可以看到2.在本地新建一个文件夹,作为项目根目录,再此启动GitBash,进入目录,并输入gitinit初始化一个本地git仓库3.将本地仓库和我们在coding上创建的远程仓库对接起来,输入gitre…

  • 利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块

    利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块本文介绍一下使用Python对Excel文件的基本操作,包括使用xlrd模块读取excel文件,使用xlwt模块将数据写入excel文件,使用openpyxl模块读取写入和修改excel文件。目录1、使用xlrd模块对xls文件进行读操作1.1获取工作簿对象1.2获取工作表对象1.3获取工作表的基本信息1.4按行或列方式获得工作表的数据1.5获取某…

  • W3C标准与规范「建议收藏」

    W3C标准与规范「建议收藏」W3C标准,即一系列标准的集合,他的本质是结构标准语言。就像平时使用的HTML、CSS等都需要遵守这些标准。万维网联盟创建于1994年,是web技术领域最具权威和影响力的国际中立性技术标准机构。它有效促进了web技术相互之间的兼容。就像网页是由三部分组成:结构、表现和行为。那么他对应的标准也分三方面:1.结构化标准语言:HTML。可扩展标记语言(XML):最初设计目的是弥补HTML的不

  • springapplicationevent_Spring bean

    springapplicationevent_Spring bean相信使用过SpringBoot的开发人员,都对SpringBoot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Spring应用的入口类中被调用,以启动Spring应用。1.Spring应用的入口类与SpringApplication类1)Spring应用的入口类Spring应用的入口类是Spring应用的配置起点,是配置Spring上下文的起点,往往使用了@SpringBootApplication或@EnableA

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号