nginx ip hash 演算法的實現

2021-06-03 07:51:28 字數 2051 閱讀 2980

感覺nginx的 ip hash 每次hash後的值都變化了啊,不會總是路由到一台機器,這裡的根據ip hash 豈不是沒有意義了?

//這裡設定peer的初始化函式為ngx_http_upstream_init_ip_hash_peer

//公共的peer初始化函式初始化下

//這裡的選擇演算法為ngx_http_upstream_get_ip_hash_peer

//hash初始化為 iphp->hash,每次迴圈後都變更

hash = iphp->hash;

for ( ; ; )

p = hash % iphp->rrp.peers->number;

n = p / ( 8 * sizeof ( uintptr_t ) );

m = (uintptr_t) 1 << p % ( 8 * sizeof ( uintptr_t ) );

if ( !( iphp->rrp.tried[ n ] & m ) )

if ( now - peer->accessed > peer->fail_timeout )

}//掛掉了,則設定嘗試陣列,tries減少1

iphp->rrp.tried[n] |= m;

/* ngx_unlock_mutex(iphp->rrp.peers->mutex); */

pc->tries--;

}//遞增失敗嘗試次數超過20了,則用round robin選擇乙個

//沒超過20,則接著嘗試

if ( ++iphp->tries >= 20 )

}// ok了才會走到這裡

iphp->rrp.current = p;

pc->sockaddr = peer->sockaddr;

pc->socklen = peer->socklen;

pc->name = &peer->name;

/* ngx_unlock_mutex(iphp->rrp.peers->mutex); */

//設定嘗試過了,然後設定hash值,get_rr_peer會自動清0 tried陣列

Perona Malik 演算法Python實現

最近正好在學習關於影象處理的東西,需要用到pm perona malik 演算法,所以就把自己的一些理解和 貼上來,希望能跟大家一起 pm演算法的具體原理可以網上查閱相關資料或者相關書籍,這裡只是簡要介紹大概的實現思路 一般而言,對乙個影象進行提取特徵之前,需要進行降噪濾波處理。最常用的應該是高斯濾...

Miller Rabin演算法 Python實現

用python實現了miller rabin的素性檢驗演算法 import random deflargeprime generate bit 1024 print generating large prime.i 1while true num random.randrange 2 bit 1 2...

LeetCode初級演算法的Python實現 鍊錶

之前沒有接觸過python編寫的鍊錶,所以這裡記錄一下思路。這裡前面的 是和leetcode中的一樣,因為做題需要呼叫,所以下面會給出。首先定義鍊錶的節點類。鍊錶節點 class listnode object def init self,x self.val x 節點值 self.next non...