摘要:并根據(jù)調(diào)用方指定的負(fù)載均衡策略將被調(diào)節(jié)點(diǎn)信息返給調(diào)用方。并且被調(diào)方信息緩存負(fù)載均衡以及失效節(jié)點(diǎn)剔除都在中完成。
作者: 鐘科
一.TSeer簡(jiǎn)介TSeer是一套服務(wù)注冊(cè)發(fā)現(xiàn)容錯(cuò)的方案,是對(duì)Tars名字服務(wù)功能的輕量化。在騰訊瀏覽器、應(yīng)用寶、管家、手機(jī)書城、騰訊文學(xué)、廣點(diǎn)通等眾多業(yè)務(wù)中廣泛采用,目前日均承載百億級(jí)的請(qǐng)求量。
TSeer輕巧靈便,對(duì)業(yè)務(wù)的侵入性低,非tars服務(wù)亦可無縫接入。在服務(wù)發(fā)現(xiàn)的核心功能之上,Tseer還支持多種負(fù)載均衡算法,提供可靠的故障容錯(cuò)策略,可有效解決業(yè)務(wù)跨地區(qū)跨機(jī)房調(diào)用等難題,極大提升服務(wù)的可用性和調(diào)用質(zhì)量,是微服務(wù)框架中優(yōu)秀的名字服務(wù)解決方案。
TSeer擁有web管理界面和API接入兩種方式可供用戶根據(jù)需求自由選擇,通過代理節(jié)點(diǎn)和代理服務(wù)器機(jī)制為需要頻繁發(fā)布變更的業(yè)務(wù)提供透明的服務(wù)發(fā)現(xiàn)功能,學(xué)習(xí)成本很低,操作也很方便,對(duì)于業(yè)務(wù)維護(hù)人員十分友好。
二.研發(fā)背景在傳統(tǒng)的單體式應(yīng)用中,變更發(fā)布相對(duì)較少,系統(tǒng)中的網(wǎng)絡(luò)位置也很少變化,偶爾的變更也可以通過手動(dòng)更改配置的方式來應(yīng)對(duì)。但是在當(dāng)前海量服務(wù)的大環(huán)境下,這種架構(gòu)已經(jīng)無法高效穩(wěn)定的支撐高速增長(zhǎng)的業(yè)務(wù)。越來越龐大的分布式服務(wù)集群和微服務(wù)框架已經(jīng)逐漸成為主流。
但是新型架構(gòu)為業(yè)務(wù)提供更好支撐的同時(shí),頻繁的發(fā)布更新與動(dòng)態(tài)伸縮也導(dǎo)致了網(wǎng)絡(luò)位置的頻繁變化,在這種情況下業(yè)務(wù)維護(hù)人員手動(dòng)更改配置這種大規(guī)模重復(fù)性工作不僅增大了出錯(cuò)的風(fēng)險(xiǎn),其低效也會(huì)限制業(yè)務(wù)的高速發(fā)展。往往配置還沒改完,新的變更就需要發(fā)布了。所以就必須要一個(gè)自動(dòng)化的服務(wù)發(fā)現(xiàn)工具來解決這些問題。
然而這些也并不是問題的全部。在保證訪問成功的前提下,響應(yīng)時(shí)間作為服務(wù)質(zhì)量中最重要的指標(biāo),是影響業(yè)務(wù)發(fā)展最關(guān)鍵的一環(huán)。多業(yè)務(wù)集之間復(fù)雜的調(diào)用關(guān)系再加上跨地區(qū)跨網(wǎng)絡(luò)調(diào)用等其他因素,響應(yīng)時(shí)間達(dá)不到預(yù)期是持續(xù)困擾整個(gè)業(yè)務(wù)發(fā)展周期的棘手問題。與此同時(shí),無論是采用物理機(jī)還是虛擬機(jī),節(jié)點(diǎn)掛掉導(dǎo)致的不可用時(shí)有發(fā)生,如何有效容錯(cuò)也是亟待解決的問題。
基于這些問題,我們開發(fā)了TSeer。
整個(gè)Tseer的結(jié)構(gòu)分為四部分:TseerServer、業(yè)務(wù)客戶端(主調(diào))、業(yè)務(wù)服務(wù)端(被調(diào))、web管理。
? TseerServer
TseerServer是整個(gè)Tseer的樞紐與核心模塊。 當(dāng)新節(jié)點(diǎn)上線時(shí),需要先通過WEB管理平臺(tái)在Tseer服務(wù)集群注冊(cè),將其網(wǎng)絡(luò)位置信息記錄在Tseer系統(tǒng)中。當(dāng)需要對(duì)節(jié)點(diǎn)進(jìn)行下線或者其他修改時(shí),也需要在WEB管理平臺(tái)就行相關(guān)操作。被調(diào)節(jié)點(diǎn)也會(huì)定時(shí)上報(bào)心跳給TseerServer,server端會(huì)屏蔽心跳超時(shí)的節(jié)點(diǎn)使其無法被調(diào)用。
? 業(yè)務(wù)客戶端
業(yè)務(wù)客戶端是需要調(diào)用其他服務(wù)的節(jié)點(diǎn),稱之為主調(diào),是服務(wù)發(fā)現(xiàn)功能的使用者。 Tseer為業(yè)務(wù)客戶端提供了:安裝Agent與API調(diào)用兩種方式來從TseerServer獲得需要調(diào)用的服務(wù)(被調(diào))的地址來完成調(diào)用。
? 業(yè)務(wù)服務(wù)端
業(yè)務(wù)服務(wù)端是需要被調(diào)用的節(jié)點(diǎn),稱之為被調(diào),是服務(wù)的提供者。 當(dāng)新節(jié)點(diǎn)上線時(shí),被調(diào)需要在TseerServer注冊(cè)。不論同一個(gè)被調(diào)服務(wù)集群有多少個(gè)節(jié)點(diǎn),注冊(cè)時(shí)該服務(wù)集群都需要注冊(cè)一個(gè)統(tǒng)一的名字。主調(diào)在調(diào)用邏輯中只需要寫明需要調(diào)用的服務(wù)的名字,Tseer會(huì)根據(jù)被調(diào)名字來返回被調(diào)地址。當(dāng)被調(diào)需要擴(kuò)容時(shí),只需要把新節(jié)點(diǎn)加在該服務(wù)對(duì)應(yīng)的名字下面即可。業(yè)務(wù)人員無需管理被調(diào)集群下繁多的服務(wù)節(jié)點(diǎn)信息,十分方便。
? Web管理
業(yè)務(wù)信息及節(jié)點(diǎn)路由信息的增刪改查都是通過web管理界面操作,簡(jiǎn)便快捷直觀。甚至agent安裝包都可以通過web平臺(tái)更新發(fā)布。詳細(xì)使用方式可參考github上TSeer項(xiàng)目的使用文檔。
1.負(fù)載均衡
當(dāng)同一業(yè)務(wù)集群中某些節(jié)點(diǎn)被頻繁調(diào)用而另一些節(jié)點(diǎn)沒有承擔(dān)合理的負(fù)載時(shí),不僅業(yè)務(wù)的服務(wù)質(zhì)量和響應(yīng)時(shí)間會(huì)大幅下降,同時(shí)也會(huì)造成資源的浪費(fèi)。
Tseer系統(tǒng)中,當(dāng)主調(diào)發(fā)起調(diào)用時(shí),會(huì)針對(duì)被調(diào)名字下所有可用節(jié)點(diǎn)為調(diào)用提供四種負(fù)載均衡方式來保障各個(gè)節(jié)點(diǎn)的合理負(fù)載,分別是
? 輪詢
? 隨機(jī)
? 靜態(tài)權(quán)重
? 一致性哈希
用戶還可以使用調(diào)用分組的方式來自定義負(fù)載均衡實(shí)現(xiàn),調(diào)用分組會(huì)在下文中提到。
2.故障容錯(cuò)
為了解決節(jié)點(diǎn)故障導(dǎo)致的業(yè)務(wù)不可用與服務(wù)質(zhì)量降低,Tseer還提供了可靠的故障容錯(cuò)機(jī)制。
當(dāng)主調(diào)進(jìn)行一次調(diào)用之后,會(huì)將調(diào)用結(jié)果上報(bào)。如果調(diào)用失敗Tseer會(huì)暫時(shí)將該節(jié)點(diǎn)屏蔽來避免故障節(jié)點(diǎn)被反復(fù)調(diào)用,Tseer會(huì)定時(shí)探測(cè)被屏蔽的節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)故障節(jié)點(diǎn)恢復(fù)服務(wù)時(shí),會(huì)重新將其激活。
對(duì)于任意被調(diào)節(jié)點(diǎn),滿足下列條件之一則屏蔽該節(jié)點(diǎn):
1.在一個(gè)檢測(cè)周期(60秒)內(nèi)調(diào)用失敗次數(shù)達(dá)到2次,且調(diào)用錯(cuò)誤數(shù)占總調(diào)用次數(shù)的50%以上
2.在5秒內(nèi)連續(xù)調(diào)用失敗5次以上
對(duì)于被屏蔽的節(jié)點(diǎn)Tseer Agent/Api將每隔30秒對(duì)已屏蔽的節(jié)點(diǎn)進(jìn)行重試。
同時(shí)當(dāng)Tseer故障時(shí),主調(diào)也能根據(jù)緩存信息繼續(xù)調(diào)用。
3.調(diào)用優(yōu)化
Tseer為調(diào)用邏輯提供IDC分組、Set分組、All三種方式來解決跨地區(qū)調(diào)用等問題。
? All
為主調(diào)提供所有可用被調(diào)節(jié)點(diǎn)地址
? IDC分組
IDC分組可以近似的看作就近接入。
該方法按照兩個(gè)層次進(jìn)行劃分。第一個(gè)是物理小組,是最小的組調(diào)度單位,即按照節(jié)點(diǎn)所在的機(jī)房或者區(qū)域分配統(tǒng) 一的組名。第二個(gè)是物理小組組成的邏輯組,可以理解為按照更大的區(qū)域來劃分的統(tǒng)一的組名。
針對(duì)IDC的邏輯分組,Tseer還定義了調(diào)用優(yōu)先級(jí)策略。即部分邏輯組不可用時(shí),會(huì)按照優(yōu)先級(jí)策略返回可用被調(diào)節(jié)點(diǎn)地址列表。
? Set分組
IDC分組主要是在區(qū)域概念上去劃分分組,實(shí)現(xiàn)就近訪問策略,在后臺(tái)服務(wù)架構(gòu)中,業(yè)務(wù)規(guī)模達(dá)到一定數(shù)量時(shí),如果要對(duì)某幾個(gè)服務(wù)節(jié)點(diǎn)實(shí)現(xiàn)根據(jù)容量、灰度,分區(qū)域管理的隔離控制,IDC分組是無法滿足的,而Set分組則是對(duì)IDC分組的再細(xì)化。
Set分組的命名規(guī)則為: Set名.Set地區(qū).Set組。其中Set組是最小區(qū)分單元的名稱,支持通配符*,表示Set地區(qū)下的所有分組。比如0,1,2,3,4或者a,b,c,d。
Set分組的調(diào)用邏輯如下:
1.主調(diào)(客戶端)和被調(diào)(服務(wù)端)都啟用了Set分組,并且Set名要一致才認(rèn)為是啟用同SET內(nèi)
2.啟用Set分組的主調(diào)和被調(diào)只能訪問同Set內(nèi)的節(jié)點(diǎn)
3.主調(diào)啟用Set分組,被調(diào)沒有啟用Set分組,則默認(rèn)會(huì)走按IDC分組查詢的邏輯(前提是啟用了IDC分組)
4.兩種接入方式
根據(jù)服務(wù)客戶端是否在其物理機(jī)中部署Tseer Agent,Tseer的使用方式可以分為Agent 和Tseer API兩種方式:
? Agent 方式
名字路由
Agent 方式下,Tseer Agent會(huì)定期緩存被調(diào)方的信息。并根據(jù)調(diào)用方指定的負(fù)載均衡策略將被調(diào)節(jié)點(diǎn)信息返給調(diào)用方。如果調(diào)用方希望通過服務(wù)特性來實(shí)現(xiàn)負(fù)載均衡,Tseer也支持按照調(diào)用方指定的分組策略將被調(diào)的組信息返給調(diào)用方。
數(shù)據(jù)上報(bào)
每次調(diào)用完成后,調(diào)用方需要調(diào)用Tseer Api提供的上報(bào)接口上報(bào)調(diào)用信息,調(diào)用信息將由Tseer Api即使上報(bào)至Tseer Agent。Tseer Agent將根據(jù)調(diào)用信息剔除失效被調(diào)節(jié)點(diǎn)。
容錯(cuò) 使用Agent 方式時(shí),如果Tseer Agent失效,Tseer Api將會(huì)從內(nèi)存中返回已訪問過的節(jié)點(diǎn)給主調(diào),如果Tseer Api緩存失效,此時(shí)Tseer Api將會(huì)從本地磁盤中的緩存文件恢復(fù)緩存信息提供給主調(diào)。需要注意的是此時(shí)Tseer Api提供給主調(diào)服務(wù)的信息為有損信息,Tseer Api不保證節(jié)點(diǎn)一定健康。
? Tseer Api方式
名字路由
Agent 方式與Tseer Api方式的區(qū)別在于是否需要在主調(diào)的宿主機(jī)中部署Tseer Agent。Tseer Api會(huì)直接訪問Tseer server。并且被調(diào)方信息緩存、負(fù)載均衡以及失效節(jié)點(diǎn)剔除都在Tseer Api中完成。
Tseer Api會(huì)定時(shí)拉取Tseerserver的后端信息并屏蔽不可用的被調(diào)節(jié)點(diǎn)。
容錯(cuò)
Tseerserver故障時(shí),Tseer Api會(huì)將內(nèi)存中緩存的信息返回給主調(diào)。當(dāng)內(nèi)存緩存不可用時(shí),Tseer Api將會(huì)用本地磁盤中的緩存恢復(fù)內(nèi)存緩存。
Agent Api方式 與Tseer Api方式對(duì)比
TSeer是一套服務(wù)注冊(cè)發(fā)現(xiàn)容錯(cuò)的方案,是對(duì)Tars名字服務(wù)功能的輕量化,輕巧靈便,對(duì)業(yè)務(wù)的侵入性低。在服務(wù)發(fā)現(xiàn)的核心功能之上,Tseer還支持多種負(fù)載均衡算法,提供可靠的故障容錯(cuò)策略,可有效解決業(yè)務(wù)跨地區(qū)跨機(jī)房調(diào)用等難題,極大提升服務(wù)的可用性和調(diào)用質(zhì)量,是微服務(wù)框架中優(yōu)秀的名字服務(wù)解決方案。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/61973.html
摘要:從用戶成為股東在基金會(huì)的天從年開始為的初始版本打補(bǔ)丁,堵俊平已經(jīng)在社區(qū)深耕了近年,年月成為中國第一個(gè)的年月,年月榮升。他們有權(quán)選舉董事會(huì),成為董事會(huì)選舉的候選人。基金會(huì)成員對(duì)基金會(huì)直接負(fù)責(zé),在多個(gè)項(xiàng)目中做出貢獻(xiàn),擁有董事會(huì)的投票權(quán)。 3月27日,騰訊云大數(shù)據(jù)及人工智能產(chǎn)品研發(fā)的專家研究員堵俊平受邀成為 Apache 軟件基金會(huì)Member(Apache Softeware Founda...
摘要:目前電商領(lǐng)域有兩款比較出名的開源電商網(wǎng)站解決方案,分別是基于開發(fā)框架,代號(hào)為的開源項(xiàng)目,以及基于的作為開源項(xiàng)目的開發(fā)成員之一,今天我想通過本文,給大家介紹一下我們平時(shí)購物時(shí)最常使用到的功能之一,添加產(chǎn)品到購物車的技術(shù)實(shí)現(xiàn)。 目前電商領(lǐng)域有兩款比較出名的開源電商網(wǎng)站解決方案,分別是基于 Angular 開發(fā)框架,...
摘要:產(chǎn)品概述產(chǎn)品概述產(chǎn)品概述本篇目錄產(chǎn)品特點(diǎn)產(chǎn)品特點(diǎn)功能簡(jiǎn)介功能簡(jiǎn)介操作指南操作指南開發(fā)指南開發(fā)指南任務(wù)調(diào)度任務(wù)調(diào)度產(chǎn)品價(jià)格產(chǎn)品價(jià)格簡(jiǎn)稱,是推出的云上智能化輕量級(jí)的大數(shù)據(jù)基礎(chǔ)服務(wù)平臺(tái),能夠幫您快速構(gòu)建起大數(shù)據(jù)的分析處理能力。 產(chǎn)品概述本篇目錄產(chǎn)品特點(diǎn)功能簡(jiǎn)介操作指南開發(fā)指南任務(wù)調(diào)度產(chǎn)品價(jià)格UCloud Smart Data Platform(簡(jiǎn)稱 USDP),是 UCloud 推出的云上智能化、...
閱讀 1592·2021-10-18 13:35
閱讀 2371·2021-10-09 09:44
閱讀 829·2021-10-08 10:05
閱讀 2724·2021-09-26 09:47
閱讀 3585·2021-09-22 15:22
閱讀 443·2019-08-29 12:24
閱讀 2009·2019-08-29 11:06
閱讀 2865·2019-08-26 12:23