mycat

服务端高并发分布式架构演进之路

断了今生、忘了曾经 提交于 2019-11-30 12:31:38
一、概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 二、基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍: 1、分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上 2、高可用 系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性 3、集群 一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。如Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,这时候说明集群具有高可用性 4、负载均衡 请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的 5、正向代理和反向代理 系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问

MYSQL数据库集群方案-PXC

感情迁移 提交于 2019-11-30 11:55:50
一、安装Percona数据库 1. 离线安装Percona 进入RPM安装文件目录,执行下面的脚本 yum localinstall *.rpm 管理MySQL服务 systemctl start mysqld systemctl stop mysqld systemctl restart mysqld 2. 在线安装Percona 使用yum命令安装 yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm yum install Percona-Server-server-57 管理MySQL服务 service mysql start service mysql stop service mysql restart 3. 开放防火墙端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload 4. 修改MySQL配置文件 vi /etc/my.cnf [mysqld] character_set_server = utf8 bind-address = 0.0.0.0 #跳过DNS解析 skip-name

【10】MySQL:MyCAT 分布式架构

人盡茶涼 提交于 2019-11-30 10:20:15
写在前面的话 在学习的索引的时候,有提到,当数据表数据达到 800W 的时候,索引的性能就开始逐步下降。对于一个公司而言,主要业务数据表达到 1000W 都很容易。同时这张表一般都是业务常用的表,操作还比较频繁。所以为了提升用户体验,需要采用另外的方式对数据库进行优化,那就是分库分表。而 MyCAT 就是能够帮助我们管理分库分表的这样一个中间件。 MyCAT 环境基础架构准备 架构图 1: 架构图 2: 【1】搭建基础环境: 1. 在 db01 :192.168.100.111 上面安装数据库多实例: # 创建基础目录 mkdir -p /data/{data,logs,backup,conf}/mysql-33{07,08,09,10} mkdir -p /data/logs/mysql-33{07,08,09,10}/{bin-log,slow-log,error-log,relay-log} mkdir -p /data/packages/mysql mkdir -p /data/services # 添加用户 useradd -s /sbin/nologin mysql # 修改目录权限 chown -R mysql.mysql /data/logs/mysql-33* chown -R mysql.mysql /data/data/mysql-33* # 清理默认配置文件

mycat学习笔记1:HDFS

感情迁移 提交于 2019-11-30 07:44:31
mycat是什么?   1.mycat是一个彻底 开源的 ,面向企业应用开发的 大数据库集群,   2.支持事务、ACID、可以替代MySQL的加强版数据库,目前支持关系型数据库以及非关系型数据库   3.可以用来代替昂贵的oracle数据库   4.mycat是一个大数据( HDFS )的sql引擎   通过上面的介绍,我们知道, mycat其实就是一个数据库 为什么叫mycat?   mycat再初期的时候,是为了用来代替昂贵的oracle存在的,因此它支持的是免费的mysql数据库,也只支持mysql数据库,现在mycat已经可以支持多种数据库了,换句话说,mycat就是mysql的增强版。   再之前介绍架构,我们知道当数据库压力大的时候,使用独写分离和分库分表,但是mysql是不支持的,使用mycat来实现mysql独写分离和分库分表。 什么是HDFS?   HDFS:大数据的分布式文件存储系统    H:Hadoop(大数据),D:Distributed(分布式的),F:File(文件),S:System(系统)。      在大数据中,数据量是非常大的,如果有1PB的数据(1PB=1024TB),没有这么大的硬盘,那么数据应该如何存储呢?   将数据拆分为块,分别存储进不同的磁盘中,假设将这1P的数据,分为10份/20份,分别存储在10/20个磁盘上,当需要读取数据时

Sharding-Jdbc

爱⌒轻易说出口 提交于 2019-11-30 06:29:27
Sharding-Jdbc 基于Sharding-Jdbc实现读写分离 基于Sharding-Jdbc实现分表分库 Sharding-Jdbc源码分析 数据库集群自动增长id,Sharding-Jdbc 雪花算法 Sharding-Jdbc介绍 Sharding-Jdbc在3.0后改名为Shardingsphere它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 Sharding-Sphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。 应用场景: 数据库读写分离 数据库分表分库 相关资料: Sharding-Jdbc官方网址: http://shardingsphere.io/index_zh.html 改名新闻: https://www.oschina.net/news/95889/sharding-jdbc-change-to

Linux 配置 mycat 和 分库分表配置。

坚强是说给别人听的谎言 提交于 2019-11-30 05:17:48
Linux 如何配置mycat? 3.配置mycat 3.1.规定linux的用户名和全名不能叫mycat!!!否则mycat会不生效(原因是影响整个linux系统的环境变量导致mycat的配置环境变量没有生效) 3.2.vim /etc/sysconfig/network也不能叫mycat 3.3.mycat使用的是Java语言编写-->所以必须要在linux上配置jdk(要求jdk必须为64位,因为mycat是在64位的jdk8上进行编译的) 3.4.配置jdk 3.5.使用xftp把mycat的压缩包上传到linux服务器上 3.6.解压mycat压缩包 tar -zxvf xxxxx 3.7.配置mycat的环境变量 vim /etc/profile JAVA_HOME=/home/apps/jdkxxx MACAT_HOME=/home/apps/mycat PATH=$PATH:$JAVA_HOME/bin:$MACAT_HOME/bin source /etc/profile 3.8.启动mycat 进入mycat的bin目录 // ./mycat console // mycat start 在任意的位置直接使用 mycat console console | start | stop | restart | status | dump 启动mycat: mycat

mycat理解

北慕城南 提交于 2019-11-30 04:33:16
1、为什么叫mycat?   其实mycat在最早的初期版本只支持mysql一种数据库,换句话说, mycat就是mysql的增强版,在mysql中只是数据库,并没有读写分离和 分库分表,这些操作全部是由mycat进行实现。 注意:主从复制(数据同步)功能mycat没有,必须要使用mysql所提供的。 2、什么是mycat?   2.1 mycat是完全开源的,并且面向大型企业的大数据库集群   2.2 支持事务、ACID、可以替代mysql的嘉庆版数据库,目前已经支持了     很多数据库(关系型和非关系型数据库都包括) 3、什么是HDFS?   H:Hadoop   D:Distributed   F:File   S:System   Hadoop(大数据)分布式存储系统;大数据:数据量非常大,且以文件形式保存    HDFS只做数据的存储;   mycat:   H:High(Big Data)   D:Distributed   D:Data   S;System 4、mycat的两大核心   4.1 分库分表     将同一个系统(项目)的同一张表拆分到不同服务器进行存放   4.2 读写分离     将同一个系统(项目)的读操作和写操作分别在不同服务器上完成    来源: https://www.cnblogs.com/liuqijia/p/11560307.html

mysql高可用

走远了吗. 提交于 2019-11-30 01:36:55
1、1触发器 6、1触发器 ***触发器有两个指针1、new(更新后的,2、OLD更新前的) 1、若搜索员工信息的时候,需要把领导的名字展现出来,那么需要增加一列冗余。 ALTER TABLE t_emp ADD ceoname VARCHAR(200); 2、需要将相对应的ceo名字对应更新到新增字段中,用到跨表插入。 UPDATE t_emp a LEFT JOIN t_dept b ON a.deptId=b.id LEFT JOIN t_emp c ON b.CEO=c.id SET a.ceoname=c.name; 3、假如之前门派的掌门人变了,但是ceoname,则还是之前的掌门人名称,则不能对应上。所以就需要mysql引擎了,让冗余跟着数据的变化而变化。 DELIMITER $ create trigger tri_stuInsert2 after UPDATE ON t_dept FOR EACH ROW BEGIN UPDATE t_emp a LEFT JOIN t_dept b ON a.deptId=b.id LEFT JOIN t_emp c ON b.CEO=c.id SET a.ceoname=c.name WHERE a.deptId=new.id; END$ DELIMITER ; DELIMITER $ create trigger tri

分布式 | dble 用 jumpstringhash 替换 Mycat 一致性 hash 原因解析

纵然是瞬间 提交于 2019-11-29 09:02:40
背景 MyCat 对于字符串类型为分片字段的数据,有三种分片模式,分别是:模值 hash(求模法),jumpstringhash(跳跃法),一致性 hash(环割法) DBLE 对于 hash 算法选取方面,除了继承 MyCat 的模值 hash,并没有延续使用 MyCat 的一致性 hash,而是选取了另一种流行的算法 —— “jumpstringhash”。 介绍 下面对于环割法(一致性 hash)及跳跃法(jumpstringhash)的原理、特性及优缺点进行简单的介绍。 环割法(一致性 hash) 环割法的原理如下: 初始化的时候生成分片数量X × 环割数量 N 的固定方式编号的字符串,例如 SHARD-1-NODE-1,并计算所有 X×N 个字符串的所有 hash 值。 将所有计算出来的 hash 值放到一个排序的 Map 中,并将其中的所有元素进行排序。 输入字符串的时候计算输入字符串的 hash 值,查看 hash 值介于哪两个元素之间,取小于 hash 值的那个元素对应的分片为数据的分片。 特点 缺点 随机性强 初始化耗时长,内存消耗较高,需要进行大量数据排序,分片消耗高 跳跃法(jumpstringhash) 跳跃法的原理如下: 根据公式: 将数据落在每一个节点的概率进行平均分配。 对于输入的字符串进行计算 hash 值

MyCat读写分离配置

两盒软妹~` 提交于 2019-11-29 08:55:46
读写分离在我们配置数据库集群时是必然会考虑的一个点,因为这可以有效的降低主库的负载,并且在读多余写的情况下,绝大部分的读请求都可以分发到各个不同的从库上。即使从库负载不够,也可以通过增加从库的方式来提升整体的查询效率。本文主要讲解 MyCat 如何进行读写分离的配置。 1. 环境搭建 为了搭建读写分离数据库架构,这里我们需要准备两个数据库,一个作为主库,一个作为从库。本文所使用的方式是通过docker搭建的主从架构,因而可以在本机上直接运行。具体配置如下: 角色 主机名 主机ip 主机端口 主库 mysql-master 127.0.0.1 3306 从库 mysql-slave 127.0.0.1 3307 关于docker如何搭建MySQL主从数据库,读者朋友可以阅读本人的文章(文章链接)。读者朋友也可以通过虚拟机的方式搭建主从数据库,这里就不再赘述。 2. MyCat配置 关于MyCat的配置,其主要是需要在某一个数据库节点上同时指定主库和从库。下面是一个示例: <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mydb" checkSQLschema="true"