分布式系统架构设计之数据访问

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/44216855

数据访问层是一个链式的处理过程,并且多数组件都是提供对外提供JDBC的实现,提供服务的方式有三:

1)  提供专有API,通用性差

2)  通用性强的方式,如JDBC

3)  基于ORM的方式,可以在ORM框架上再包一层,对外暴露的还是原有框架的接口。

在合并查询时,JDBC优势明显。


数据访问层设计的基本步骤:SQL解析,规则处理,SQL改写,数据源选择,SQL执行和结果集返回合并处理。

1)在进行SQL解析时,解析的缓存可以提升解析速度。一个重要的事情是根据执行的SQL得到被操作的表,根据参数及规则来确定目标数据源的连接数。

2)规则处理时,可以采用固定hash,根据某个字段取模,然后分散到不同的库和表中,通常将周期性数据放在一起;也可以采用一致性hash,把节点对应的hash值变为了一个范围,不再是离散的;还可以通过在一个物理节点上对应多个虚拟节点且虚拟节点均匀分布的方式来解决增加或减少节点时负载不均衡的问题。映射表是根据分库分表字段的值的查表法来确定数据源的方法,一般用于热点数据的特殊处理,或者对不完全符合规律的的规则进行补充。

3)SQL修改一般用于表名,索引,以及跨库计算。

4)规则处理是确定一组数据源,数据源选择是确定具体某个数据源。

5)SQL执行和结果处理部分需要注意异常的判断和处理。

 

从工程上看,可以把spring中的driverClassName,username和password抽取出来做成一个公共配置,但最好在配置管理中心中进行。GroupDataSource解决了具体访问数据库的选择问题,具体选择策略是groupDataSource完成的重点包括根据事务,读写等特性选择主备,不同库间的选择等。GroupDataSource意味着分组数量的绑定,虽然不能整体缩放,但可以进行组内缩放、主备切换等。数据源分组后,通过对数据源进行功能切分,可以构建原子数据源,原子数据源仅管理一个具体的数据库。

 

数据访问层的部署也可以分为jar包和Proxy两种方式,与服务框架类似,使用Proxy时,协议同样可以使用数据库协议和私有协议,最好直接使用数据库协议。

 

数据库读写分离最好基于数据库的日志来进行数据的复制。数据变更场景包括:复制数据库,索引构建,缓存失效等,一般引入数据抽取器把数据源变更的信息加入到数据分发平台,数据采用器把这些变更应用到相应的目标上,数据分发平台是由多个管道组成的。不同的数据变更来源需要不同的抽取器来进行解析和变更进入分发平台的工作。在进行数据迁移时,记录增量的日志,迁移后,再对增量的变化处理。

目录
相关文章
|
26天前
|
设计模式 架构师 前端开发
JavaEE企业级分布式高级架构师课程
本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发/分布式架构设计等主流核心技术。
22 1
JavaEE企业级分布式高级架构师课程
|
29天前
|
存储 SQL 关系型数据库
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
ClickHouse的核心架构包括执行过程和数据存储两部分。执行过程涉及Parser与Interpreter解析SQL,通过Column、DataType、Block、Functions和Storage模块处理数据。Column是内存中列的表示,Field处理单个值,DataType负责序列化和反序列化,Block是内存中表的子集,Block Streams处理数据流。Storage代表表,使用不同的引擎如StorageMergeTree。数据存储基于分片和副本,1个分片由多个副本组成,每个节点只能拥有1个分片。
70 0
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
|
21天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
23 0
|
2月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
55 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
21天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
14 0
|
21天前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
20 0
|
21天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
43 0
|
21天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
66 0
|
23天前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
55 0
|
1月前
|
存储 监控 容灾
TiDB存储层深入:分布式存储架构与数据一致性保障
【2月更文挑战第26天】本文将深入探讨TiDB的存储层,详细解析其分布式存储架构、数据复制机制以及数据一致性保障措施。通过了解存储层的核心组件和工作原理,我们可以更好地理解TiDB如何确保数据的可靠性、高可用性和可扩展性。本文将从存储层的架构、数据分布、容错机制等方面展开介绍,帮助读者全面掌握TiDB存储层的关键技术和优势。