【原创】MySQL Proxy - 核心篇

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

核心层篇(Core)      

      Network Core 构建于 socket 处理实现的基础之上,将 client connection 和 server connection 关联到一起。       

【Connection Life Cycle】      

connection 可处于下面 4 种协议基本 phase 之一:      
  • connect
  • authentification
  • query
  • disconnect
       通过对 plugin 功能的定制实现,可以改变 network core 的默认工作方式,进而获得如下三种基本 plugin 功能中的一个:      
  1. plugin-admin 只实现了 listen 方面的功能
  2. client plugins 只实现了 connection 方面的功能
  3. plugin-proxy 实现了上述两方面的功能
       
【Scripting】      

       源码中所提供的 plugin 都实现了相应的 callback 功能函数,并将其暴露给了 scripting 层。       就目前而言,scripting 层的功能是由 Lua 语言提供的 -- 这是一种简单、快速和便于嵌入的脚本语言。      
      我们通过将大部分内部数据暴露给 scripting 层的方式,令相应模块函数可以对传进 scripting 层的数据进行操作。      


【Network Core Layer】      

       MySQL Proxy 的网络引擎的设计目标是同时处理数以千计的 connection ,并打算将其用于 load-balancing 和 fail-over 处理,所以其必须能够在同时存在很多 MySQL backend server 的情况下,对 connection 进行优雅地处理。目标锁定在了 5k 到 10k 的 connection 数量上。      


       一直到 MySQL Proxy 0.7 版本,MySQL Proxy 使用都是纯粹的事件驱动、非阻塞网络模型。      

      基于事件驱动的设计决定了 MySQL Proxy 对 idling connection 仅会保存少量必要信息:即仅仅保存 connection 的状态,然后让其等待事件的到来。      


【Threaded Scripting】      

       通常脚本都是精巧的,并只被用于做一些简单的决策处理,而把大部分工作交由网络层处理。      
       在未来的 0.9 版本中,将会利用脚本层中所支持的多线程模型,从而达到以线程池形式呈现的多脚本线程同时运行的效果。      
           如此,脚本层就可以调用阻塞或者慢函数,而不需要打断其他 connection 的执行。      


       对全局 plugin mutex 的 lift,意味着我们将必须以不同的方式对全局结构进行访问。由于大多数的访问出现在 connection level 上(也就是 event-threading 的那层),故只有对类似 "proxy.global.*" 的全局结构进行访问时才需要保持同步。基于这方面的需求,我们将研究如何在各个独立的 Lua-states 之间相互发送数据。      
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
1072 0
一文带你理解MySQL事务核心知识点
一文带你理解MySQL事务核心知识点
378 1
一文带你理解MySQL事务核心知识点
MySQL性能优化(一):MySQL架构与核心问题
在 MySQL 性能优化之前,你有必要重新再认识下 MySQL,便于后续更容易理解 MySQL 性能优化中涉及到的知识点。本文将从 MySQL 架构、核心问题来针对性展开讨论,这也将是 MySQL性能优化 系列文章的开篇之作。
563 1
庖丁解牛,MySQL执行计划Explain的2大核心
庖丁解牛,MySQL执行计划Explain的2大核心
133 0
庖丁解牛,MySQL执行计划Explain的2大核心
面试必问 | 聊聊MySQL三大核心日志的实现原理?
面试必问 | 聊聊MySQL三大核心日志的实现原理?
628 0
云原生时代必须具备的核心技能之Docker高级篇(Docker实战之MySQL高可用集群搭建)
MySQL集群搭建在实际项目中还是非常必须的,我们通过PXC【Percona XtraDB Cluster】来实现强一致性数据库集群搭建。
云原生时代必须具备的核心技能之Docker高级篇(Docker实战之MySQL高可用集群搭建)
核心特性—MySQL生态兼容
PolarDB-X将兼容MySQL以及周边生态作为核心设计目标之一。本文从SQL语法、事务行为、导入导出等维度总结了兼容性的相关特性。
201 0
揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL
作者:雁闲、无哈,阿里云数据库技术专家
888 1
揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等