zoukankan      html  css  js  c++  java
  • dbproxy-id生成器

    id生成器使用的是snowflake, 需要执行 snowflake_init(region_id, worker_id); 而region_id和worker_id是在配置文件中配置的

    network_mysqld_proxy_plugin_apply_config
    位置plugins/proxy/proxy-plugin.c

    int network_mysqld_proxy_plugin_apply_config(chassis *chas, chassis_plugin_config *oldconfig) {
        ...
        int region_id = 0;
        int worker_id = 0;
        gboolean is_complete = FALSE;
        gchar *id_generate = g_strdup(config->id_generate);
    
    
        if ( (region_id = strtoll(strsep(&id_generate, ":"), NULL, 10)) != NULL) {
             g_log_dbproxy(g_message, "##### is %s", id_generate);
            if ( (worker_id = strtoll(strsep(&id_generate, ":"), NULL, 10)) != NULL) {
                is_complete = TRUE;
            }
        }
        if (is_complete) {
             snowflake_init(region_id, worker_id);
             g_log_dbproxy(g_message, "id_generate is %s, region_id is %d, worker_id is %d", config->id_generate, region_id, worker_id);
        } else {
            g_log_dbproxy(g_critical, "id_generate is %s, region_id is %d, worker_id is %d", config->id_generate, region_id, worker_id);
        }
        ...
    }
  • 相关阅读:
    945.使数组唯一的最小增量
    用两个栈实现队列
    MySQL的约束
    数据库的设计
    约束
    DQL查询
    数据库的基本概念
    SQL基础语法
    MySQL基础
    java的注解和反射
  • 原文地址:https://www.cnblogs.com/taek/p/8353744.html
Copyright © 2011-2022 走看看