likes
comments
collection
share

MySql集群简介-告诉你为什么要用集群部署

作者站长头像
站长
· 阅读数 10

数据库集群

引言: 前不久在网上通过某网购平台,联系了一家定制APP的公司,让其定制一款学校园区点餐系统的APP,前端和后端所采用的技术都还满意,但当谈及到后端数据库的部署方式时一下子就看出来了其后端功能性能的优劣。尽管前后端所采用的技术很高大上,但是在后端数据库的部署方式上,却采用的是单机单节点这种最简单,最磊弱鸡肋的方式。考虑到APP上架其后端并发性能对用户流畅可能造成大打折扣的影响,果断没选择该产品。所以这篇就简单总结一下后端数据库的部署该如何选择。

1,单机单节点的数据库的

单机单节点数据库,是一种最简单的后端数据库部署方式。所谓单机单节点就是,一类应用或者服务的数据全部存放在一个数据库节点里,一个数据库节点就是一个数据库系统服务。一个数据库节点处理的并发请求相当有限。如果网络应用或者服务的数据只依靠这一个节点,那么这些应用在网络访问量大的时候很可能就会发生崩溃。

2,单节点数据库多并发性能测试'

以下是对单机单节点的数据库多并发测试,
--concurrency 并发访问的数量
--number-of-queries 并发执行的sql语句数量。

mysqlslap -h localhost(或主机ip) -u root(数据库用户名) -p1234(密码) -P3306(端口)
--concurrency=50 --iterations=1 --auto-generate-sql
--auto-generate-sql-load-type=mixed
--auto-generate-sql-add-autoincrement
--engine=innodb
--number-of-queries=50

MySql集群简介-告诉你为什么要用集群部署 50并发50sql语句没有太大问题,很显然这个标准太低,我们稍微调高一点参数

--concurrency 1000 --number-of-queries 1000。

MySql集群简介-告诉你为什么要用集群部署

可以看出当数据库节点面临1000个并发连接时就面临着超负荷,也就意味着很多连接无法去服务,这就是造成App或者其他网络产品卡顿的主要因素。如何解决数据库超负荷带来的卡顿呢?可以使用数据库集群技术,在增强数据库处理大并发连接请求的能力。

单机单节点数据库的

1. 完善的互联网程序有很庞大的用户群体,因此架构必须要在极端的情况下保持高可靠性

2. 单节点的数据库为无法满足真正的生产是时的性能要求

3. 单节点的数据库没有冗余设计,无法满足高可用

3,PXC数据库集群

单个PXC数据库集群

MySql集群简介-告诉你为什么要用集群部署

  1. 这是一个典型的PXC集群数据库,相比于其它数据库集群,它最大的特点是集群内部各个节点严格保持同步,读写强一致性,适合存储高价值重要数据。程序任何时候从各个节点读取的数据都是一致的,任何一个节点写入数据库的数据都会被同步到其它节点,然后才返回给客户端结果,如果有任何一个节点写入数据库失败,则所有操作执行回滚。

  2. 一个集群系统还有相应的负载均衡功能,用来均衡网络后端的访问操作。这个负载均衡是个中间件常见的有HA,这个负载均衡中间件会把客户端传过来的SQL语句传给不同的节点让它们分别去执行。

多个数据库集群

MySql集群简介-告诉你为什么要用集群部署

  1. 在实际的应用中光有一个集群还远远不够,这里对数据库来说有一个性能上的瓶颈,就是单表记录数量超过2kw左右其性能下降的非常大。所以在存储数据的时候应该避免此种情况的发生。由于PXC集群内部节点都是同步一致的,所以就需要额外的PXC集群来做数据的存储。

  2. 如图所示两个PXC集群,需要注意的是这两个PXC集群之间没有数据的同步,同步操作之存在以PXC集群内部。两个PXC集群之间的操作是数据切分,执行该操作的功能也是一个中间件,最常用的就是基于阿里开源的MyCat数据切分中间件MyCat接受到SQL语句就会根据记录里每个字段的各种权值计算出,要发送到哪个集群里让它们分别执行,起作用就像网路里“路由器”。

4,Replication集群部署

mysql 的集群相对于PXC的强一致性,还有一种读写非强一致性方案叫做Replication方案,它不牺牲性能为代价,来组建集群,这也导致了它无法保证读写的强一致性。可以说它的缺点即使它的优点。 MySql集群简介-告诉你为什么要用集群部署 如上图所示为两个Replication 集群,在其中的一个集群的一个数据库节点写入数据,并且提交完事务,该事务只要在该节点提交成功即可返回客户端成功提交信息,不用等待所有数据库节点同步数据完毕再返回,此时如果有其它数据库节点同步写入失败,该同步失败信息是不会返回给客户端的,所以客户端提交的事务也不会回滚的。这是于PXC集群方案的最主要区别,PXC集群会等到所有节点同步完成后返回给客户端,这也造成了PXC性能的损耗,不过这都是为PXC读写强一致性而作出的牺牲。

可以简单这么理解

  • PXC集群 为了集群节点读写强一致性,牺牲了并发读写访问性能。
  • Replication集群 为了集群并发读写访问性能,牺牲了集群节点的读写强一致性。

5,如何选择数据库集群

  • PXC集群强调读写的一致性,所以适合保存一些关键数据,比如金钱,账户,商品,这些容易产生财务纠纷的数据。

  • Replication集群 不强调读写的一致性,所以不适合保存有价值或者关键的数据,它适合处理一些海量且有鲁棒性强的数据,这类数据一般是用做统计类的。比如商品的与客户的喜好关系。