财务平台sharding-jdbc集成
Posted 源码架构圈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了财务平台sharding-jdbc集成相关的知识,希望对你有一定的参考价值。
财务平台业务背景介绍
财务平台承担着对公司业务线、产品线应收应付相关数据的财务核算的责任,目前新核心、融资负债、结算支付业务系统已经对接了财务平台。财务平台数据量很大,为了提高对数据处理的性能采用了应用层层分库分表这种方案来满足业务场景。
财务平台处理的流程是大数据平台把对接财务平台的业务系统源数据进行抽取、清洗、转换成财务口径的业务数据推送到财务平台,财务平台进行进一步处理转换成财务核算口径的账务数据,包括台账、明细账、凭证数据,最后把凭证数据推送到用友NC系统,财务总账、余额管理等操作是借助于用友NC系统来处理,财务人员依赖财务系统、用友NC系统来完成财务的阶段性结账操作。
分库分表技术方案介绍
现在业界分库分表的方案有很多,如阿里的暂未开源的TDDL,动态数据源功能开源了,美团暂未开源的MTDDL。
点评内部开源的zebra,是基于mybatis实现了进一步的扩展,蘑菇街内部开源的tsharding,比较轻量级、但是分片规则是定制化的,京东开源的sharding-jdbc,财务平台使用版本是1.5,是一个轻量级的client端、动态分片、读写分离、基于TCC补偿机制实现的柔性事务的中间件,新版本规划定位也是server端。
基于server端的有mycat。
还有分布式newsql数据如TiDB等等。
sharding-jdbc实现原理
sharding-jdbc定位为轻量级java框架,使用客户端直连数据库,以jar包的形式提供服务,无需额外部署,对JDBC的DataSource、Connection、Statement、PrepareStatement、ResultSet五个核心接口进一步封装,ShardingConnection,ShardingDataSource,ShardingResultSet,ShardingPreparedStatement,ShardingStatement,可理解为增强版的JDBC驱动。
支持一个、多个字段进行分片,支持in、betwwen、in三种运算符分片,提供了Inline表达式编写分篇的方式,也可以扩展提供的分片接口实现自定义分片规则
sharding-jdbc工作流程
sharding-jdbc柔性事务介绍
sql语法解析流程
sql路由流程
sql执行流程
结果集归并流程
分库分表规则配置
beans-datasource.xml
spring集成sharding-jdbc的配置文件
这里分表策略是按月份分表,采用的是inline表达式,分库策略是扩展了一个实现类
分库策略实现类
spring的配置文件
这里要替换成sharding-jdbc的datasource
数据库脚本
mm库
test库
yy库
单元测试类
spring集成sharding-jdbc方案就是这样,上面的分片策略是按照财务平台的分片策略编写的demo,仅供参考,可以根据自己的项目背景灵活实现分片策略。
以上是关于财务平台sharding-jdbc集成的主要内容,如果未能解决你的问题,请参考以下文章
【sharding-jdbc】spring boot 集成sharding-jdbc 完成一主多从读写分离
SpringBoot集成Sharding-jdbc 提示:ClassNotFoundException: yaml.config.sharding.YamlShardingRuleConfigurat