-
如何划分子系统与分析业务接口?
2020-01-07 13:23:26一、划分子系统 我们在对系统进行分解时,无外乎有三种情况。 1⃣️简单的业务系统,用户群比较单一 2⃣️基于原有的系统进行改造 3⃣️新开发的系统 第一类情况由于用户群单一且业务简单,一般不作划分。 第二类...继上篇《企业系统需求分析—干系人识别与分析》之后开始进入产品详细需求环节,本文主要讲解系统分解中的子系统划分与业务接口分析。
一、划分子系统
我们在对系统进行分解时,无外乎有三种情况。
1⃣️简单的业务系统,用户群比较单一
2⃣️基于原有的系统进行改造
3⃣️新开发的系统
第一类情况由于用户群单一且业务简单,一般不作划分。
第二类情况要注重分析对原有系统的影响。包括需要新增哪些子系统、影响哪些子系统、哪些原有的子系统需要修改等。
这类着重讲下新开发的系统如何进行划分。
内部系统一般采用按业务职能来分解。先画出与系统相关的组织架构图,以此划分出对应的子系统,一般典型的企业都会有产、销、供、管这四个部门职能,对应CRM、ERP系统等等。
外部使用的系统一般采用产品服务来分解。根据业务结构树来思考,切记要从业务的角度去理解。
另外也会根据实际情况来采用业务职能与产品服务两种方式结合起来划分。
划分之后要留意子系统之间、子系统与原有系统之间的接口关系,确认谁服务于谁、谁使用、接口是新增/修改等事项
二、业务接口分析
首先要明确业务接口分析只是明确Why和What,不涉及How。
所谓why就是明确接口的用途与价值。我们需要明确三个问题。
1⃣️那个子系统实现该接口。
2⃣️哪些子系统会用到这个接口,以及各自的业务价值。
3⃣️接口使用的频率范围是什么?尽量具体,如果有场景信息和条件更好,方便研发人员判断。
所谓How就是细化接口交互过程。一般会采用时序图和数据词典来定义与描述。
时序图用于呈现接口的交互过程,而数据词典用于定义交互过程中数据包的构成情况,另外我们要确定接口的设计约束,比如通信协议、原有系统的影响等等。
下篇文章将分享功能需求的业务流程识别、分析与优化的相关知识。 -
划分子系统、接口——《一线架构师实践指南》笔记之三
2013-04-16 14:46:27划分子系统遵循四个原则的相关:职责、通用性、开发技能、工作量。 协作决定接口。 如何划分子系统 下面是分层的细化、分区的引入、机制的提取这3种策略背后的4个通用设计原则: 职责不同的单元...提纲:
划分子系统遵循四个原则的相关:职责、通用性、开发技能、工作量。
协作决定接口。
如何划分子系统
下面是分层的细化、分区的引入、机制的提取这3种策略背后的4个通用设计原则:
职责不同的单元划归不同子系统。
通用性不同的单元划归不同子系统。
需要不同开发技能的单元划归不同子系统。
兼顾工作量的相对均衡,进一步切分太大的子系统。
如图13-11所示,子系统的每种划分策略,都是一到多个原则综合作用的结果。
498)this.style.width=498;" height=437<
接口设计的事实与谬误
世界是复杂的,很多东西难以直接获得。例如,直接追求幸福,是永远追不到的。(《乐在工作》一书中说幸福是副产品。)
殊不知,合理的接口设计也不是"直接"得到的。
由于面向对象非常强调"自治",许多人不知不觉地形成了一种错误认识:面向对象推崇"我的接口我做主"。很遗憾,"自治"正确,但"我的接口我做主"这个推断是错误的。
软件世界中本无模块。1968年,Dijkstra发表了第1篇关于层次结构的论文《The Structure of THE-multiprogramming System》。1972年,Parnas发表论文《On the criteria To Be Used in Decomposing System into Modules》论及了模块化和信息隐藏的话题……这些是架构学科开始萌芽的标志。
那么,为什么要对软件进行模块化设计呢?是为了解决复杂性更高的大问题。于是,我们突然领悟:对问题进行分解,分别解决小问题,其实这只是手段。每个架构师应牢记:
"分"是手段,"合"是目的。不能"合"在一起支持更高层次功能的模块,又有何用呢?
因此,我们必须把模块放在协作的上下文之中进行考虑。架构师设计接口时,要考虑的重点是"为了实现软件系统的一系列功能,这个软件单元要和其他哪些单元如何协作",总结成一句话就是:协作决定接口。
相反,直接设计接口,是很多"面向接口的"架构依然拙劣的原因之一。类似"我的接口我做主"的观点是错误的(如图13-12所示),每个模块或子系统(甚至类)无视协作需要而进行的接口定义很难顺畅地被其他模块或子系统使用。
498)this.style.width=498;" height=373<
"世界上最短的距离不是直线",又多了一个例证。
-
Dubbo分布式服务子系统的划分以及Dubbo服务接口的设计原则
2019-08-02 16:29:07服务子系统的数量把控 过多:可能划分过细,破坏业务子系统的...服务子系统划分注意事项 1、不要出现A服务中的SQL需要链接查询到B服务中的表等情况,这样在A服务与B服务进行垂直拆库时就会出错 2、服务子系统间...服务子系统的数量把控
过多:可能划分过细,破坏业务子系统的独立性(如:支付订单、退款订单,用户、账户);部署维护工作量大,独立进程占用内存多
过少:没能很好的解耦;开发维护不好分工;升级维护影响面大服务子系统划分注意事项
1、不要出现A服务中的SQL需要链接查询到B服务中的表等情况,这样在A服务与B服务进行垂直拆库时就会出错
2、服务子系统间避免出现环状的依赖调用
3、服务子系统间的依赖关系链不要过长
4、尽量避免分布式事务Dubbo服务接口的设计原则
1、接口类型
简单数据查询接口:action、facade、dao 带业务逻辑的数据查询接口:action、facade、biz、dao 简单的数据写入接口:action、facade、dao 带业务逻辑的数据写入接口:action、facade、biz、dao 同步接口 异步接口
2、接口粒度
服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题, Dubbo暂未提供分布式事务支持。同时可以减少系统间的网络交互。 服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸。 不建议使用过于抽象的通用接口,如:Map query(Map),这样的接口没有明确语义,会给后期维护带来不便。
3、接口版本
每个接口都应定义版本号,为后续不兼容升级提供可能,如: <dubbo:service interface="com.XxService" version="1.0" /> 接口兼容性 服务接口增加方法,或服务模型增加字段,可向后兼容; 删除方法或删除字段,将不兼容,枚举类型新增字段也不兼容,需通过变更版本号升级。
4、在Provider上尽量多配置Consumer端属性
原因如下: 作服务的提供者,比服务使用方更清楚服务性能参数,如调用的超时时间,合理的重试次数,等等。 在Provider配置后,Consumer不配置则会使用Provider的配置值,即Provider配置可以作为Consumer的缺省值。 否则,Consumer会使用Consumer端的全局设置,这对于Provider不可控的,并且往往是不合理的。 Provider上尽量多配置Consumer端的属性,让Provider实现者一开始就思考Provider服务特点、服务质量的问题。
-
Cisco ios系统中删除子接口的方法与命令
2020-10-01 11:31:48之前给Cisco ios 划分过子端口,现在想要从新重新划分VLAN,需要删除Cisco ios 的子接口该怎么办?删除子接口的命令有哪些?请和脚本之家的小编一起来看一下 -
dubbo服务划分和接口设计原则(五)
2017-05-07 09:45:461.服务划分 服务化的目标: 将系统中独立的业务模块抽取出来,按业务的独立性进行垂直划分,抽象出基础...过多:可能划分过细,破坏业务子系统的独立性(如:支付订单、退款订单,用户、账户)部署维护工作量大,1.服务划分
服务化的目标:
将系统中独立的业务模块抽取出来,按业务的独立性进行垂直划分,抽象出基础服务层。
服务化的目标:
服务化的目标:基础服务为上游业务的功能实现提供支撑,基础服务应用本身无状态,可随着系统的负荷灵活伸缩来提供服务能力。
服务子系统的数量把控
过多:可能划分过细,破坏业务子系统的独立性(如:支付订单、退款订单,用户、账户)部署维护工作量大,独立进程占用内存多
过少:没能很好的解耦开发维护不好分工升级维护影响面大
(以简易版支付系统服务的划分为例)服务子系统划分注意事项:
不要出现A服务中的SQL需要链接查询到B服务中的表等情况,这样在A服务与B服务进行垂直拆库时就会出错。(一旦分库分表就 会出错)
服务子系统间避免出现环状的依赖调用服务子系统间的依赖关系链不要过长尽量避免分布式事务
服务子系统的划分是一个不断优化的过程
2.Dubbo服务接口设计
action、facade、biz、dao
好的Dubbo服务接口设计,并非只是纯粹的接口服务化
2.1接口类型
简单数据查询接口:action、facade、dao
带业务逻辑的数据查询接口:action、facade、biz、dao
简单的数据写入接口:action、facade、dao
带业务逻辑的数据写入接口:action、facade、biz、dao
同步接口异步接口
2.2设计原则接口粒度
服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题,Dubbo暂未提供分布式事务支持。同时可以减少系统间的网络交互。
服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸。
不建议使用过于抽象的通用接口,如:Mapquery(Map),这样的接口没有明确语义,会给后期维护带来不便。
2.3设计原则接口版本
每个接口都应定义版本号,为后续不兼容升级提供可能,如:
<dubbo:serviceinterface="com.XxService" version="1.0" />
2.4设计原则接口兼容性
服务接口增加方法,或服务模型增加字段,可向后兼容;删除方法或删除字段,将不兼容,枚举类型新增字段也不兼容,需通过变更版本号升级。
2.5设计原则异常处理
建议使用异常汇报错误,而不是返回错误码,异常信息能携带更多信息,以及语义更友好。
如果担心性能问题,在必要时,可以通过override掉异常类的 fillInStackTrace()方法为空方法,使其不拷贝栈信息。
查询方法不建议抛出checked异常,否则调用方在查询时将过多的try...catch,并且不能进行有效处理。
服务提供方不应将DAO或SQL等异常抛给消费方,应在服务实现中对消费方不关心的异常进行包装,否则可能出现消费方无法反序列化相应异常。
2.6设计原则
必要的接口输入参数校验.
-
华为路由器子接口,vlan
2019-04-22 23:06:55VLAN:虚拟局域网 路由器和交换机协同工作,之后将原来的一个广播域逻辑的切分为多个; 配置思路: ...4、Vlan间路由-----单臂路由(子接口)、多层交换机 创建vlan 0-4095 其中 1-4094可用 1-1005... -
子接口 VLAN 线路汇聚
2012-10-24 10:20:57PTN线路 点对多拓扑结构 在主端路由器,通过划分VLAN,做线路汇聚 IP划分如下: VLAN ID 主端IP 对端IP 掩码 ... -
ASA单臂路由,同安全等级子接口跨VLAN互通
2018-07-08 16:47:32启用asa端口的两个子接口作为不同的vlan,并使其具有相同的安全等级,可以互相访问,即R2能和R3互通。 配置命令 交换机 此交换机为GNS3 VM IOU服务器的i86bi-linux-l2-adventerprisek9-15.1a.bin镜像,具体... -
思科子接口单臂路由实现不同VLAN之间访问
2020-01-14 21:11:07(1)在交换机上划分不同VLAN (2)交换机上定义trunk 注:红笔所划的是定义trunk (3)路由器的命令配置 (4)PC的配置 三.测试 在此基础上拓展一下 1、拓扑图 2.另外两台PC的配置 3.... -
Dubbo入门到精通学习笔记(十):dubbo服务集群 、Dubbo分布式服务子系统的划分、Dubbo服务接口的设计原则....
2019-09-25 05:49:59文章目录 dubbo服务集群 Dubbo服务集群部署 Dubbo服务集群容错配置--集群容错...服务接口设计与服务子系统划分过程相互优化。 转载于:https://www.cnblogs.com/LeesinDong/p/10835321.html -
内存子系统1_分配接口
2014-02-10 17:03:231.页 struct page; 内核把物理页作为内存管理的基本单位;内存管理单元(MMU)把虚拟地址转换为物理地址, 通常以页为单位进行处理。... Linux将内核空间地址划分为三个区:ZONE_DMA、ZONE_NORMAL和ZONE_HIG -
备-- 单路由器:一对多出口NAT技术+子接口NAT+(命名)扩展访问控制列表+多对一NAT技术实验
2014-11-21 08:51:122、在一个物理接口上划分出的子接口间也可以做NAT,即一个为局域网,另一个为外网出口。 3、访问控制列表是严格按照序列号(list 1、2、、、200、、)来过滤筛选的,所以要配置之前要设计好先后顺序,否则会使后边的... -
【华为认证】HCIA-DATACOM技术分享-配置VLAN间通信实验,通过dot1q子接口实现-入门级手册
2020-09-01 10:48:05来源:CSDN 作者:最铁头的网工 (全球首批HCIA-DATACOM认证者) 认证技术:关于HCIA-DATACOM认证技术知识会在我博客做持续更新。。。 本期分享:系列15点到16点半-技术热讯 感谢大家关注-最铁头的网工...划分VLAN后,不 -
设计原则之接口隔离原则
2018-04-14 16:47:44接口隔离原则的本质在于:建立单一接口,不要建立臃肿的胖接口,尽量细化,接口方法尽量少,它跟单一职责的区别在于,单一职责原则强调的是业务逻辑上的划分。 接口的纯度 1.接口尽量小 2.接口要高内聚 3.... -
List接口
2019-04-28 19:14:08List接口 概述 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,...部分子集合线程安全,部分不安全 例如 ... -
List 接口
2019-04-29 14:14:08List接口 概述 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问...部分子集合线程安全,部分不安全 例如 ArrayL... -
java list 接口_Java 集合 List接口
2021-03-04 03:16:43[TOC]List接口概述有序的 collection(也称为...Collection将集合划分为两大类:List集合Set集合List接口的特点有序【存储有序】可重复可以存储 null值部分子集合线程安全,部分不安全 例如 ArrayList 和 Vector有... -
集合 List接口
2019-11-13 20:47:18List 概述 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,...部分子集合线程安全,部分不安全 例如 Arra... -
VLAN创建及划分、DHCP的调用
2021-03-05 19:58:54目录VLAN—虚拟局域网VLAN的作用—划分 (隔离广播域)华为交换机下接口类型(模式)Vlan技术原理DHCP—动态主机配置协议简单介绍数据包DHCP服务器ACL—访问控制列表 (...:ACL分类实验环节在交换机上创建及划分vlan... -
思科HSRP实现路由器备份
2013-04-17 09:21:15高可用性网络的路由器备份中,思科用的是HSRP(热备份路由协议),实现冗余,在该设备中...划分逻辑子接口,在两台路由器上都划分子接口,该子接口的IP为主机VLAN 10,20的网关地址,VLAN 10与VLAN 20通讯要选择哪个... -
广域网帧中继
2009-11-10 13:08:21广域网技术帧中继 ... 划分子接口、设置DLCI、启用路由 2. 准备环境 三台 2610 路由器和帧中继云,使用虚拟机完成 3. 实验拓扑 4. 实验步骤及参考 4.1. 划分子接口 R1(config)#int s0/... -
路由器+二层交换机划分vlan实现vlan互通
2016-07-27 15:46:44路由器配置VLAN,不能将物理端口划分到VLAN中,而要通过将虚拟子接口划分到VLAN中并且为其配置封装协议 dot1q。 详细解说: 路由器提供VLAN间路由只能做单臂路由,也就是设置子接口和封装协议。 第一步:... -
JVM存储区划分及是否线程隔离
2020-07-31 11:59:34java虚拟机包括一个类加载器子系统(Class Loader SubSystem)、运行时数据区(Runtime Data Area)、执行引擎和本地接口库(Native Interface Library)。本地接口库通过调用本地方法库(Native Method Library)与... -
路由与交换——单臂路由下的VLAN划分
2019-11-20 09:06:41是指在路由器的一个接口上通过配置子接口的方式,子接口不是真正物理接口,实现原来相互隔离的不同VLAN之间的互联互通 -
Java 中容器的四大接口简介
2019-06-19 13:07:031、Java容器类库的作用是“保存对象”,并将其划分为两个不同的概念 Collection:独立元素的序列 Map:一组成对的“键值对...Collection接口:包含两个子接口 public interface Set<E> extends Collectio... -
企业网全互联型架构利用OSPF协议实现分流互备
2020-07-18 16:41:041、依靠划分子接口实现办公、业务互不影响 2、通过更改开销(cost值)来实现办公、业务互相备份 一、具体配置及操作:达成分流目的 1、按照要求合理分配IP地址并进行子接口的划分及ip地址配置 R1上: R2上: ... -
java、List接口
2019-04-28 21:32:02List接口 概述 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,...部分子集合线程安全,部分不安全 例如 ... -
Cisco(GNS3) - 局域网不同VLAN间数据互访(单臂路由 + 三层交换机)
2019-09-28 22:34:55一种用于实现VLAN间通信的技术,通过划分子接口实现。但是由于其拓展性不好,取而代之的是通过三层交换机来实现。 1> 路由器R2开启子接口条件:将与交换机连接的链路设置为Trunk链路 SW1(config)# SW1...