怎么提高自己的系统架构水平

本文探讨了不同类型的系统设计,重点在于领域模型的建立和高并发、高可用系统的解决方案。领域模型强调了模型定义和分层设计,包括接口层、应用层、领域层和基础设施层。高并发策略涵盖代码优化、数据库层面的选择和架构设计,如分布式系统和服务无状态化。高可用设计则关注分布式事务、服务的熔断和降级策略。文章还提及了数据一致性的事务一致性问题和柔性事务模式。
摘要由CSDN通过智能技术生成
系统设计与架构,与系统的业务类型关联还是很大的,比如传统的业务系统主
要关注的是领域建模设计,高并发、高可用、数据一致性等系统,在设计的时
候会与业务系统有较大的差别,所以这里针对不同类型的系统,来简单介绍一
下设计的时候面临的一些难点与解决方案。
背景常规业务系统设计关键——领域模型
业务系统设计的关键是在于如何定义系统的模型以及模型之间的关系,其中主
要是领域模型的定义,当我们在模型确定之后,模型之间的关系也会随之明确。
模型设计可以参考领域模型的经典书籍《Domain-Driven Design》一书,通
过这个基本可以对领域定义、防腐层、贫血模型等概念有一个较为清晰的认识
了。
单个应用内的领域模型系统也需要注意领域分层,作为开发大家是不是见过、
重 构 过 很 多 Controller-Service-DAO 样 式 的 代 码 分 层 设 计 ? 往 往 在 在 做 重
构的时候会令人吐血。
设计较好的领域设计这里给一个分层建议:
接口层 Interface 主要负责与外部系统进行交互&通信,比如一些 dubbo 服务、Restful API、
RMI 等,这一层主要包括 Facade、DTO 还有一些 Assembler。
应用层 Application
这 一 层 包 含 的 主 要 组 件 就 是 Service 服 务 , 但 是 要 特 别 注 意 , 这 一 层 的
Service 不是简单的 DAO 层的包装,在领域驱动设计的架构里面,Service 层
只是一层很“薄”的一层,它内部并不实现任何逻辑,只是负责协调和转发、
委派业务动作给更下层的领域层。
领域层 Domain
Domain 层是 领域模型 系统的 核心,负 责维护面 向对象 的领域模 型,几 乎全
部的业务逻辑都会在这一层实现。内部主要包含 Entity(实体)、ValueObject
(值 对象) 、Domain Event(领 域事件 )和 Repository(仓 储)等 多种重
要的领域组件。
基础设施层 Infrastructure
它主要为 Interfaces、Application 和 Domain 三层提供支撑。所有与具体
平 台 、 框 架 相 关 的 实 现 会 在 Infrastructure 中 提 供 , 避 免 三 层 特 别 是 Domain 层掺杂 进这些实现 ,从而“污染 ”领域模 型。Infrastructure 中最
常见的一类设施是对象持久化的具体实现。
高并发系统设计
在面试中是不是经常被问到一个问题:如果你系统的流量增加 N 倍你要怎么
重新设计你的系统?这个高并发的问题可以从各个层面去解,比如
代码层面
锁优化(采用无锁数据结构),主要是 concurrent 包下面的关于 AQS
锁的一些内容
数据库缓存设计(降低数据库并发争抢压力),这里又会有缓存、DB 数
据不一致的问题,在实际使用中,高并发系统和数据一致性系统采用的策
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值