亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

aerospike異步處理

2024-07-21 02:52:48
字體:
來源:轉載
供稿:網友

1、異步

1、集群在啟動時會初始化出異步線程連接隊列,其中cluster->async_max_conns_per_node為每個階段異步最大連接數,可配。

2、

1)先申請as_event_loop_capacity(為)個異步隊列空間

2)將最大連接數分配到每個異步隊列中。Max=最大連接/隊列個數,rem=0

3、初始化每個隊列。隊列為空

4、

 

 

//1、

as_node_create:

if (as_event_loop_capacity > 0) {

         node->async_conn_qs=

as_node_create_async_queues(cluster->async_max_conns_per_node);

         node->pipe_conn_qs= as_node_create_async_queues(cluster->pipe_max_conns_per_node);

}

 

//2、

as_node_create_async_queues(uint32_tmax_conns_per_node):

as_queue* queues = cf_malloc(sizeof(as_queue)* as_event_loop_capacity);

uint32_t max = max_conns_per_node /as_event_loop_capacity;

uint32_t rem = max_conns_per_node - (max *as_event_loop_capacity);

uint32_t capacity;

for (uint32_t i = 0; i <as_event_loop_capacity; i++) {

         capacity= i < rem ? max + 1 : max;

         as_queue_init(&queues[i],sizeof(void*), capacity);

}

3、

Bool as_queue_init(as_queue* queue,uint32_t item_size, uint32_t capacity)

{

         queue->data= cf_malloc(capacity * item_size);

        

         if(! queue->data) {

                   returnfalse;

         }

         queue->capacity= capacity;//capacity為每個隊列的容量

         queue->head= queue->tail = 0;//隊列為空

         queue->item_size= item_size;//item大學

         queue->total= 0;

         queue->flags= ITEMS_ON_HEAP;

         returntrue;

}

 

4、異步,連接server之前,需要先創建eventloop。該函數入參即為as_event_loop_capacity。

  每個event_loop有一個as_ev_worker線程

as_event_create_loops

 

5、aerospike_key_put_async異步接口,有個入參指定event_loop,

   調用aerospike_key_put_async_ex

5.1、異步接口會調用as_async_write_command_create,拼接CMD

         該cmd->event_loop為接口中傳進的值,如果不從接口傳入,采用輪詢方式分配

     cmd->event_loop= as_event_assign(event_loop);

                   returnevent_loop ? event_loop : as_event_loop_get();

5.2、異步接口拼接完cmd后,調用as_event_command_execute(cmd,err)去執行

5.3、as_event_command_execute執行方法:

         1)如果已經在該線程中,則直接執行

         2)否則保存到event_loop隊列,并喚起event_loop線程進行處理

   

   if (cmd->event_loop->thread == pthread_self()) {

                   //We are already in event loop thread, so start PRocessing.

                   as_event_command_begin(cmd);

         }

         else{

                   if(cmd->timeout_ms) {

                            //Store current time in first 8 bytes which is not used yet.

                            *(uint64_t*)cmd= cf_getms();

                   }

                  

                   //Send command through queue so it can be executed in event loop thread.

                   if(! as_event_send(cmd)) {

                            as_event_command_free(cmd);

                            returnas_error_set_message(err, AEROSPIKE_ERR_CLIENT, "Failed to queuecommand");

                   }

         }

 

as_event_send

         as_event_loop*event_loop = cmd->event_loop;

         pthread_mutex_lock(&event_loop->lock);

         boolqueued = as_queue_push(&event_loop->queue, &cmd);

         pthread_mutex_unlock(&event_loop->lock);

         if(queued) {

                   ev_async_send(event_loop->loop,&event_loop->wakeup);

         }

 

6、執行event的函數as_event_command_begin

6.1、獲取連接

         as_connection_statusstatus = cmd->pipe_listener != NULL ? as_pipe_get_connection(cmd) :as_event_get_connection(cmd);

6.2、執行

         if(status == AS_CONNECTION_FROM_POOL) {

                   as_ev_command_write_start(cmd);

         }

         elseif (status == AS_CONNECTION_NEW) {

                   as_ev_connect(cmd);//創建新連接后,進行連接

         }

6.3、獲取連接的方法:

         1)as_queue*queue = &cmd->node->async_conn_qs[cmd->event_loop->index];得到異步連接隊列

         2)如果隊列不為空,則從中pop一個連接(怎么不使用鎖保護?)

         3)否則新創建一個連接。這里有個限制。

                   每新創建一個連接queue->total++;

當queue->total>=queue->capicity的時候報連接耗盡錯誤。

6.4、

aerospike_key_put_async->aerospike_key_put_async_ex->as_async_write_command_create

中有個回調函數as_event_command_parse_header

6.5、該回調函數調用as_event_response_complete(cmd);將異步新創建的連接放到池子里

         as_event_response_complete->as_event_put_connection


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩有码在线播放| 国产精品av电影| 国产视频精品va久久久久久| 亚洲欧洲国产一区| 亚洲午夜久久久久久久| 久久成人精品一区二区三区| 欧美精品在线网站| 中文字幕亚洲综合| 色婷婷综合久久久久| 日韩av免费在线播放| 国内精品久久久| 国产偷亚洲偷欧美偷精品| 久久九九国产精品怡红院| 亚洲欧美另类中文字幕| 亚洲精品免费在线视频| 亚洲精品999| 亚洲一区二区三区乱码aⅴ| 久久av在线看| 亚洲男人天堂2024| 深夜福利国产精品| 国产欧美日韩免费看aⅴ视频| 国产精品色婷婷视频| 欧美成人精品h版在线观看| 久久影视三级福利片| 九九精品视频在线观看| 国产欧美一区二区三区四区| 国产精品永久在线| www.亚洲免费视频| 欧美中文字幕第一页| 精品一区二区三区三区| 精品丝袜一区二区三区| 成人做爽爽免费视频| 日韩国产欧美区| 亚洲无亚洲人成网站77777| 久色乳综合思思在线视频| 在线免费观看羞羞视频一区二区| 91亚洲国产成人久久精品网站| 欧美亚洲成人网| 欧美在线观看网址综合| 欧美日韩美女在线观看| 欧美日产国产成人免费图片| 国产精品久久久久999| 欧美丝袜一区二区三区| 亚洲护士老师的毛茸茸最新章节| 日韩欧美黄色动漫| 成人黄在线观看| 亚洲午夜性刺激影院| 欧美在线视频一二三| 国产免费一区二区三区在线能观看| 久久精品视频在线观看| 亚洲free性xxxx护士hd| 亚洲精品日韩久久久| 国产一区二区三区18| 一夜七次郎国产精品亚洲| 成人久久精品视频| 日韩欧美中文字幕在线播放| 清纯唯美亚洲激情| 亚洲精品国产精品久久清纯直播| 一区二区欧美在线| 伊人久久免费视频| 午夜免费日韩视频| 国产精品久久久久久久久久新婚| 亚洲va码欧洲m码| 中文字幕精品久久| 亚洲欧美成人在线| 亚洲欧美一区二区精品久久久| 久久国产精品首页| 日韩美女视频免费看| 欧美激情第6页| 欧美性极品xxxx娇小| 国产成人精品午夜| 久热精品视频在线观看一区| 国产精品www色诱视频| 俺去了亚洲欧美日韩| 久久人人爽人人爽人人片av高请| 在线看国产精品| 国产精品9999| 日韩的一区二区| 国产精品va在线播放我和闺蜜| 日韩av免费在线看| 欧美另类老肥妇| 日韩欧美一区视频| 日韩精品黄色网| 日韩欧美成人区| 久久久久久久国产精品| 精品无人国产偷自产在线| 欧美韩国理论所午夜片917电影| 欧美激情免费观看| 亚洲深夜福利网站| 蜜月aⅴ免费一区二区三区| 成人亚洲综合色就1024| 日韩中文视频免费在线观看| 亚洲成av人片在线观看香蕉| 国产精品狼人色视频一区| 精品性高朝久久久久久久| 日韩在线激情视频| 亚洲石原莉奈一区二区在线观看| 久久久国产一区二区三区| 国产精品一区二区三区免费视频| 九九热这里只有精品免费看| 久青草国产97香蕉在线视频| 亚洲第一在线视频| 中文日韩在线观看| 国产精品高清在线观看| 亚洲天堂av电影| 亚洲人成网站免费播放| 久久精品国产欧美亚洲人人爽| 欧美精品videos性欧美| 欧美在线观看网站| 国产免费久久av| 国产精品美女av| 成人免费在线视频网站| 夜夜嗨av一区二区三区免费区| 蜜月aⅴ免费一区二区三区| 亚洲国产精品99| 欧美人成在线视频| 亚洲女人天堂色在线7777| 97精品国产97久久久久久春色| 亚洲精品美女在线观看播放| 欧美色videos| 毛片精品免费在线观看| 欧美精品久久一区二区| 色噜噜亚洲精品中文字幕| 欧美精品激情在线| 精品久久久久久国产91| 国产精品久久久久久久午夜| 日本高清视频精品| 久久久久久美女| 国产精品久久99久久| 日韩影视在线观看| 亚洲欧美日韩一区二区三区在线| 久久久久久久国产精品| 久久久久久久久中文字幕| 日韩av在线看| 欧美激情亚洲精品| 精品日韩中文字幕| 欧美成人午夜视频| 亚洲女人被黑人巨大进入| 国产香蕉精品视频一区二区三区| 久久久国产精品免费| 亚洲男人天堂视频| 国产精品a久久久久久| 亚洲韩国青草视频| 欧美日韩亚洲一区二| 欧美黄色三级网站| 久久久精品国产| 久久久国产精品亚洲一区| 色悠悠久久久久| 欧美精品www| 欧美电影在线观看| 国产香蕉一区二区三区在线视频| 国产高清在线不卡| 日韩经典中文字幕| 欧美另类第一页| 午夜精品蜜臀一区二区三区免费| 日韩免费av在线| 日韩在线观看电影| 国产精品久久久久久久久免费| 国产精品视频内| 亚洲一区二区中文字幕| 亚洲成在人线av| 亚洲电影免费观看| 欧美洲成人男女午夜视频| 欧美成人剧情片在线观看|