背景介绍
本篇是北京云栖大会Tech Insight Workshop金融云主体《使用SOFA来快速构建金融级分布式交易系统》中的一个组成部分。
通过前面的『使用微服务框架快速构建一个分布式交易系统』为您快速搭建了基于微服务的支付系统,但是随着业务量的不断上涨,单库单表的数据库设计已经不能够满足业务的要求,这时可以通过数据访问代理为交易系统的核心订单库增加水平扩展能力。
DEMO整体架构与说明
在本篇中,会逐步引导学员通过蚂蚁中间件的数据访问代理控制台来使用数据访问代理来操作支付服务后端的多个数据节点,并通过数据访问代理进行分库分表操作,以及最终实现透明访问。
注意:下列的DEMO详细教程需要用到DEMO代码工程的支付服务的源代码,该部分代码会在近期对外进行开放
实验涉及SOFA产品
详细教程
- 进入数据访问代理控制台:金融云-【产品与服务】- 【中间件】-【数据访问代理】
- 控制台-数据访问代理实例管理,这里可以创建一个新的实例或使用已有的数据访问代理实例
- 当创建完成数据访问代理实例后,需要添加已存在的物理数据节点。点击查看物理数据节点页面,可以添加数据库节点或者查看当前已有的数据库节点
- 添加一个新的物理数据节,可以是金融云RDS实例,也可以是OceanBase实例,具体详情请参照产品帮助文档。注意这里的物理数据节点需要用户提前采购生成,并获取所需的节点信息,如节点ID,链接地址等。
- 当数据节点导入成功后,即可进行数据库(即逻辑数据库)的创建,具体过程参加帮助文档,创建名为payment的数据库,成功后可以在当前数据访问代理实例的详细信息中查看:
- 查看数据库payment的详情信息
- 新增sequence单表
- 新增添加拆分表,并录入拆分规则,如下图所示,表示数据表(逻辑数据表)pay_order将被进行规则拆分,后端会对应10张物理数据表,拆分规则是字段“order_no”的第15位。
- 数据表设置完毕后,可以选择开始执行表 DDL
- 最终这些操作需要在点击数据表信息详情页面中的【生效】按钮方可生效
- 查看代码(参照支付系统的DEMO 代码示例)并做相应的改造,调整序列的生成代码
- 新增分布式序列的查询语句
- 新增全表扫描 Hint
- 调整 application.properties 中的数据库链接地址和密码