集群
集群功能(包含在 SmartEDB 高可用性中)通过指定以下描述的参数进行配置。
关于概况,请参阅集群功能页面。
参数初始化
以下代码展示了结构体mco_cluster_params_t被初始化并传递给函数 mco_cluster_db_open()
:
typedef struct mco_cluster_params_t_
{
uint4 rtrans_commit; // 远程事务完成数量
mco_cluster_node_params_t *nodes;
uint2 n_nodes;
uint2 node_id;
uint2 conn_pool_factor;
uint4 sync_msg_objects; // 同步期间每条消息中的对象最大数量
uint4 sync_msg_size; // 同步期间消息的最大字节大小
mco_cluster_transsize_f transsize_callback;
mco_cluster_check_quorum_f check_quorum_func;
void *check_quorum_param;
mco_cluster_window_t window;
mco_cluster_notifying notifying_callback;
void *notifying_context;
mco_cluster_connection_context_f connect_ctx_callback;
void *connect_ctx_param;
uint4 cl_sndbuf;
uint4 cl_rcvbuf;
uint4 mode_mask;
void* stream_handle;
mco_stream_read input_stream_reader;
union {
mco_clnw_tcp_params_t tcp;
mco_clnw_mpi_params_t mpi;
} nw;
} mco_cluster_params_t, * mco_cluster_info_h;
集群信息
集群信息结构定义如下:
typedef struct mco_cluster_info_t_
{
uint4 rtrans_commit; /* 远程事务完成的数量 */
uint4 rtrans_rback; /* 远程事务中止的数量 */
uint8 bytes_sent; /* 已发送数据的总和(以字节为单位) */
uint8 bytes_recv; /* 已接收数据的总和(以字节为单位)*/
uint2 n_active_nodes; /* 当前活动的集群节点数量 */
uint2 node_id; /* 此节点 ID */
} mco_cluster_info_t, * mco_cluster_info_h;
事务窗口
集群事务窗口结构定义以下:
typedef struct mco_cluster_window_t_
{
uint4 bsize; /* 字节数 */
uint4 length; /* 事务中 */
timer_unit timeout;
} mco_cluster_window_t;
通道参数
网络元素 nw
允许应用程序指定 TCP 或 MPI 通道作为网络协议。以下结构用于指定特定通道的网络设置。
TCP
typedef struct mco_clnw_tcp_params_t_
{
uint4 so_sndbuf;
uint4 so_rcvbuf;
timer_unit connect_timeout;
timer_unit connect_interval;
timer_unit keepalive_time;
uint4 keepalive_probes;
MCO_SOCK_DOMAIN socket_domain;
int compression_level;
void *ssl_params;
} mco_clnw_tcp_params_t;
MPI
typedef struct mco_clnw_mpi_params_t_
{
uint4 flags;
void *communicator;
} mco_clnw_mpi_params_t;
集群节点参数
集群节点参数结构定义如下:
#define MCO_MAX_CLUSTER_ADDRESS_LEN 64
typedef struct mco_cluster_node_params_t_ {
char addr[MCO_MAX_CLUSTER_ADDRESS_LEN];
uint4 qrank;
} mco_cluster_node_params_t;
集群节点信息
集群节点信息结构定义如下:
typedef struct mco_cluster_node_info_t_ {
char addr[MCO_MAX_CLUSTER_ADDRESS_LEN];
uint4 qrank;
uint2 node_id;
} mco_cluster_node_info_t;