如何成长为架构师
共 10734字,需浏览 22分钟
· 2023-06-20
在内网上有太多的架构相关的文章了(比如大名鼎鼎的自顶向下),我之前也写过应用架构设计的经验。但是总有种雾里看花的感觉,好像有很多相关的知识,soa、分布式事务、DDD、复杂系统重构、领域建模、业务架构、等等等,这些复杂的名词和知识感觉学了一堆仍然不得其法。
所以我准备把我这些年在支付宝做架构,自己摸索成长的内容写下来,看能否帮助到大家。
成长,是认知的升级
为什么
是什么
从一些危害讲,业务系统处理业务请求,如果使用多线程模型并且使用了sync,非常容易导致请求hang死,并且不利于我们的并发。
从线程技术上来说,默认是unbound。这会导致很多的内存溢出,并且使用多线程,服务器重启会导致业务处于不可知的状态。
从使用原因来说:业务中使用多线程(有别于Tomcat这种容器中间件)是为了提高并发能力,或者是异步化业务能力。而这两种都有其他的方案来替代。比如高并发,我们可能会进行一些拆分操作,比如异步化,会使用消息队列等。
怎么做呢,比如异步化,我们用消息队列。如果是资源共享,那么尽量做到读,而不是写。如果是共享写,那么根据业务场景尽量拆分,然后归拢业务职责。这也是架构设计中聚合的重要性。很多框架比如netty,都有无锁设计。

怎么做
2w(分析维度):why what。回答 为什么 和 是什么这个问题。
3w(属性维度):when who where
1h :how to do 核心本质怎么做
1h :how much 核心成本,也是ROI。决策的核心维度,投入产出比。(这个非常核心,没有最好的架构,只有最合适的架构)
业务能力
业务背景
业务问题
业务发展判断(前瞻性)
横向:会有更多的平台产品,业务场景出现,但是关联关系不变。
纵向:会有更多的前后功能延伸出现,但是本质不变(比如spring做了很多的cloud)
架构能力(设计)

方法论
架构定位
交易系统:围绕一笔商品交易的单据,进行不同状态的流转和业务参与者关系的流程组装与驱动。
支付系统:基于用户有价资产偿付。
商品系统:围绕商业活动中,对于物的属性定义与管控。
业务架构
对上:提供下单,支付,确认收货,评论 等业务阶段暴露
核心:交易单据,状态流程,业务组件串联
应用架构


架构延续
通用技术方案(包含设计)
技术方案部分
tcc
jta/xa
saga
最终一致性
幂等
典型技术方案
ldc
分库分表
高并发拆分
集群
多活&热备
分布式锁
唯一性管控
设计方案部分
acl
执行模板
流程式
多策略
流程化
AOP
设计模式
