pb数据窗口怎么调用视图_整天跟系统打交道,你知道怎么做好系统的设计吗?...

042c8e319a610b4bfc64c3c7dd9f8601.png

一、善用UML工具

用例图

用于需求分析阶段,从用户角度描述系统功能。

e70a8882f15723f08a7df215d11d0e08.png

静态图:类图、对象图、包图

793e318c59c7864ca2be9fc96a33dc9d.png

交互图-时序图(注重时间)

常用组合片段:选项(Opt)、循环(Loop)、并行(Par)、抉择(Alt)、中断(Break)

4a7c83d721ded4c421fc1be89d98aaac.png

交互图-协作图(注重对象)

cdc2b63b1aa8deaf911f58b3137e8b3c.png

行为图-状态图(注重状态)

fc81cb5f95d28799ded1fab7d41a9806.png

行为图-活动图(注重活动)

dcc20ee7b4b135e6ecb1d8c530b92853.png

实现图-组件图

d5a464d19041dfc7a7356c23ec8a0e91.png

实现图-部署图

26c2c177e78363e8b72948fc491ee8d6.png

二、遵从设计原则

设计模式基础

  • 单一职责:一个类只负责一个职能;
  • 里氏转换:在子类中不应重写、重载父类的方法,子类要能替代父类;
  • 接口隔离:不依赖不需要的接口,拆分大接口;
  • 迪米特法则:一个对象应该对其他对象保持最少的了解(低耦合);
  • 开放封闭:对扩展开放,对修改关闭;
  • 依赖倒置:抽象不应该依赖细节,细节应该依赖抽象,即针对接口编程,所有依赖关系都终止于抽象类或接口,不要对实现编程。

设计模式

创建型

工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)、单例(Singleton)、原型(Prototype)。

结构型

组合(Composite)、代理(Proxy)、外观(Facade)、适配器(Adapter)、装饰(Decorator)、桥接(Bridge)、享元(Flyweight)。

行为型

策略(Strategy)、模板方法(Temple Method)、观察者(Observer)、状态(State)、备忘录(Memento)、迭代器(Iterator)、命令(Command)、责任链(Chain Of Responsibility)、中介者(Mediator)、访问者(Visitor)、解释器(Interpreter)。

分布式设计原则

高可用

降级、限流(漏桶-平滑、令牌桶-可突发、环形队列+滑动窗口)、切流、熔断、回流、可回流、超时、隔离(线程、读写、资源、热点、爬虫)、负载均衡。

高并发

无状态、拆分、服务化、队列、数据异构(异构->原子化->聚合->缓存)、缓存、并发化(Future、Callback、Completable Future)、池化。

业务设计

防重、幂等、规则引擎、状态机、审计、审批。

分布式理论

CAP:一致性、可用性、分区容错性(三选二);

BASE:基本可用、软状态、最终一致性;

ACID:原子性、一致性、隔离性、持久性。

一致性原则

XA协议:准备 -> 提交(具有阻塞、协调者单点、脑裂等缺点);

XA三段协议:询问 -> 准备 -> 提交;

TCC:try -> confirm / try -> cancel 锁定 -> 确认/释放;

最终一致性:查询、补偿、定期校对、可靠消息、缓存一致性。

超时处理

原则:谁超时谁处理,即接口调用超时,查询+补偿;接口调用成功后,接口内部服务超时须自己补偿。

  • 两状态同步接口(OK/ERR):接口调用超时,调用方查询+补偿;接口内部服务超时,内部快速失败+冲正;
  • 三状态同步接口(OK/ING/ERR):接口调用超时,调用方查询+补偿;接口内部服务超时,返回处理中,内部查询+补偿到成功,调用方轮询;
  • 异步接口:接口调用超时,调用方查询+补偿;接口内部服务超时,内部查询+补偿到成功,回调通知;接口回调通知超时,指数补偿回调;
  • 消息队列:生产者发送超时,持久化可靠发送+幂等消费;消费者消费超时,消息处理完偏移量增加。

缓存

缓存分片:客户端分片(redic)、代理分片、集群分片(一致性Hash);

缓存穿透:缓存空值、有效Key判断;

缓存并发:分布式锁、本地锁、软过期(业务过期);

缓存雪崩:错峰失效。

三、画好架构图

4+1视图

场景视图:参与者与功能用例关系,用例图表示;

逻辑视图:功能拆解后的组件边界及关系,组件图和类图表示;

物理视图:软件与硬件映射关系,部署图表示;

处理流程图:各组件流程与数据交互,时序图和流程图表示;

开发视图:模块划分及包组成,包图表示。

C4视图

语境图:梳理待建设系统用户和高层次依赖,在中间画出自己的系统,周围是用户与其它交互系统。

df8b712e39a7e36d129788505d10b96d.png

容器图:展开语境图待建设系统,用框图表示,可包含名称、技术选择、职责、框图间交互,明确外部系统边界。

36961112d619027a8947516463386be2.png

组件图:展开某个容器,描述其内部模块组件组成、关系。

268a0e8492c4ec340d2aa901cb64abd8.png

类图:同UML静态图,此处不再展开。

结束语

技术服务业务,如何在技术选型与实现上结合实际情况做最优的取舍,才是每位工程师的价值所在。

9213973af04da1c56317a3f203207592.png
56d937b23a09c92d9b581044b46426ea.png
a58905bf0ae254b6a0e261b1c920a268.png
小编在学习过程中还整理了一些学习资料,可以分享给做java的工程师朋友们,大家一起相互学习,需要的可以私信(资料)即可免费获取Java架构学习资料以及一些面试方面的专题和答案
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值