财务平台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柔性事务介绍


财务平台sharding-jdbc集成


sql语法解析流程


财务平台sharding-jdbc集成


sql路由流程


财务平台sharding-jdbc集成

sql执行流程


财务平台sharding-jdbc集成

结果集归并流程


财务平台sharding-jdbc集成


分库分表规则配置


beans-datasource.xml

财务平台sharding-jdbc集成

财务平台sharding-jdbc集成

财务平台sharding-jdbc集成


spring集成sharding-jdbc的配置文件

这里分表策略是按月份分表,采用的是inline表达式,分库策略是扩展了一个实现类

财务平台sharding-jdbc集成


分库策略实现类

财务平台sharding-jdbc集成


spring的配置文件

这里要替换成sharding-jdbc的datasource

财务平台sharding-jdbc集成


数据库脚本

mm库

财务平台sharding-jdbc集成


test库

财务平台sharding-jdbc集成


yy库

财务平台sharding-jdbc集成


单元测试类


spring集成sharding-jdbc方案就是这样,上面的分片策略是按照财务平台的分片策略编写的demo,仅供参考,可以根据自己的项目背景灵活实现分片策略。

以上是关于财务平台sharding-jdbc集成的主要内容,如果未能解决你的问题,请参考以下文章

MySQL多数据源笔记5-ShardingJDBC实战

【sharding-jdbc】spring boot 集成sharding-jdbc 完成一主多从读写分离

JeecgBoot集成Sharding-JDBC

JeecgBoot集成Sharding-JDBC

SpringBoot集成Sharding-jdbc 提示:ClassNotFoundException: yaml.config.sharding.YamlShardingRuleConfigurat

sharding-jdbc集成spring+mybatis分表分库