一篇神文让你“一夜封神“Mycat 中间件 (最详细讲解)(2)-程序员宅基地

技术标签: 程序员  中间件  

Mycat 简介

========

Mycat 的目的是打造真正的分布式数据库中间件,如图 13-1 所示。用户可以把 Mycat 看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信。可以像使用 MySQL 一样使用 Mycat,对于开发人员来说根本感觉不到 Mycat 的存在。

Mycat 的核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端多个数据库(主机)里,以达到分散单台设备负载的效果。应用程序就像连接普通的 MySQL 数据库一样地去连接它,SQL 查询、操作等一模一样;而 Mycat 把数据库复杂的架构以及背后复杂的分表分库的逻辑全部透明化了。Mycat 中间件连接多个 MySQL 数据库,多个数据库之间还可以做主从同步,这一切的一切对前端应用是完全透明的,不用调整前台逻辑,只要连接到 Mycat 即可。这样一来,对前端业务系统来说,业务代码无须过多调整,可以大幅降低开发难度,提升开发速度。

Mycat 可实现数据库的读写分离,在后端的主从复制数据库集群中,通过 Mycat 配置将前端的写操作路由到主数据库中,将读操作路由到从数据库上。Mycat 可以实现读写分离下的读操作负载均衡,将大量的读操作均衡到不同的从库上,主要出现在一主多从的情形下。

Mycat 可实现数据库的高可用,在数据库主节点可用的情况下,配置一台可写从节点,这两个节点都配置在 Mycat 中,当主节点宕机时,Mycat 会自动将写操作路由到备用节点上,轻松实现热备份。

Mycat 核心概念

==========

Mycat 的核心概念如图

(1)逻辑库(schema)

Mycat 作为一个中间件,实现 MySQL 协议,对前端应用连接来说就是一个数据库,无须让开发人员知道中间件存在,所以数据库中间件可以被当作一个或多个数据库集群构成的逻辑库。

(2)逻辑表(table)

有逻辑库,就会有逻辑表。在分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表可以数据切分后分布在一个或多个分片库中,也可以不做数据切分,不分片,只由一个表构成。

(3)分片表

分片表是指那些原有的拥有很多数据、需要切分到多个数据库的表。每个分片都有一部分数据,所有分片构成了完整的数据。

(4)非分片表

一个数据库中并不是所有的表都很大,某些表是可以不进行切分的。非分片表是相对分片表来说的,就是那些不需要进行数据切分的表。

(5)ER 表

关系型数据库是基于实体关系模型(Entity-Relationship Model)之上的,描述了真实世界中的事物与关系。Mycat 中的 ER 表就来源于此。根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据 join 关联查询不会跨库操作。表分组(Table Group)是解决跨分片数据 join 关联查询的一种很好的方法决定方法,也是数据切分规划很重要的一条原则。

(6)全局表

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
740184)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/F1520080/article/details/137956199

智能推荐

深入了解Flutter的isolate(2) --- 创建自己的isolate -程序员宅基地

文章浏览阅读1.8k次。0x00 前言Flutter的代码都是默认跑在root isolate上的,那么Flutter中能不能自己创建一个isolate呢?当然可以!,接下来我们就自己创建一个isolate!0x01 dart:isolate有关isolate的代码,都在isolate.dart文件中,里面有一个生成isolate的方法: external static Future<Isolate&gt..._flutter的isolate创建过程

Linux系统设置Crontab定时任务_sueue 系统怎么生效crontab-程序员宅基地

文章浏览阅读101次。Linux系统设置Crontab定时任务创建一个sh脚本文件(输出语句重定向到txt文件中,并赋予权限):touch start.shchmod 777 start.sh创建txt文件,并赋予权限:touch content.txtchmod 777 content.txt编辑脚本文件(写入需要执行的脚本):echo hello world >> /home/zhouziyu/content.txt查看定时任务列表:crontab -l编辑定时任务,然后_sueue 系统怎么生效crontab

判断二叉树是否AVL树_如何判断一个二叉树是否为avl树-程序员宅基地

文章浏览阅读2.1k次。一、算法思想: 递归法判断一个二叉树是否平衡二叉树(AVL树),可以根据它的定义写出代码:(1)空树是一个AVL树;(2)只有一个根结点的树是一个AVL树;(2)左子树是一颗AVL树,且右子树是一个AVL树,且左子树的高度与右子树的高度差绝对值不超过1。二、代码:/*name:author:followStepdescription:date:2018/3/1..._如何判断一个二叉树是否为avl树

Ant design Pro 跨域问题解决方案(SpringBoot版本)_if an opaque response serves your needs, set the r-程序员宅基地

文章浏览阅读1.6k次。错误描述:Access to fetch at ‘http://localhost:9000/api/login/account’ from origin ‘http://localhost:8000’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on_if an opaque response serves your needs, set the request's mode to 'no-cors

压缩字符串 实现思路及练习题-程序员宅基地

文章浏览阅读413次,点赞15次,收藏4次。实现思路:遍历当前字符串,从第一个元素开始,遍历至倒数第二个元素,分别获取当前字符以及下一个字符然后对当前字符与下一个字符进行判断,如果相邻字符相等,表示连续相同,对其进行累加计数。否则相邻字符不相等,表示连续中断,将之前计数完成的字符+字符个数加到字符串末尾,并重新设置要比较的字符,且重新计数。题目:压缩字符串"AAAABBBCCDDDDEEEEEEFFF"使得其输出结果为A4B3C2D4E6F3。输入:AAAABBBCCDDDDEEEEEEFFF。输出:A4B3C2D4E6F3。

python字符串切片用法_Python字符串切片操作知识详解-程序员宅基地

文章浏览阅读541次。一:取字符串中第几个字符print "Hello"[0] 表示输出字符串中第一个字符print "Hello"[-1] 表示输出字符串中最后一个字符二:字符串分割print "Hello"[1:3]#第一个参数表示原来字符串中的下表#第二个阐述表示分割后剩下的字符串的第一个字符 在 原来字符串中的下标这句话说得有点啰嗦,直接看输出结果:el三:几种特殊情况(1)print "Hello"[:3] ...

随便推点

Anaconda安装_anaconda环境变量e:\anaconda3\library\usr\bin-程序员宅基地

文章浏览阅读7.1k次,点赞41次,收藏196次。文章目录1.Anaconda是什么2.Anaconda下载3.Anaconda安装4.Anaconda环境变量配置5.检验是否安装成功6.检验Anaconda Navifator是否安装成功7.修改Anaconda镜像修改为清华大学镜像移除清华大学镜像8.PyCharm配置Anaconda方式一(建立新的项目时)方式二(已经打开项目)9.总结1.Anaconda是什么Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。Anaconda也是P_anaconda环境变量e:\anaconda3\library\usr\bin

70个常用电脑快捷键,帮你工作效率提升100倍!职场新人必备!_快捷键可以帮助自己-程序员宅基地

文章浏览阅读2k次,点赞11次,收藏44次。电脑快捷键不仅可以帮助我们熟练的操作电脑,还可以帮助我们快速提升自己的工作效率,从此跟加班说拜拜!但由于电脑快捷键过于繁多不方便我们记忆!那么今天小编为大家整理的70个Wordows、Ctrl、Alt、Shift组合快捷键,运用好的话能够帮你工作效率提升100倍!希望能为大家派上用途!下面以图片&文字的形式展现给大家!文字可以直接复制!图片也可以直接拿去收藏!..._快捷键可以帮助自己

用HTML语言制作一个非常浪漫的生日祝福网,手把手教你制作炫酷生日祝福网页_用html做一个生日快乐网页-程序员宅基地

文章浏览阅读2.2w次,点赞317次,收藏636次。明天就是女朋友的生日了, 是时候展现专属于程序员的浪漫了!你打算怎么给心爱的人表达爱意?鲜花礼物?代码表白?还是创意DIY?或者…无论那种形式,快来秀我们一脸吧!_用html做一个生日快乐网页

idea快捷键配置和常用快捷键_idea自定义快捷键-程序员宅基地

文章浏览阅读1.1k次。idea快捷键配置和常用快捷键_idea自定义快捷键

y2.2隐藏英雄密码_从嗨到2y 10 tmnkr您的密码发生了什么-程序员宅基地

文章浏览阅读99次。y2.2隐藏英雄密码Say that I decide to sign up for an account an incredibly insecure password, ‘hi’. How does this become something stored in the database like this: 假设我决定为一个帐户注册一个非常不安全的密码“ hi ”。 它如何变成这样存储在数据..._$2y$10$y

从0到1搭建一套属于你自己的高精度实时结构光3D相机(1):硬件搭建-程序员宅基地

文章浏览阅读1.6k次,点赞42次,收藏11次。在这篇博客中,博主将主要介绍结构光3D相机的硬件如何搭建,主要涉及到相机与投影仪的选型与配置。在开头,博主先给大家摘出一段语录:能从硬件层面解决的问题,就别死磕算法了。是的,能从硬件层面解决的问题,死磕算法是没有意义的。例如,当你评估自己的3D相机精度却发现始终达不到理想水平时,不要在那两三句代码上死磕,回头想想,是不是自己的硬件搭建的不好,选型选的不对。就博主经验而言,大部分做结构光3D相机没几年的小萌新们,都对相机与投影仪的硬件特性毫无理解。