数据库从集中式走向分布式的一个过程
当数据库并发or连接数达到极限值,如何处理
业界两种处理方式:
----->复制的方式(每台实例数据一样)
纯复制的方式可以解决并发高的问题,不能解决数据量大的问题
----->切片的方式 (每台实例数据不一样)
比较流行的方式
1.垂直拆分数据
----->按功能模块拆分数据,把不同功能模块的数据放入不同的数据源
----->从集中到分布式过程中,刚开始拆的工作大部分都是人工的。
----->优缺点
---->拆分规则比较简单,一般我们项目都是按功能去划分模块的。
---->应用程序也可以按照功能模块,整合比较容易
---->数据定位也很方便
----->问题
----->表关联无法再数据库级别完成(join无法实现跨数据源)
---->只能通过一个查询结果作为条件查另外一个性能较差
---->特殊情况可以适当冗余数据,避免join
----->拆分到一定程度就无法继续拆分了。功能模块已经非常单一,没法继续细拆了
切分达到一定程度就,扩展就会收到限制
------>事务的问题
------>以前同一个数据源的单一事务就分配到不同数据源中了
------>如果采用分布式事务,可以达到数据一致性
但是效率极差,分布式事务是无法支持每秒上百的并发的
----->在并发要求高的系统中
我们不能采用分布式事务
通过单一数据源的小事务,然后应用程序总控制,对应用程序要求高。
降低数据一致性的要求(CAP原理)
采用消息中间件(ActiveMQ)来回避事务处理
2.读写分离
----->读写分离的控制不应该有应用程序决定?
----->master/slave 数据同步会有延迟?(CAP的原理做取舍,提高数据同步的效率)
----->可能会有异构数据源之间的读写分离产生(如oracle写,mysql读)
----->异构数据源之间数据导入导出
----->异构数据源之间数据同步的问题
----->读写分开,建立了高速通道
3.水平切分(主要解决数据量大的问题,同时也解决了并发问题)
------>按记录来切分数据
---->可能只分表操作,也可能分库分表
---->保证访问的数据表的数据量都不大。
------>水平拆分一定要有标准,要有规则,规则要根据业务情况而定
----->时间性、地域性等,要保证能够快速定位到表
4.数据切分之后的整合
---->直接交给应用程序管理
根据模块配置自己需要的数据源
很麻烦,而且不可控制
----->代理层---->数据切分及整合的中间件
---->mysql官方的mysqlProxy需要配合LUA脚本
---->amoeba for mysql --->主要通过配置方式
总结:数据存储架构
----->垂直切分
----->读写分离
----->水平切分
----->数据切分及整合的中间件(代理服务器,读写分离、数据合并排序、新的数据拆分都应该有代理直接完成)
使得异构or多数据源对应用透明
相关推荐
MySQL分布式数据库MyCAT方案 MySQL分布式数据库MyCAT方案是基于 MySQL 数据库管理系统和 MyCAT 分布式数据库中间件的实践方案。该方案的主要目的是为了解决传统 MySQL 数据库的单点故障和性能瓶颈问题,提高数据库...
6. **分布式数据库**:如MySQL集群,通过主从复制、分区、分片等方式,实现数据的分散存储和读写分离,保证数据的一致性和高可用性。 7. **消息队列**:如RabbitMQ或Kafka,用于异步处理订单创建、支付通知等业务,...
【分布式事务——LCN】LCN 是一种分布式事务解决方案,其设计目的是协调多个局部事务以达到全局一致性。LCN 并不直接创建事务,而是通过协调本地事务来实现分布式的事务管理。它提供了三种模式:LCN 模式、TCC 模式...
5. **数据库自带的分布式事务支持**:许多现代数据库系统,如MySQL的InnoDB引擎,提供了分布式事务的支持,通过诸如XA协议来处理跨库事务。 6. **基于消息队列的事务处理**:例如使用RabbitMQ或Kafka,消息可以作为...
MySQL Cluster是一种高可用、高性能的分布式数据库解决方案,它在MySQL服务器的基础上增加了数据的冗余和分布处理能力。本文将深入探讨MySQL Cluster的核心概念、架构、工作原理以及如何使用。 一、MySQL Cluster...
服务器型号解释 博文链接:https://394498036.iteye.com/blog/2289844
Tair的存储引擎抽象层使得可以方便地更换底层存储引擎,如bdb、tc、redis、leveldb或MySQL。 目前Tair主要有以下三种存储引擎: - **mdb**:定位为缓存,支持k/v和prefix操作,类似于memcache。 - **rdb**:同样...
5. **数据库设计**:涉及到关系型数据库(如MySQL)和非关系型数据库(如Redis)的使用,根据数据特性和业务需求进行合理选择和设计。 6. **监控与日志**:Zabbix、ELK Stack(Elasticsearch、Logstash、Kibana)等...
[root@mysql-bk serydir]# mfsgettrashtime bind-9.4.0.tar.gz bind-9.4.0.tar.gz: 600 文件被删除10 分钟后(600 秒),才真正删除文件,回收磁盘空间。 ★ 为文件创建快照 MFS文件系统的组成 1、 元数据...
分布式架构网上商城-分布式架构网上商城系统-分布式架构网上商城系统源码-分布式架构网上商城管理系统-分布式架构网上商城管理系统java代码-分布式架构网上商城系统设计与实现-基于springboot的分布式架构网上商城...
分布式事务框架Hulk是专为解决大规模分布式系统中事务一致性问题而设计的高性能解决方案。它在复杂的微服务架构中扮演着关键角色,确保业务数据在多个服务之间的一致性。Hulk通过提供灵活的事务处理策略,使得开发者...
【分布式快递系统-客户关系工程(后台)】是一个典型的IT项目,主要针对的是物流行业的客户管理部分,适合毕业设计和课程设计使用。这个系统的核心是实现快递公司的客户关系管理,帮助提升服务质量和效率。在深入...
可能使用的技术栈包括Spring Boot、Django、Node.js等,配合数据库如MySQL、MongoDB等进行数据管理。 5. **API接口设计**:分布式系统间的通信通常依赖于RESTful API。设计良好的API接口能让各个服务之间协同工作,...
4. **数据库管理**:可能涉及到关系型数据库(如MySQL、PostgreSQL)或NoSQL数据库(如MongoDB)的设计和使用,包括数据模型设计和查询优化。 5. **API设计与集成**:可能需要与第三方快递服务提供商的API进行交互...
### MySQL分布式事务处理与XA协议详解 #### 一、引言 在当今互联网技术高度发展的背景下,分布式系统已经成为处理大规模数据的关键技术之一。而在分布式环境中,确保数据的一致性成为了非常重要的挑战。其中,...
【酒店管理系统】 酒店管理系统是一种用于帮助酒店...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
4. Mysql-MHA集群部署 5. Nacos集群 6. Kafka集群 7. RocketMQ集群 8. Zabbix部署 9. Prometheus安装 10. Nginx +Keepalived高可用 说明:全文涉及到yum安装的大部分需要联网,由于单独下载其安装包进行安装,会...