返回顶部
首页 > 资讯 > 数据库 >MySQL中如何使用DAL中间件
  • 860
分享到

MySQL中如何使用DAL中间件

2024-04-02 19:04:59 860人浏览 八月长安
摘要

本篇文章给大家分享的是有关Mysql中如何使用DAL中间件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Atlas是由 Qihoo  

本篇文章给大家分享的是有关Mysql中如何使用DAL中间件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Atlas是由 Qihoo  360公司WEB平台部基础架构团队开发维护的一个基于mysql协议的数据中间层项目。它在Mysql官方推出的MySQL-Proxy  0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。

2.2.atlas架构

Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。

MySQL中如何使用DAL中间件

2.3、主要功能

1.读写分离

2.从库负载均衡

3.IP过滤

4.自动分表

5.DBA可平滑上下线DB

6.自动摘除宕机的DB

Atlas相对于官方MySQL-Proxy的优势

1.将主流程中所有lua代码用C重写,Lua仅用于管理接口

2.重写网络模型、线程模型

3.实现了真正意义上的连接池

4.优化机制,性能提高数十倍

3、Mysql router

官网:Http://dev.mysql.com/doc/mysql-router/en/

3.1、mysql router简介

MySQL  Router是mysql官方发布的数据库中间件,是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品。其架构图和功能如下。

3.2、mysql router架构

MySQL中如何使用DAL中间件

  • 1.Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL  Router对前端应用是透明的。应用程序把MySQL Router当作是普通的mysql实例,把查询发给MySQL Router,而MySQL  Router会把查询结果返回给前端的应用程序。

  • 2.从数据库服务器故障,业务可以正常运行。由MySQL Router来进行自动下线不可用服务器。程序配置不需要任何修改。

  • 3.主数据库故障,由MySQL Router来决定主从自动切换,业务可以正常访问。程序配置不需要做任何修改。

MySQL Router读写分离原理:

MySQL  Router接受前端应用程序请求后,根据不同的端口来区分读写,把连接读写端口的所有查询发往主库,把连接只读端口的select查询以轮询方式发往多个从库,从而实现读写分离的目的。读写返回的结果会交给MySQL  Router,由MySQL Router返回给客户端的应用程序。

3.3.mysql router主要功能

MySQL Router的主要用途是读写分离,主主故障自动切换,负载均衡,连接池等。

4、Mycat

官网:http://www.mycat.org.cn/

4.1、mycat简介

Mycat是基于开源cobar演变而来,对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。1.4  版本以后 完全的脱离基本cobar内核,结合Mycat集群管理、自动扩容、智能优化,成为高性能的中间件。

  • 一个彻底开源的,面向企业应用开发的大数据库集群

  • 支持事务、ACID、可以替代MySQL的加强版数据库

  • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的oracle集群

  • 一个融合内存缓存技术、NoSQL技术、hdfs大数据的新型SQL Server

  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

  • 一个新颖的数据库中间件产品

4.2、mycat架构

MySQL中如何使用DAL中间件

4.3、mycat主要功能

  • 支持SQL92标准

  • 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。

  • 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。

  • 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster

  • 基于Nio实现,有效管理线程,高并发问题。

  • 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。

  • 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。

  • 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。

  • 支持多租户方案。

  • 支持分布式事务(弱xa)。

  • 支持全局序列号,解决分布式下的主键生成问题。

  • 分片规则丰富,插件化开发,易于扩展。

  • 强大的web,命令行监控

  • 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongoDB 、巨杉。

  • 支持密码加密

  • 支持服务降级

  • 支持IP白名单

  • 支持SQL黑名单、sql注入攻击拦截

  • 支持分表(1.6)

  • 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

Mysql+mycat架构实战请戳Mysql+Mycat实现数据库主从同步与读写分离

5、Cobar

官网:https://GitHub.com/alibaba/cobar/wiki

5.1.cobar简介

Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。产品在阿里巴巴稳定运行3年以上。接管了3000+个MySQL数据库的schema。集群日处理在线SQL请求50亿次以上。集群日处理在线数据流量TB级别以上。

5.2.cobar架构

MySQL中如何使用DAL中间件

5.3、cobar现状

2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,及其使用限制,后来在cobar的基础上改良诞生mycat,也就是目前cobar的代替版,而且2013年之后就没有版本更新了。

6、Amoeba

官网:http://docs.hexnova.com/amoeba/

6.1、amoeba简介

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for  Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的  时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB  Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL  过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能

6.2、amoeba架构

MySQL中如何使用DAL中间件

6.3、amoeba现状

目前作者已经停止维护。

7、Mysql proxy

7.1.mysql proxy简介

MySQL Proxy是一个处于你的client端和MySQL  server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载均衡,故障、查询分析,查询过滤和修改等等。MySQL  Proxy就是这么一个中间层代理,简单的说,MySQL  Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL  Proxy是完全透明的,应用则只需要连接到MySQL  Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。MySQL  Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。

7.2、mysql proxy现状

自从mysql官网出现mysql router之后,mysql proxy就已经停止维护了。

mysql proxy架构实战ProxySQL+Mysql实现数据库读写分离实战

8、客户端分片

8.1、客户端分片简介

程序客户端进行分库分表。也就是直接在程序里面进行数据库和表的拆分,例如用户表。根据用户的UID,例如13678789,根据最后一位,可以拆分为0-9共10个数据库,把尾号是0的存入db_user_0数据库,尾号是1的存入db_user_1数据库,select的时候也是一样。然后根据倒数第二位,可以拆分为0-9共10张表,根据倒数第二的尾号写入相应的表中。例如13678789这个UID的信息,写入db_user_9数据库的table_user_8的表中。

8.2、优点

(1)不需要使用中间件对性能没有影响(2)通过代码控制,可定义性强

以上就是MySQL中如何使用DAL中间件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中如何使用DAL中间件

本文链接: https://lsjlt.com/news/56919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL中如何使用DAL中间件
    本篇文章给大家分享的是有关MySQL中如何使用DAL中间件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Atlas是由 Qihoo  ...
    99+
    2024-04-02
  • mysql中mycat 中间件如何使用
    本篇文章给大家分享的是有关mysql中mycat 中间件如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一,什么是mycat一个彻底开源...
    99+
    2024-04-02
  • Mysql如何使用Maxscale中间件
    这篇文章给大家介绍Mysql如何使用Maxscale中间件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 背景:[root@node4 ~]# mysql...
    99+
    2024-04-02
  • 如何使用和配置Mysql KingShard中间件
    如何使用和配置Mysql KingShard中间件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 ...
    99+
    2024-04-02
  • MySQL中如何使用中间变量
    MySQL中如何使用中间变量,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SET @countries=(SELECT&...
    99+
    2024-04-02
  • Node中如何使用Express中间件
    本文小编为大家详细介绍“Node中如何使用Express中间件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node中如何使用Express中间件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • nodejs中Express中间件如何使用
    本篇文章给大家分享的是有关nodejs中Express中间件如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Express是一个基于No...
    99+
    2024-04-02
  • ASP.NET Core中间件如何使用
    今天小编给大家分享一下ASP.NET Core中间件如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前言...
    99+
    2023-06-29
  • Scrapy的中间件如何使用
    这篇文章主要讲解了“Scrapy的中间件如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scrapy的中间件如何使用”吧!Scrapy 结构概述:一、下载器中间件(Downloader...
    99+
    2023-07-02
  • Mysql中如何使用时间查询
    这篇文章主要介绍了Mysql中如何使用时间查询的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql中如何使用时间查询文章都会有所收获,下面我们一起来看看吧。一、使用等号查询...
    99+
    2023-03-20
    mysql
  • VUE Nuxt.js中间件最佳实践:如何正确使用中间件
    1. 什么是中间件? 中间件是Vue Nuxt.js中的一种钩子函数,它可以在请求到达路由处理程序之前执行某些操作。中间件可以用于各种目的,例如: 身份验证:检查用户是否已登录,并拒绝未登录用户的访问。 授权:检查用户是否有权访问请求...
    99+
    2024-02-04
    Vue Nuxt.js 中间件 最佳实践
  • MySQL中如何使用NoSQL插件
    本篇文章为大家展示了MySQL中如何使用NoSQL插件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  MySql基本安装步骤:   ...
    99+
    2024-04-02
  • 如何使用分库分表中间件
    这篇文章主要介绍“如何使用分库分表中间件”,在日常操作中,相信很多人在如何使用分库分表中间件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用分库分表中间件”的疑惑有所帮...
    99+
    2024-04-02
  • 如何在mysql中使用时间戳精度
    如何在mysql中使用时间戳精度?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前段时间,将负责的应用的mysql-connector-ja...
    99+
    2024-04-02
  • MySQL中如何使用Connection-Control插件
    这期内容当中小编将会给大家带来有关MySQL中如何使用Connection-Control插件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先查看系统变量plugin_...
    99+
    2024-04-02
  • 如何使用ActiveMQ中间件方式发送邮件
    前言 在大型互联网公司中,一般都会搭建内部的消息服务平台,处理公司内部的各种消息服务,比如:发送邮件、发送短信、微信推送等,公司内部消息平台再去调用第三发消息平台。消息服务平台的接...
    99+
    2024-04-02
  • mysql中间件mycat怎么用
    这篇文章将为大家详细讲解有关mysql中间件mycat怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一,什么是mycat一个彻底开源的,面向企业应用开发的大数据库集...
    99+
    2024-04-02
  • Django中间件的使用
    中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应可以通过中间件,也就是说中间件可以处理request和resp...
    99+
    2023-01-30
    中间件 Django
  • node.js如何使用express-fileupload中间件实现文件上传
    本篇内容介绍了“node.js如何使用express-fileupload中间件实现文件上传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目...
    99+
    2023-06-20
  • Node.js网络框架koa compose中间件如何使用
    这篇文章主要介绍了Node.js网络框架koa compose中间件如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js网络框架koa compose中间件如何使用文章都会有...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作