Mycat2【java提高】1

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Mycat2【java提高】1

前言


2022/8/26 8:00


暑假持续学习ing


推荐

【尚硅谷】MyCat2

Mycat2

资源下载

尚硅谷mycat2配套学习资源.7z

前言

版本

Mycat2.0

MySQL8.0

为什么学习Mycat2

  • 常见数据库瓶颈问题:
    -数据库数据量大,查询效率低
    -分布式数据库架构复杂对接困难
    -高访问高并发对数据库压力山大
  • 解决方案:分布式数据库中间件Mycat2

课程介绍

基础(入门):

Mycat核心概念、底层原理、应用场景明确

Mycat是什么、有什么用、怎么用

核心(应用):

手把手从零开始搭建Mycat2做好实战的准备

实战(高级):

解决真实系统难题:实现读写分离、分库分表

数据库分布式轻松搞定

新特性(进阶):

了解新特性、学习MycatUI工具实现整体

统筹操作提升Mycat2使用效率

Mycat2与老版本区别


Mycat2功能更强大,使用更简单!

第一章 入门概述

1.1 是什么

Mycat是数据库中间件
1、数据库中间件

中间件:是一类连接软件和应用的计算机软件,以便软件各部件之间的沟通。

例子:Tomcat, web中间件。

数据库中间件:连接java应用的应用程序和数据库。
2、为什么要用Mycat?

1、java与数据库紧耦合

2、高访问量高并发对数据库的压力

3、读写请求数据不一致

3、数据库中间件对比


① Cobar 属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数据库的schema,集群日处理在线SQL请求50亿次以上。由于Cobar发起人的离职,Cobar停止维护。


② Mycat 是开源社区在阿里cobar基础上进行二次开发,解决了cobar存在的问题,并且加入了许多新的功能在其中。青出于蓝而胜于蓝。


③ OneProxy 基于MySQL官方的proxy思想利用c语言进行开发的,OneProxy是一款商业 收费 的中间件。舍弃了一些功能,专注在性能和稳定性上 。


④ kingshard 由小团队用go语言开发,还需要发展,需要不断完善。


⑤ Vitess 是Youtube生产在使用,架构很复杂。不支持MySQL原生协议,使用 需要大量改造成本。


⑥ Atlas 是360团队基于mysql proxy改写,功能还需完善,高并发下不稳定。


⑦ MaxScale 是mariadb(MySQL原作者维护的一个版本) 研发的中间件


⑧ MySQLRoute 是MySQL官方Oracle公司发布的中间件

4、Mycat的官网

http://www.mycat.io/

http://dl.mycat.io

1.2 干什么

1、读写分离




2、数据分片

垂直拆分(分库)、 水平拆分(分表)、 垂直+水平拆分(分库分表)


3、多数据源整合



1.3 原理

Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库, 并将返回的结果做适当的处理,最终再返回给用户。

这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用 Mycat 还是MySQL。

1.4 Mycat1.x与Mycat2功能对比

1、1.x与2.0功能对比图


2、映射模型区别






第二章 安装启动

Linux下安装几种方法
1、rpm万式
  .rpm安装包,按顺序安装
2、yum方式
  需要连网
3、解压后既可使用
4、解压后编译安装

2.1 安装

准备工作

下载地址:https://github.com/MyCATApache

下载版本:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
下载地址:http://dl.mycat.org.cn/1.6-RELEASE/

源自Mycat-安装教程

1、下载安装包

下载对应的tar安装包,以及对应的jar包

···tar (zip)包:

http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip

···jar 包

http://dl.mycat.org.cn/2.0/1.21-release/ (下载最新的jar包)

下载所需的mycat2的fat·jar 一般大小为100mb 的一个 jar 文件


把这个jar放进解压的tar中的mycat\lib文件夹下


2、解压后即可使用

把整合好的文件夹拷贝到linux下 /usr/local

3、修改文件夹及以下文件的权限

修改为最高权限,否则运行启动命令时,会因权限不足而报错

chmod 777 mycat wrapper-linux*




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 关系型数据库 MySQL
Mycat2【java提高】3
Mycat2【java提高】3
116 0
|
SQL 算法 Java
Mycat2【java提高】5
Mycat2【java提高】5
216 0
|
存储 算法 Java
Mycat2【java提高】4
Mycat2【java提高】4
183 0
|
负载均衡 关系型数据库 MySQL
Mycat2【java提高】2
Mycat2【java提高】2
209 0
|
4天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
41 17
|
14天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
16天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
16天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
17天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
42 3
|
17天前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
100 2
下一篇
开通oss服务