交易系统模型设计
Created|Updated
|Word Count:5|Reading Time:1mins|Post Views:
Author: magicliang
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2022-03-18
如何写业务代码
业务研发面对的问题 稳定的业务模式 不稳定的需求 业务对交付的渴望 假设 命名规范(《clean code》) 面向对象设计(SOLID原则、贫血/充血模型、设计模式) 系统要拆分 流程控制系统与领域系统.drawio 每一个用例(解决的一个问题)都由访问逻辑和执行逻辑组成。访问逻辑负责用例执行的顺序与分支,并调用执行逻辑完成完整业务逻辑。 访问逻辑由单独的交易系统负责。执行逻辑由个子系统负责。 工程要拆分 三层架构 + 洋葱架构 代码要拆分 业务代码:描述核心业务逻辑的代码,核心是保持业务的流程及业务状态的一致性 领域对象与领域服务,不得对外部有任何依赖(工具类除外) 最核心的几个抽象: 校验:参数有效性校验、参数的业务属性校验。在进入正常业务逻辑代码前,完成所有的校验工作。 异常:业务异常:所有不符合业务逻辑而产生的异常。 系统异常:因为程序本身or依赖产生的异常。 所有的异常第一位runningtime异常。 数据: 业务数据:保存领域对象状态的数据。 非业务数据:过程数据。业务的核心流程中,只对业务数据的持久化负责。 参数:任何时候,任何方法的参数都需要...

2022-01-19
演进式架构
如果读一本书,没有附带正确的复盘(提出反馈并总结反馈),则浪费了这次读书的完整机会。 复盘需要经过痛苦的思索,把一些之前自己没有办法充分接受的观点,充分接受。 本书是一本讲战略的书。 这本书告诉我们很多概念,一旦加上“架构”前缀,突然就有了特殊的含义:架构特征(architectural feature)、架构量子(architectural quantum)、架构维度(architectural dimension)、架构模式(architectural pattern)。 新时代的架构愿景-怎样用敏捷的方式来拥抱变化? 架构难以被修改是由架构本身的不变性决定的,架构天然就是难以修改的。 有些人可能认为,就好像建筑业的实践那样,应该先完成这类架构设计,再开始开发。但需求是快速变动的这一事实告诉我们,我们可能要经常修改我们架构,以拥抱需求变化。 “需求总是在动态变化的”,比“架构应该是被预先确定”,更加像是一个事实(后者更加像是一个观点)。 当代的架构是: 不断努力的结果 【能够响应不断变化的需求和外部人员的反馈】 实施这种架构以替代传统架构,是需要决策者(技术领导者或者架构...

2020-03-23
缓存的套路
缓存的套路 本文探讨缓存设计的通用模式,涵盖从选型决策、更新策略到故障防护的完整体系。 mindmap root((缓存架构)) 何时使用 读多写少 热点集中 可容忍最终一致性 缓存层次 近端缓存 Guava Caffeine EhCache 远端缓存 Redis Memcached 核心挑战 更新策略 Cache Aside Read Through Write Through Write Behind 一致性保障 故障防护 击穿防护 雪崩防护 穿透防护 模式总览 # 模式名称 一句话口诀 适用场景 1 分层降级 本地兜底,远程扩展 多级缓存架构 2 惰性填充 触发加载,按需扩容 冷启动与预热 3 旁路同步 先库后删,读写互斥 Cache Asi...

2025-09-13
分布式事务
问题定义 对经典的电商场景而言:下单是个插入操作,扣减金额和库存是个更新操作,操作的模型不同,如果进行分布式的服务拆分,则可能无法在一个本地事务里操作几个模型,涉及跨库事务。 CAP 定义 根据 Eric Brewer 提出的 CAP 理论: Consistency:All Nodes see the same data at the same time。所有节点看到同一份最新数据(线性一致性)。 Availability:Reads and writes always succeed。非故障节点必须在合理时间内响应。 Partition tolerance:System continues to operate despite arbitrary message loss or failure of part of the system。网络分区时系统继续运行。 由此诞生三种设计约束和取舍方向: CA:放弃P,仅适用于单点系统,非分布式,如 MySQL主从同步。 AP:放弃强一致性,保证高可用。Cassandra,DynamoDB。Gossip协议可实现最终一致性。 CP...

2021-02-10
《恰如其分的软件架构》
前言 这两周集中时间间歇性读完了《恰如其分的软件架构》这本书。这本书讲的是架构方法,架构方法是一种思维模型(mind set),这种思维模型叫作“风险驱动模型”。 这本书经我们团队的架构师推荐,列在我们团队的集体书目里很久了。但真正去读它、读完它的人又很少。究其原因,还是这本书的内容以谈概念为主,虽然书中举的例子非常生动,仍然始终无法摆脱“为了谈概念而举玩具例子”的问题-这几乎是所有架构书的通病。似乎正统的架构书籍都不可避免地举一些传统行业或者经典软件(比如很多书籍都会反复出现在“xxx 播放器”)的例子。这些软件架构非常经典,可以只用一些小的组件、场景,就讲清楚典型的组件、模式和架构风格的用处。但没有很深的工程/架构经验的读者读这些书的时候,仿佛重新回到了抄书和念书的大学课堂,对于脱离现实的例子只会产生“左耳进右耳出”的感觉。能够温故而知新,是一本书经典化的特征。而能够阅读非入门级的纯理论书籍,则是一个程序员的认知能力和经验达到了一定程度的特征。我读这本书里很多细节还是很痛苦,证明我还是对于形式化的符号(symbol)、记法(notion)还不是很熟悉,而且对于书中运用的问题解...

2020-12-02
服务治理组件笔记
背景 service-centric architecture 以服务为中心的架构,和 SOA 的区别是? 服务治理的模式 server-side pattern:容易集中管控,易单点失败。 client-side pattern:不容易集中管控,不易单点失败。 演化流程 基础治理能力:通信协议统一、命名服务的统一、监控预警、运营平台 高性能/易用性:通信框架高性能/通信框架轻量化/分布式链路追踪/测试工具可视化 全方位的治理能力:全链路压测平台/深度服务化 SOA/链路级流量治理/易用化平台构建 业界前言探索:SET 化高扩展架构/云原生架构治理 治理体系 该有的治理能力都要有。 注册中心 服务注册 服务概要 提供者 消费者 监控报警 节点监控 性能监控 业务监控 异常监控 服务运营 配置管理 服务分组 节点管理 服务鉴权 数据分析 性能指标 来源去向 主机分析 数据报表 调用链路 关键组件-本地代理 比如 LocalAgent,能够做到:策略下沉,解耦功能,对业务服务侵入性低。 但 Provider/Consumer 还需要使用自己的 sdk,它和远端的 ...
Announcement
人生只是,守株待兔






