美文网首页
Cetus 调研

Cetus 调研

作者: 单车变摩托_0463 | 来源:发表于2018-11-13 15:52 被阅读0次

简介

Cetus是由C语言开发的MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的水平扩展和高可用。

关键特性

  • 支持SQL读写分离
  • 支持原生MySQL协议,对客户端透明(无感知)
  • 支持状态监控
  • 支持MGR
  • 支持黑白名单
  • 支持主从延迟检测(自动切换读到主)

针对我们关心的问题,详细说明

  • 统一接入入口,客户端可以像连接mysql一样连接到Cetus
  • 屏蔽读写分离,Cetus会解析并判断sql该转发到主库还是从库
  • 故障转移
    • 主库宕机时
      • 当主库地址配置为dns:MHA切换dns指向从库,Cetus发现到主库的连接不通,会重新解析dns,然后连接到新的uri
      • 当主库地址配置为ip:通过MHA脚本发送命令update backends到Cetus,切换主/从库地址
    • 从库宕机时,请求会被转发至另一个已配置的从库地址,当所有从库地址都不可用时,会转发到主库
    • Cetus宕机时,通过部署多台Cetus保证高可用
  • 可运维性
    • 支持管理命令(没有web页面)
    • 支持动态修改配置

Cetus不能做哪些事

  • 不支持批量sql语句的执行
  • 不支持TLS
  • 不支持多租户
  • 单进程工作模式,建议在docker容器使用
  • 只支持linux系统
  • 不支持客户端ctl+c操作,即不支持kill query操作
  • set命令的有限支持,不支持global级别的set命令,支持部分session级别的set命令
  • sql语句的有限支持,包括以下几点:
    • 不支持将LAST_INSERT_ID 嵌套在INSERT或者其他的语句中
    • 不支持客户端的change user命令

举例一些配置

Cetus 共3个配置文件,包括用户配置文件(users.json)、变量处理配置文件(variables.json)和启动配置文件(proxy.conf)

users.json

用来配置用户登陆信息

{
    "users":[
        {
            "user": "XXXX",
            "client_pwd":   "XXXXXX",
            "server_pwd":   "XXXXXX"}, 
            {
            "user": "XXXX",
            "client_pwd":   "XXXXXX",
            "server_pwd":   "XXXXXX"
        }
    ]
}
  • user的值是用户名
  • client_pwd的值是前端登录Cetus的密码
  • server_pwd的值是Cetus登录后端的密码。

variables.json

用来支持会话级系统变量的设置,可以通过在variables.json配置允许发送的值和静默处理的值

{
 "variables": [
   {
     "name": "sql_mode", # 会话级系统变量的名称
     "type": "string-csv", # 变量的类型,可以为string或string-csv逗号分隔的字符串值
     "allowed_values": # 指定允许设定的变量值,可以使用通配符*表示此变量设任意值都允许
     ["STRICT_TRANS_TABLES",
       "NO_AUTO_CREATE_USER",
       "NO_ENGINE_SUBSTITUTION"
     ]
   },
   {
     "name": "connect_timeout",
     "type": "string",
     "allowed_values": ["*"],
     "silent_values": ["10", "100"] # silent_values的值是指定静默处理的值,可以使用通配符*
   }
 ]
}

proxy.conf

[cetus]
# Loaded Plugins
plugins=proxy,admin #加载的插件,读写分离插件、管理插件

# Defines the number of worker processes. 
worker-processes=4 # 工作进程数量为4

# Proxy Configuration
proxy-address=127.0.0.1:1234 # 客户端访问地址
proxy-backend-addresses=127.0.0.1:3306 # 读写(主库)节点,可配置多个,可配置dns
proxy-read-only-backend-addresses=127.0.0.1:3307 #只读节点,可配置多个,可配置dns

# Admin Configuration 管理模块的配置
admin-address=127.0.0.1:5678
admin-username=admin
admin-password=admin

# Backend Configuration
default-db=test # 默认数据库,当连接未指定db时,使用的默认数据库名称
default-username=dbtest # 默认登陆用户名,在Proxy启动时自动创建连接使用的用户名

# File and Log Configuration
log-file=cetus.log
log-level=debug

读写分离

proxy-address=192.168.222.175:13306
proxy-backend-addresses=192.168.222.172:3306 
proxy-read-only-backend-addresses=192.168.222.173:3306,192.168.222.174:3306 

相关文章

  • Cetus 调研

    简介 Cetus是由C语言开发的MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与M...

  • 2017.1.10

    今日学习: 日志系统 和 react基础学习 和 vela 日志系统:cetus 是一个将源位置的日志通过filt...

  • 【轻知识】用cetus代理 mysql 用 etcd、confd

    实验机器:阿里云ECS 1核 2g centos 8 功能需求 cetus配置文件根据etcd配置代理mysql主...

  • 网易中间件Cetus开源啦

    Cetus的诞生 网易电商近年来业务呈现爆发式增长,原架构环境下,数据库的性能和吞吐量已无法应对其带来的巨大压力,...

  • 关于调研

    按照调研是否为调研者独立完成,我把调研分为两类:独立调研和非独立调研。 独立调研,即调研者自己寻找相关信息,看自己...

  • 产品入门part6 - 调研报告

    01 调研的类别 调研分为功能点调研和产品调研 功能调研:重业务流程、交互体验、突出亮点。 产品调研:重产品结构、...

  • 从用户到产品,一款贴近用户的互联网产品设计必须经历的6个阶段(一

    为什么要做市场调研,很简单,一句话,为了得到用户画像。市场调研包括了行业调研、广告调研、竞争情报调研、品牌调研、消...

  • 产品调研方法

    要清晰知道调研目的,调研对象,需要收集的数据,需要调研达到什么效果。 调研方法可以: 1.文案调研 主要是在网上资...

  • 独立产品的调研

    如何做独立产品的调研 1.功能调研和产品调研的区别? 2.调研报告的误区 产品调研和功能调研出发点都是一样的,都注...

  • Java项目开发流程

    1.项目启动阶段: *项目描述、*项目目标 *项目实施: -项目调研(业务调研,技术调研,编写项目调研报告) -工...

网友评论

      本文标题:Cetus 调研

      本文链接:https://www.haomeiwen.com/subject/sgdlfqtx.html