MyCat - 架构剖析 - 核心技术之 SQL 路由实现 | 学习笔记

简介: 快速学习 MyCat - 架构剖析 - 核心技术之 SQL 路由实现

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat - 架构剖析 - 核心技术之 SQL 路由实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/757/detail/13302


MyCat - 架构剖析 - 核心技术之 SQL 路由实现

内容介绍

一、 路由的作用

二、 SQL 解析器

 

一、 路由的作用

MyCat 的路由是和 SQL 解析组件息息相关的,SQL 路由模块是 MyCat 数据库中间件最重要的模块之一,使用 MyCat 主要是为了分库分表,而分库分表的核心就是进行 SQL 路由。

image.png

如图所示, MyCat 接收到应用系统发来的查询语句,要将其发送到后端连接的 MySQL 数据库去执行,但是后端由三个数据库服务器,具体要查询哪一台数据库服务器,就是路由需要实现的功能。

前端用户即应用程序链接的是 Mycat,并不直接连接 MySQL,应用程序要想执行 MySQL 语句,应用程序会发送一句 SQL 语句给 Mycat,Mycat 要去执行这句 SQL 语句进行查询,它将到哪一个分线进行查询,这些并不是固定的,这些都是要通过 Mycat 的 SQL 路由模块来进行计算的。

假如操作这张表,在对这张表在进行分片设计的时候,是根据 status 进行枚举分片, status 为 0 存储第一个节点, status 为 1 存储第二个节点, status 为 2 存储第三个节点。

当我们根据 status 字段来进行查询时, Mycat 首先会接收到客户(应用程序)发送的 SQL 语句,然后需要对 SQL 语句进行判定,判定当前条件 status 为0到底在哪个分线当中,确定分线之后,会将 SQL 语句路由到分线当中,然后在分线中执行,最后将分线结果返回回来,并不是每一次都到三个分线当中。

Mycat 在进行 SQL 路由当中既要保证数据的完整性,还要保证不造成资源的浪费,还要保证路由的效率。

例:

若 MyCat 输入的 SQL 语句为 select * from user wherestates in (‘0’,‘1’),根据他的 SQL 路由会到 dn1,dn2 分线中查询,然后把分线中查询的数据返回给 MyCat ,在 MyCat 中进行统计汇总。


二、SQL 解析器

Mycat1.3 版本之前模式使用的是 Fdbparser 的开源  SQL 解析器,在 2015 年被 apple 收购后,从开源变成闭源了。目前版本的 Mycat 采用的是 Druid 的 SQL 解析器,性能比采用 Fdbparser 整体性能提高 20% 以上。

 

相关文章
|
9天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
7天前
|
存储 分布式计算 关系型数据库
架构/技术框架调研
本文介绍了微服务间事务处理、调用、大数据处理、分库分表、大文本存储及数据缓存的最优解决方案。重点讨论了Seata、Dubbo、Hadoop生态系统、MyCat、ShardingSphere、对象存储服务和Redis等技术,提供了详细的原理、应用场景和优缺点分析。
|
9天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
28 7
|
7天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
38 4
|
8天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
24 3
|
10天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
38 5
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####
|
9天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
7天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
8天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
21 1
服务架构的演进:从单体到微服务的探索之旅