Atlas
文章平均质量分 76
wssg3620625
这个作者很懒,什么都没留下…
展开
-
Atlas的安装及配置
一、 Atlas简介Atlas是Qihoo 360 Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。主要功能: 1、读写分原创 2014-03-14 17:45:18 · 7591 阅读 · 0 评论 -
Atlas权重测试中的bug调试
一、 问题背景Atlas对slave进行负载均衡,每一台slave都有一个权重值,权重越大,负载的读请求越多。负载均衡的算法比较巧妙,代码如下: guint max_weight = rwsplit->max_weight; guint cur_weight = rwsplit->cur_weight; guint next_ndx =原创 2014-07-10 20:09:31 · 1110 阅读 · 0 评论 -
Atlas源码剖析(十一)
读写分离和负载均衡原创 2014-04-09 22:19:06 · 1080 阅读 · 0 评论 -
Atlas源码剖析(十)
SQL语句的解析和自动分表解析SQL语句:原创 2014-04-09 14:45:42 · 1232 阅读 · 0 评论 -
Atlas源码剖析(六)
日志管理基本数据结构:typedef struct { GLogLevelFlags min_lvl; //glib中对应的日志级别,初始为critical, //后改赋为message gchar *log_filename; //日志文件名free gint log_file_fd; //打开的原创 2014-03-26 16:19:47 · 1257 阅读 · 0 评论 -
Atlas源码剖析(九)
Atlas主流程处理——状态转移在接收了client的请求后,Atlas的主线程会通过调用network_mysqld_con_accept初始化连接,并通过调用chassis_event_add来选择通知某一个工作线程来执行主流程处理;接收到通知的工作线程会调用network_mysqld_con_handle来执行主流程处理,状态的转移图如下所示:Atlas对mysql p原创 2014-04-01 16:06:53 · 1245 阅读 · 0 评论 -
Atlas源码剖析(八)
Atlas IP过滤Atlas实现了IP过滤,通过配置参数client-ips来指定有权限访问的IP。client-ips的配置如下所示,可以是精确IP,也可以是IP段,以逗号分隔,若不设置client-ips则允许所有IP连接,否则只允许列表中的IP连接:client-ips = 127.0.0.1, 192.168.1Atlas把配置的IP转换成整数,放入hash表中:原创 2014-04-01 15:22:10 · 1273 阅读 · 0 评论 -
Atlas源码剖析(五)
后台连接池的管理Atlas为每个后台设置了一个pools,pools是一个数组,每一个线程都对应pools里的一个pool,一个pool管理着一个线程跟这个后台的连接。主要的数据结构如下:struct chassis_private { lua_scope *sc; network_backends_t *backends; //管理后台组};原创 2014-03-20 15:58:00 · 1335 阅读 · 0 评论 -
Atlas源码剖析(四)
线程模型基本数据结构struct chassis_event_threads_t {GPtrArray *event_threads; //线程组,用来保存各个线程;GAsyncQueue *event_queue; //事件队列,用来保存connection结构;};typedef struct {chassis *chas; //chassis指针 //i原创 2014-03-19 09:52:52 · 1250 阅读 · 0 评论 -
Atlas源码剖析(三)
keepalive进程的开启Atlas调用chassis_unix_proc_keepalive函数来keep process alive。调用fork创建子进程,其中子进程直接返回,处理接下来的任务,父进程将接收到的SIGINT、SIGTERM、SIGHUP、SIGUSR1和SIGUSR2信号发送给子进程进行处理,若系统支持wait4则调用wait4等待子进程结束,否则调用waitpid原创 2014-03-18 09:58:41 · 1383 阅读 · 0 评论 -
Atlas架构及相关功能介绍
一、 Atlas的整体架构Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。Atlas的整体架构,可参考下面原创 2014-03-14 17:48:38 · 3314 阅读 · 0 评论 -
Atlas源码剖析(二)
以守护模式启动进程Atlas中通过调用chassis_unix_daemonize函数来开启守护模式。(a) 忽略SIGTTOU、SIGTTIN和SIGTSTP信号,忽略来自终端的信号。(b) 调用fork创建子进程,然后终止父进程。这样做实现了以下几点:第一,如果该守护进程是作为一条简单shell命令启动的,那么父进程的终止使得shell认为这条命令已经执行完毕;第二,子进程原创 2014-03-18 09:51:00 · 1289 阅读 · 1 评论 -
Atlas源码剖析(七)
后台状态检测基本结构体:typedef struct {network_address *addr; //后台地址 backend_state_t state; /**< UP or DOWN */ //后台的状态 backend_type_t type; /**< ReadWrite or ReadOnly */ //后台的类型 GP原创 2014-03-27 17:24:38 · 1393 阅读 · 0 评论 -
Atlas源码剖析(一)
信号设置在设置各种配置参数之前,如果支持sigaction,则使用sigaction来设置SIGSEGV信号,指定处理函数调用g_on_error_stack_trace获取相关的堆栈信息后,调用abort退出程序。此信号在程序结束前进行清除,修复默认处理方式。#ifdef HAVE_SIGACTION /* register the sigsegv interceptor原创 2014-03-18 09:04:52 · 2179 阅读 · 0 评论