【交易架构day8】洋码头交易系统的演进之路——先生存后发展

2024-04-27 03:08

本文主要是介绍【交易架构day8】洋码头交易系统的演进之路——先生存后发展,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

按:我们谈系统演化,本质上是一个动态进化的过程,谁先做、谁后做,第一枪打在哪、这是关键。先保生存、再发展是比较好的策略。本文来自洋码头架构师张志强、涂文杰两位的分享。

 

1. 交易1.0

和许多业务优先、快速起步的创业型公司一样,洋码头的核心业务最初都在一个主站系统中。该系统很快发展成一个小型巨无霸,服务拆分势在必行。从主站系统剥离出所有订单相关功能,快速封装出一套独立部署的Restful风格的服务就形成了交易系统1.0。

图1 - 1.0架构图

在1.0版本,数据库读/写分离,订单操作服务和订单查询服务分离,买家订单查询服务和买手订单查询服务分离。

 

2. 交易2.0

随着业务发展,订单在线实时查询/聚合的场景/条件越来越复杂。为保证足够的性能,查询服务引入了越来越多,越来越复杂(譬如大量的SQL Join操作等)的查询存储过程,系统的可读性,可维护性下降;同时,为应对不断增加的查询条件及其组合,在核心的订单表上添加了越来越多的索引,严重影响了系统的下单峰值处理能力。因此,交易2.0的关键目标是:

  1. 查询服务去存储过程

  2. 订单表去索引

为此,我们将操作类数据源与查询类数据源彻底分离。操作类数据源为支持事务的SQL数据库,专注在写的高效,不提供查询服务。查询类数据源为文档型(Document)NoSQL数据库(Mongodb/ElasticSearch),专门用于各类订单查询,专注在读的高效与便捷。每完成一次订单操作场景(譬如订单支付成功),SQL数据库中被变更且需要被查询到的数据会被即时同步到Mongodb/ElasticSearch中。一个订单的所有能被查询的信息结构化在一个Document中,拿到订单ID,就能按需从Document中取数据构造查询结果,再无在1.0版本中大量多SQL表复杂JOIN操作的痛苦。同时,因为SQL数据库只负责写,各主要SQL业务表上订单ID之外的索引基本被清除,下单TPS可达原来的2~3倍。以下是版本2.0的总体架构图:

 

图2

这篇关于【交易架构day8】洋码头交易系统的演进之路——先生存后发展的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/939374

相关文章

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激