最近,公司要求將組內的thrift客戶端元件推廣至公司內使用。基本的要求如下:
1.高可用以上為公司要求,但是在實際業務使用中,我們發現以下幾點也很重要:2.整合名稱服務,也就配置檔案支援服務發現
3.解耦,客戶端和高可用元件解耦,簡單來說就是,如果以後要切換其他的高可用元件,改動要盡可能的小;同理,如果要基於目前的高可用部分實現其他的客戶端例如mysql,redis也要求能夠輕鬆支援。
1.支援對thrift業務層面的ping校驗針對上述要求,我們來一步一步推理,實現乙個易用高可用thrift池化客戶端。2.客戶端隔離策略
3.能夠友好的支援任何thrift協議
首先,我們把專案分解成三塊:
1.cluster:高可用的邏輯層乙個高可用元件應該包含一下功能:2.client:客戶端的實現層
3.registry:服務註冊發現層
1.容災策略所以基本的框架如下:2.多種負載均衡策略
3.服務自動熔斷
─com └─zhizus└─forest
├─cluster
│ ├─ha
│ └─loadbalance
├─registry
│ ├─confcenter
│ └─s2s
└─utils
由於,我們是需要將高可用部分如client層解耦,所以,我們來建立乙個client的描述類,loadbalance引用的並不是真正的client,而是client的描述類,而這個描述類針對所有的客戶端都是大同小異的。
如是便有了這樣乙個serverinfo物件:
public final class serverinfo
高可用性Cache池
前段時間開發上線了乙個cache池,使用雙層cache池冗餘,宕掉一台機器的cache失效從1 n降到1 n 2。如果2層cache池分開機器部署,失效率將會降到0。上線不久剛好碰上一次宕機事故,效果很好。該應用有16臺cache伺服器,高峰時每秒訪問約20萬次,平時的命中率約為99.95 宕掉一台...
nginx Nginx的高可用實現
1.兩台伺服器 2,都安裝上nginx 3,以及keeplived yum install keepalived y安裝之後在etc keepalived 有檔案keepalived.conf if ps c nginx no header wc 1 eq 0 then killall keepal...
Keepalived Nginx實現高可用(HA)
keepalived的ha分為搶占模式和非搶占模式,搶占模式即master從故障中恢復後,會將vip從backup節點中搶占過來。非搶占模式即master恢復後不搶占backup公升級為master後的vip。下面分別介紹centos7下搶占模式和非搶占模式的配置方式 vipip 主機名nginx埠...