首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

redis分布式和mysql分布式/集群

2023-11-13 来源:花图问答

    分布式数据库的主要特点如下:

  1. 透明性:用户不必关心数据的逻辑分区和物理位置的分布细节,也不必关心重复副本(冗余数据)的一致性问题,同时不必关心在局部场地上数据库支持哪种数据模型。对于系统开发工程师而言,当数据从一个场地移到另一个场地时不必改写应用程序,使用起来如同一个集中式数据库。
  2. 数据冗余性:分布式数据库通过冗余实现系统的可靠性、可用性,并改善其性能。多个节点存储数据副本,当某一节点的数据遭到破坏时,冗余的副本可保证数据的完整性;当工作的节点受损害时,可通过心跳等机制进行切换,系统整体不被破坏。还可以通过热点数据的就近分析原则减少网络通信的消耗,加快访问速度,改善性能。
  3. 易于扩展性:在分布式数据库中能够方便地通过水平扩展提高系统的整体性能,也能通过垂直扩展来提供性能,扩展并不需要修改系统程序。
  4. 自治性:各节点上的数据由本地的DBMS管理,具有自动处理能力,完成本场地的应用或局部应用。
2. MySQL Cluster原理

    MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器。在 MySQL 5.0 及以上的二进制版本中,以及与最新的 Linux 版本兼容的 RPM 包中提供了该存储引擎。

    MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序。

管理服务器(MGM节点)负责管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每个节点从管理服务器检索配置数据。

当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster 日志。

目前能够运行 MySQL Cluster 的操作系统有 Linux、Mac OS X 和 Solaris,最新的版本已经支持 Windows 操作系统。

MySQL 群集的数据节点之间的通信是不加密的,并且需要高速的带宽,所以建议把群集建立在一个高速局域网内,不建议跨网段、跨公网的部署这种系统体系。

技术图片

 

MySQL 群集分为三种节点:管理节点,数据节点和SQL节点。

管理节点:主要用于管理各个节点,能够通过命令对某个节点进行重启、关闭、启动等操作。也能够监视全部节点的工作状态。

数据节点:主要是对数据的存储,不提供其他的服务。

SQL节点:主要是对外提供SQL功能,类似一台普通的 MySQL Server。

而SQL节点和数据节点可以是同一台机器,也就是说这台机器即是SQL节点也是数据节点。它们只是逻辑关系上的划分,实际部署时,甚至所有的阶段都可以位于同一台物理机器上,只是配置较复杂些。

 

3. MySQL Cluster的优缺点

优点:

  1. 99.999 %的高可用性
  2. 快速的自动失效切换
  3. 灵活的分布式体系结构,没有单点故障
  4. 高吞吐量和低延迟
  5. 可扩展性强,支持在线扩容

缺点:

  1. 存在很多限制,比如:不支持外键,数据行不能超过8K(不包括BLOB和text中的数据)
  2. 部署、管理、配置很复杂
  3. 占用磁盘空间大,内存大
  4. 备份和恢复不方便
  5. 重启的时候,数据节点将数据load到内存需要很长时间

 

4. MySQL Cluster国内应用

中国电子科学研究院采用MySQL Cluster构建高可用测试系统 - MySQL社区 - Powered by Discuz!

 

参考资料

https://www.jianshu.com/p/21110d3130bc

https://www.cnblogs.com/behindman/p/8749599.html

 

  

集群:同一个业务,部署在多个服务器上

redis分布式和mysql分布式/集群

标签:存储   装包   实现   容量   poi   扩容   cluster   没有   nbsp   

小编还为您整理了以下内容,可能对您也有帮助:

负载均衡,分布式,集群的理解,多台服务器代码如何同步?

分布式:服务分散部署在不同服务器组成一个整体应用,分散压力,解决高并发。

假设访问量特别大,就可以做成分布式,将一个大项目拆分出来单独运行。跟cdn一样的机制。

Redis分布式:将redis中的数据分布到不同的服务器上,每台服务器存储不同内容。Mysql集群是每台服务器都存放相同数据。分布式部署:系统应用部署在2台或以上服务器或虚拟机上,服务间通过RPC、WCF(包含WebService)等交互,即可称作分布式部署。微服务也算作分布式的一种,反之则不然。分布式优点:1、将模块拆分,使用接口通信,降低模块之间的耦合度。2、将项目拆分成若干个子项目,不同团队负责不同子项目。3、增加功能时只需再加一个子项目,调用其它系统接口即可。4、可灵活进行分布式部署。5、提高代码的复用性,比如service层,如果不采用分布式rest服务方式架构,在手机Wap商城、微信商城、PC、Android、ios每个端都要写一个service层逻辑,开发量大,难以维护和一起升级,此时可采用分布式rest服务方式共用一个service层。缺点:系统之间交互要使用远程通信,接口开发增大工作量,但利大于弊。微服务:可单独部署运行的微小服务,一个服务只完成单一功能分散能力,服务之间通过RPC等交互,至少有一个数据库。用户量过大高并发时,建议将应用拆解为多个子系统,各自隔离,负责功能。缺点:服务数量大,后期运维较难。分布式、微服务区别:分布式依赖整体组合,是系统的部署方式;微服务是架构设计方式,粒度更小,服务之间耦合度更低。小团队负责,敏捷性更高。集群:多台服务器复制部署相同应用,由负载均衡共同对外提供服务,逻辑功能仍是单体应用。项目如果跑在一台机器上,这台机器如果出现故障,或者用户请求量比较高一台机器支撑不住,网站可能就访问不了。那怎么解决呢?就需要使用多台机器,复制部署一样的程序,让几个机器同时运行网站。那怎么分发请求到所有机器上?所以负载均衡的概念就出现了。负载均衡:将请求分发以分摊服务器压力。基于反向代理能将所有的请求根据指定的策略算法,分发到不同的服务器上。实现负载均衡常用Nginx、LVS。负载均衡服务器出现问题了怎么办?所有冗余的概念就出现了。冗余:两台或多台服务器,一个主服务器,一个从服务器。假设一个主服务器的负载均衡服务器出现问题,从服务器能替代主服务器来继续负载均衡。实现的方式就是使用Keepalive来抢占虚拟主机。双机双工模式:目前Cluster(集群)的一种形式,两台服务器均为活动状态,同时运行相同的应用,保证整体的性能,也实现了负载均衡和互为备份。WEB服务器或FTP服务器等用此种方式比较多。实现多台服务器代码(文件)同步方案:1、负载均衡中实现代码同步rsync。2、rsync+inotify逐一文件监听并实时同步。3、实现redis共享session。

redis和mysql有什么区别呢

redis和mysql的区别非常大。

具体如下:

    mysql中一个中小型的网络数据库,比oracle和sqlserver小, 但是并发能力远超过acess这样的桌面数据库。

    redis是一个支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。

    可以认为redis比mysql简化很多。

    mysql支持集群。

    现在大量的软件使用redis作为mysql在本地的数据库缓存,然后再适当的时候和mysql同步.

redis和mysql区别

1、类型不同

MySQL是关系型数据库;而Redis是非关系型数据库。

2、作用不同

mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢。

redis用于存储使用较为频繁的数据到缓存中,读取速度快。

3、存储类型不同

redis存储的是key-value格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn),对数阶。Redis会比MySQL快一点点。

mysql数据存储是存储在表中,查找数据时要先对表进行全局扫描或者根据索引查找,这涉及到磁盘的查找,磁盘查找如果是按条点查找可能会快点,但是顺序查找就比较慢;而Redis不用这么麻烦,本身就是存储在内存中,会根据数据在内存的位置直接取出。

redis和mysql区别

1、类型不同

MySQL是关系型数据库;而Redis是非关系型数据库。

2、作用不同

mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢。

redis用于存储使用较为频繁的数据到缓存中,读取速度快。

3、存储类型不同

redis存储的是key-value格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn),对数阶。Redis会比MySQL快一点点。

mysql数据存储是存储在表中,查找数据时要先对表进行全局扫描或者根据索引查找,这涉及到磁盘的查找,磁盘查找如果是按条点查找可能会快点,但是顺序查找就比较慢;而Redis不用这么麻烦,本身就是存储在内存中,会根据数据在内存的位置直接取出。

怎么和测试人员说清楚,redis相比mysql而言的特点?

二者的相同点是都可以用来存储数据,而且二者往往需要结合使用。
但二者本质的不同是,mysql是一款关系型数据库,redis是一款非关系型数据库。
细细探究,二者的不同点有:
1.存储数据的方法不同:mysql作为关系型数据库,是用二维表来存储数据,redis作为非关系型数据库,使用key_value键值对来存储数据。
2.作用不同:mysql主要是用来存储数据用的,因为用表存数据方便查询,统计,管理。而reids用key_value键值对来存储数据,存取数据速度快,而且是在内存中操作数据,一般是当缓存用的。
3.使用sql:mysql可以用sql语言实现数据的增删改查,但redis不能用sql语言操作数据。
4.操作硬件不一样:mysql操作存储数据是在硬盘上,而redis操作存储数据是在内存中
当初买了黑马程序员出的书,双上就有写。

怎么和测试人员说清楚,redis相比mysql而言的特点?

二者的相同点是都可以用来存储数据,而且二者往往需要结合使用。
但二者本质的不同是,mysql是一款关系型数据库,redis是一款非关系型数据库。
细细探究,二者的不同点有:
1.存储数据的方法不同:mysql作为关系型数据库,是用二维表来存储数据,redis作为非关系型数据库,使用key_value键值对来存储数据。
2.作用不同:mysql主要是用来存储数据用的,因为用表存数据方便查询,统计,管理。而reids用key_value键值对来存储数据,存取数据速度快,而且是在内存中操作数据,一般是当缓存用的。
3.使用sql:mysql可以用sql语言实现数据的增删改查,但redis不能用sql语言操作数据。
4.操作硬件不一样:mysql操作存储数据是在硬盘上,而redis操作存储数据是在内存中
当初买了黑马程序员出的书,双上就有写。

mysql和redis有什么区别

mysql与redis的区别有:在类型上mysql是关系型数据库,而redis是缓存数据库;作用上mysql用于持久化的存储数据到硬盘,而redis用于存储使用较为频繁的数据到缓存中

mysql数据库

mysql是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言(SQL)进行数据库管理。本部分主要内容包括:掌握结构化语言SQL,DDL创建数据库和表,Dos命令修改和删除库和表,DML命令增删改表数据,DQL命令查询表数据,数据库索引与备份

redis数据库

redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。

redis和mysql的区别

(1)类型上

从类型上来说,mysql是关系型数据库,redis是缓存数据库

(2)作用上

mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢

redis用于存储使用较为频繁的数据到缓存中,读取速度快

(3)需求上

mysql和redis因为需求的不同,一般都是配合使用。

redis和mysql在处理高并发问题时有什么差异

我的理解:

1、mysql支持sql查询,可以实现一些关联的查询以及统计;

2、redis对内存要求比较高,在有限的条件下不能把所有数据都放在redis;

3、mysql偏向于存数据,redis偏向于快速取数据,但redis查询复杂的表关系时不如mysql,所以可以把热门的数据放redis,mysql存基本数据

看项目用在哪个地方吧,根据各自的所长结合起来才好用。

显示全文