数字货币交易系统架构 Python实现 黄毅
交易系统功能介绍 交易系统功能-基本概念 class Side(Enum): ‘下单方向’ BUY = 0 SELL = 1 class Order(NamedTuple): ‘订单’ id: int side: Side amount: Decimal price: Decimal user: int class Trade(NamedTuple): trades = book.match(order) # 更新资金余额 update_user_fund(trades) # 记录成交历史 save_trade(trades) # 更新订单状态 save_order(order, trades) # 更新K线 update_kline(trades) # 推送用户信息变更 -= amount maker.amount -= amount if maker.amount == 0: # maker完全成交,移除maker订单 if taker.amount == 0: # taker完全成交, 结束 交易系统功能-K线 select time_bucket(time, ‘1 minute’)0 码力 | 24 页 | 799.65 KB | 1 年前3美团点评旅游推荐系统的演进
旅游场景下用户兴趣点不明 确,频道内超过50%订单来 自推荐 需求个性化 推荐形式多样 本异地差异大 季节性明显 旅游推荐面临的问题 本异地差异大 超过30%订单来自异地请求 常驻城市!=浏览城市 推荐形式多样 景点下有大量相似门票,不适合 按Deal样式展现 跟团游、景酒套餐关联多个景点 ,不适合按POI样式展现 季节性明显 冬季温泉订单占比超过20%, 而夏季不到7% 需求个性化 •LR:预测常驻城市与某维度城市相等的概率 •样本 •调查问卷 •特征 •注册城市 •注册手机号 •手机定位城市 •浏览城市 •消费城市:团购、电影、外卖 •接受短信手机号 用户历史行为强相关策略 •热销策略能区分本异地用户差异 •不能对具体用户个性化推荐 •用户一个月内浏览、收藏的 POI/Deal •越实时权重越高 POI/Deal View POI/Deal Collect0 码力 | 49 页 | 5.97 MB | 1 年前3领域驱动设计&中台/如何让DDD落地
技术组长 架构师 系统分析师 如何从需求到DDD? 我想要⼀一个电商 平台,我可以在 上⾯面卖东⻄西 ? Event Storming⾥里里缺少了了什什么信息 提交订单的时候 要做什什么检查? 如何添加商品? ⽀支付订单的时候和 ⽀支付宝对接的逻辑 是什什么样的? 魔⻤鬼隐藏在细节之中 今天既然是讲落地,那么就从⼀一个实际需求出发,我们看看 如何把需求拆解成⽤用户故事,然后如何把⽤用户故事转变成领 京⻄西商城的买家可以查看产品可购买的库存数量量,并⽣生成购买订单,买家可 以撤单,查看订单的状态,对订单进⾏行行⽀支付(⽀支付宝)。⽀支付成功后,仓储 管理理员会收到出库请求,进⾏行行配货并发货。同时,买家可以查看物流状态以 及确认收货。 事件⻛风暴暴的结果 事件⻛风暴暴得到的命令和事件就没⽤用了了吗? 订单 已创建 库存 已锁定 提交 订单 ⽤用户 SubmitOrderCommand StockLocked 订单聚合创建订单服务 接收 仓库聚合的事件订阅者 仓库聚合锁定库存服务 发送 LockStockCommand ⽣生成 ⽣生成 接收 ⽣生成 QueryOrderCommand 订单域查询服务 接收 OrderList ⽣生成 需求分析到⽤用户故事 Story6 创建订单 作为⼀一个商城顾客 我可以确定购物⻋车中的商品和数量量,然后提交商品订单 为了了在商城上购买商品0 码力 | 32 页 | 3.25 MB | 1 年前3领域驱动设计&中台/可视化的遗留系统微服务改造
寻找领域事件 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 划分限界上下⽂文 什什么是事件? 为什什么⽤用事件? 如何进⾏行行事件⻛风暴暴? 事件:领域专家关⼼心的,在业务上真实 发⽣生的事 例例1: 客户订单已提交 例例2: 对账已完成,每⽉月末夜间触发 1. 确定要进⾏行行事件⻛风暴暴的业务场景,场景需要单 ⼀一⽽而且清晰; 2. ⽤用“XXX已XXX”的格式在橙⾊色便便利利贴上写下事 件,⼯工作坊参与者需要对事件定义达成⼀一致; 软件系统需要关注业务过程中发⽣生的业务数 据的变化。 事件⻛风暴暴示例例 订单 已创建 订单 已⽀支付 商城库存 已扣减 仓库库存 已占⽤用 商品 已创建 订单 已撤销 商城库存 已增加 出库单已 ⽣生成 出库单已 发货 投诉单 已创建 投诉单已 处理理 商城库存 已编辑 商品 已发布 商品销售 价格已编辑 订单 已发货 补货申请 单已创建 补货申请 单已审批 单已审批 ⼊入库单 已创建 ⼊入库单 已⼊入库 订单 已签收 订单已 确认收货 仓库库存 已扣减 仓库库存 已增加 商品已 编辑 退货单已 创建 退货单已 审核 订单已 退货 ⼊入库单 已创建 ⼊入库单 已⼊入库 仓库库存 已增加 寻找命令 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 什什么是命令? 为什什么⽤用命令? 如何进⾏行行命令⻛风暴暴?0 码力 | 54 页 | 3.85 MB | 1 年前3QCon北京2018-《美团配送系统架构演进实践》-阴永俊
SLA更高 业务复杂性高 • 用户:花了钱却饿着肚子 • 商家:出了餐却无人配送 • 骑手:投入的时间、劳动却少赚了钱 • 多业务线的共性与差异:专送、代理、众包⋯ • 运营复杂度高:定义科学的订单供给与运力结构,并精准调控 • 安全管理:用户安全、商家安全、骑手安全 履约SLA要求高,重线下业务运营 配送系统的技术定位与思路 初期造工具,解决能不能 长期造壁垒,实现降维打击能力 从支撑业务到驱动业务 如何提升计算能力 • 运营系统面临的问题 • 提升运营系统迭代效率 骑手网关 规模化阶段:核心领域细分 主数据平台 (核心模型) 账号权限 组织架构 核心数据模型 配送服务 配送运力 ⋯ 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 计算平台 策略平台 (算法策略) 算法框架 分析平台 薪资 培训 成长 快速起量,系统质量、研发效率问题凸显 合同 骑手网关 规模化阶段:核心领域细分 主数据平台 (核心模型) 账号权限 组织架构 核心数据模型 配送服务 配送运力 ⋯ 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 并行计算 策略平台 (算法策略) 算法框架 分析平台0 码力 | 31 页 | 15.26 MB | 1 年前3降级预案在同程艺龙的工程实践-王俊翔
⼤大量量请求超时 缺乏熔断设计 交易易故障 第三⽅方⽀支付 ⽀支付中⼼心 ⽀支付回写 消息队列列 ⽀支付通知 交易易中台 ⽀支付时限任务 出票处理理 队列列故障 已⽀支付订单被取消 ⽀支付超时 订单取消 缺乏降级设计 稳定性之路路到底有多远 如何设计⾯面向容错的系统,如何提升系统的可⽤用性 强弱依赖 • 弱依赖 - 熔断限流,有损服务 • 强依赖 - 备选服务,降级实现0 码力 | 26 页 | 18.67 MB | 1 年前3付钱拉金融云系统架构演进和最佳实践
03 06 34 初始 交易检查失败 路由失败 路由成功 已撤销 定时器触发批扣打包 UI触发批扣打包 正在发送 第三方 失败 成功 三方已受理 部分成功 (批量交易) 订单失败 (网关交易) 接入网关 交易检查 服务路由 批量任务 通道适配 响应处理 交易检查成功 定时器触发批付打包 UI触发批付打包 有限状态机 FINITE STATE MACHINE 可视化运营 网络监控 主机监控 服务监控 业务监控 中间件、接口探测、日志抓取 状态类(响应码、交易状态、退款状态、商户状态) 耗时类(交易总时长、分段时长、SQL耗时、代码耗时) 统计类(订单量异常预警、非法IP预警、交易额过大) 网络异常(单通道和多通道、不同的分布场景) 撒网与实时监控 REAL-TIME MONITORING 可视化运营 VISUAL OPERATION0 码力 | 35 页 | 6.05 MB | 1 年前3苏宁易购小程序架构实践 苏宁 禹立彬
主购物流程由于登录,支付,TAB原因,无法插件化 • 微信小程序间跳转策略的变化,使得无法集中在一个小程序上实现购 物流程,只能每个小程序都具备。 • 同步器中包含了最新的购物流程文件包——订单,购物车,商品详情 ,个人中心等 • 同步器同步代码,启动新小程序时,在购物主流程上的情况下,同步 生成标准项目。 代码同步器 新的垂直的小程序,使用同步器生成项 目脚手架。 微信小程序插件0 码力 | 36 页 | 833.39 KB | 1 年前3QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+
成长,移动后台旁路追赶 DB主 Server PC WEB AND/IOS/H5/Open 静态站 网贷服务 借款流程 Cache集群 安全加密 网贷服务 CDN 支付结算 订单 DB从 批 处 理 系 统 活动 DB主 DB从 版本管理 产品 ... 同步 …... 网站、基础服务 移动后台 业务和团队规模迅速扩张 粗粒度服务化,基础设施完善0 码力 | 42 页 | 19.96 MB | 1 年前3领域驱动设计&中台/演进式架构的平台化落地
可视化设计 服务地图 关联变更更到需求 设计API 导swagger ⽂文件 API清单 设计变更更与 需求关联 服务地图变 更更历史 ⽣生产环境 部署架构设计 测试环境 部署架构设计 绘制部署架构,组合服务和 部署元素 部署架构变更更历史 推荐部署架构(远期规划) 微服务开发框架定制 代码架构⻛风格选择 资源配置 数据库版本管理理 是否⾃自动⽣生成API/ Dockerfile/流⽔水线 案 对接资源室 获得组织结 构 对接175产品 定义管理理 Fitness Function执 ⾏行行引擎 集成Sonar Server 对接容器云 PaaS API变更更历史 部署架构变更更评审 定义 契约 契约变 更更评审 未评审 契约 提⽰示 已申请资源 登记 服务部署 脚本⽣生成 部署架构 推到⽬目标 运⾏行行(测 试、⽣生产) 单服务 更更新 数据库演进 与版本化管理理 •数据库引⼊入Flyway等 •⾃自动⽣生成初始脚本库 •⾃自动化变更更DB 35 契约 • 契约定义(依赖、集成关系) • 契约变更更评审 • 契约变更更历史记录 • ⽀支持契约测试 架构演进守护 架构演进守护- 从契约反向识别实现与模型差异 领域演进守护- DDD领域模型的反向可视化 服务地图 API管理理 契约定义 架构演进守护-0 码力 | 42 页 | 2.95 MB | 1 年前3
共 15 条
- 1
- 2