chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>TarsGateway通用API網(wǎng)關(guān)

TarsGateway通用API網(wǎng)關(guān)

2022-06-17 | zip | 1.33 MB | 次下載 | 免費

資料介紹

授權(quán)協(xié)議 BSD-3-Clause
開發(fā)語言 C/C++
軟件類型 開源軟件

軟件簡介

TarsGateway是基于tars框架開發(fā)的一套通用api網(wǎng)關(guān),請求為http協(xié)議,后端同時支持tars-tup&tars-tars協(xié)議、tars-json協(xié)議、http協(xié)議。 除了協(xié)議轉(zhuǎn)發(fā)之外,還支持流量控制,黑白名單等功能。

支持版本說明

  • TarsCpp: >= v2.4.5
  • TarsJava: >= v1.7.2
  • TarsGo: >= v1.1.4
  • TarsNode: rpc: >= v2.0.14, stream: >= v2.0.3, tars2node: >= v20200707
  • TarsPHP: tars-server: >= v0.6.0

功能介紹

1. 代理類型的判斷

TarsGateway 是根據(jù)請求host+url 判斷當(dāng)前請求是什么類型的請求,具體host和url通過配置設(shè)定。配置及對應(yīng)邏輯說明如下:

  • 配置所在域: /main/base
  • tup_host: tup請求對應(yīng)的host,如果請求host在tup_host列表中,那么會進行后面的tup&&json請求的判斷。如果列表配置為空,那么也會判斷,這里支持前通配符。
  • tup_path: tup或tars請求的基礎(chǔ)path,默認為 /tup ;
  • json_path: json 請求的基礎(chǔ)path,默認為 /json ;
  • monitor_url: TarsGateway 的監(jiān)控地址,用來遠程判斷服務(wù)是否存活。
  • 配置舉例:
    
#tup_host 如果不配置,那么所有host開頭的,且沒有path或者path為 / , 也判斷為 tup 請求 tup_host=prx.tup.whup.com|prx2.tup.whup.com|*.prx.upchina.com tup_path=/tup json_path=/json monitor_url=/monitor/monitor.html

2. TARS-tup && TARS-tars 協(xié)議代理

TARS-tup協(xié)議代理,必須為post請求類型,路徑為/tup,body內(nèi)容為RequestPacket包tars序列化的內(nèi)容。TarsGateway收到包后,去反序列化body的內(nèi)容解析出RequestPacket包,然后根據(jù)其中的sServantName在配置中查找真是的tars服務(wù)的obj。如果配置auto_proxy=1,那么客戶端調(diào)用時 sServantName 可以填真實的obj地址。這里建議:直接對C外網(wǎng)暴露的TarsGateway,建議配置auto_proxy=0,避免內(nèi)網(wǎng)的服務(wù)都直接對外暴露。另外,proxy的配置還可以支持 sServerName:sFuncName 的配置,會優(yōu)先根據(jù), 這種類型配置優(yōu)先級高于只配置sServerName 類型的配置。 proxy配置如下:

    
        hello = TestApp.HelloServer.HelloObj
        hello:sayhello = TestApp.Hello2Server.HelloObj
    

經(jīng)過TarsGateway調(diào)用后端服務(wù),客戶端請求的http頭,可以通過配置采用tars的context進行http頭的透傳,默認情況下,REMOTE_IP (客戶端ip)都會透傳給后端。配置為 filterheaders,可以是多個,比如:

    filterheaders = X-GUID|X-XUA

調(diào)用后端tars服務(wù)時,TarsGateway默認采用tars自己的缺省輪訓(xùn)負載均衡策略(robin輪訓(xùn)),也可以通過配置自定義hash策略,hash_type為1時,根據(jù)客戶端請求id進行tarshash調(diào)用; hash_type為2時,根據(jù)指定http頭(配種中的httpheader)進行tarshash調(diào)用,比如http頭中的 X-GUID,注意這里選擇httpheader需要合理,避免過于集中某個值導(dǎo)致負載均衡過于不均勻的現(xiàn)象; hash_type為3時,則根據(jù)客戶端的ip進行tarshash調(diào)用。 如果obj后面沒有配置hash_type,那么采用tars默認輪訓(xùn)調(diào)用。配置舉例如下:

    
        # servant = server_full_obj [| hash_type [| http header key] ]
        # hash_type: 0, 輪訓(xùn); 1: requestid, 2: http頭, 3: client ip
        # Hello=TestApp.HelloServer.HelloObj | 1
        # Hello=TestApp.HelloServer.HelloObj | 2 | X-GUID
        # Hello=TestApp.HelloServer.HelloObj | 3
        hello = TestApp.HelloServer.HelloObj | 3
        hello:sayhello = TestApp.Hello2Server.HelloObj
    
    

3. TARS-JSON 協(xié)議代理

TARS-JSON協(xié)議代理,支持兩種類型的接口。

  • servantName和funcName在http url路徑中指定

路徑為/json/servantName/funcName,其中/json是固定的,后面分別是servantName 和 funcName。

    請求:
    url: http://xx.xx.com/json/Test.GetSumServer.GetSumObj/getSumEx
    {"req":{"userKey":"upchina","userToken":"upchinatoken","x":1,"y":9900989}}

    響應(yīng):
    { "rsp": { "otherMsg": [ "1 + 9900989 = 9900990" ], "msg": "succ.", "sum": 9900990, "ret": 0 }, "": 0 }

必須為post請求類型,路徑為/json,body內(nèi)容為json結(jié)構(gòu)。其中必須有reqid, obj, func, data 四個字段,分別表示請求id、服務(wù)servant、服務(wù)接口、接口參數(shù),對應(yīng)RequestPacket中的reqid:iRequestId, obj:sServantName, func:sFuncName。data內(nèi)容為接口中的參數(shù),key為參數(shù)名,value為參數(shù)內(nèi)容。除了以上必選四個字段之外,context為可選字段?;匕鼉?nèi)容包括 reqid 和 data, data為接口出參內(nèi)容,其中 "" 的key對應(yīng)內(nèi)容為函數(shù)返回值。 這里除了這里包格式不一樣,其他后面的邏輯都和TARS-tup類型一樣。請求參數(shù)舉例如下:

    請求包:
    {
        "reqid": 99999,
        "obj": "getsum",
        "func": "getSumEx",
        "data": "{"req":{"userKey":"upchina","userToken":"upchinatoken","x":1,"y":9900989}}"
    }
    響應(yīng)包:
    { 
        "data": "{ "rsp": { "otherMsg": [ "1 + 9900989 = 9900990" ], "msg": "succ.", "sum": 9900990, "ret": 0 }, "": 0 }", 
        "reqid": 99999 
    }

4. 普通HTTP協(xié)議代理

普通HTTP協(xié)議代理,類似nginx的反向代理功能,主要功能包括根據(jù)domain和url進行請求轉(zhuǎn)發(fā),后端負載均衡,容錯容災(zāi),黑名單屏蔽,流量控制等功能。

  • 路由策略

先匹配server_name,再匹配path,然后根據(jù) proxy_pass 路徑進行轉(zhuǎn)發(fā),具體規(guī)則如下:

server_name 匹配邏輯:
{
	1、查找全匹配
	2、通配符在前匹配
	3、通配符在后面匹配
	4、正則匹配
	5、如果server_name為空, 則默認都匹配
}

path 匹配邏輯:
{
	1、= 全匹配:  /login
	2、^~ uri以某個常規(guī)字符串開頭: ^~ /static/   (一旦匹配成功, 不再往后面匹配)
	3、~ 正則匹配(區(qū)分大小寫):  ~ \.(gif|jpg|png|js|css)$  (正則表達式匹配多個的情況下, 按最長的匹配)
	4、~* 正則匹配(不區(qū)分大小寫):~* \.png$
	5、!~和!~*分別為區(qū)分大小寫不匹配及不區(qū)分大小寫不匹配 的正則:  !~ \.xhtml$,  !~* \.xhtml$
	6、/xxx 從頭開始匹配路徑(匹配長度越長優(yōu)先級越高)
	7、/ 任何請求都會匹配
}

proxy_pass:
{
	1、如果proxy_pass配置中沒有路徑(http://host/ 這個是有路徑的 /),這時候 location 匹配的完整路徑將直接透傳給 url 
	2、proxy_pass配置中包含路徑(哪怕只有一個 / , 也算), 新路徑 = proxypassPath + (訪問路徑-location路徑)
	3、當(dāng) location 中為正則時, proxy_pass 不能帶路徑
}
  • 負載均衡

支持普通輪訓(xùn)和帶權(quán)重輪訓(xùn)策略,默認權(quán)重(weight)為1,數(shù)據(jù)越大,權(quán)重越高。權(quán)重表示在一次輪訓(xùn)周期內(nèi)輪訓(xùn)的次數(shù)。

  • 容錯容災(zāi)

當(dāng)后端節(jié)點為多個節(jié)點時(大于等于2個節(jié)點),可以支持后端熔斷策略,這里是否進行熔斷可以配置,默認是打開的。

失效屏蔽:如果出現(xiàn)連接出錯,那么就會直接臨時屏蔽該節(jié)點,對應(yīng)inactive配置,其中的值為RequestCallback::FAILED_CODE類型。加入到失效的節(jié)點,如果該站點配置了monitor_url,那么會定時輪訓(xùn)該url,如果出現(xiàn)http 200,那么恢復(fù)該節(jié)點,輪訓(xùn)檢測間隔遞增,最大為2分鐘。如果沒有配置 monitor_url, 那么直接connect該節(jié)點的ip:port,能夠正常連接,那么恢復(fù)該節(jié)點。

超時切換:當(dāng)超時次數(shù)在指定時間窗口達到一定閾值時,或者超過一定比例時,那么臨時屏蔽一段時間,一定時間后會嘗試超時恢復(fù)。

        配置如下:
        
            # 定義哪些返回碼做超時容錯處理,哪些返回碼做出錯容災(zāi)處理
            inactive=2|6
            timeout=1|3
        

        RequestCallback::FAILED_CODE類型定義如下: 
        enum FAILED_CODE
        {
            Failed_Net     = 0x01,      //網(wǎng)絡(luò)出錯
            Failed_Connect = 0x02,      //連接服務(wù)器出錯
            Failed_Timeout = 0x03,      //超時
            Failed_Interrupt = 0x04,    //中斷接收數(shù)據(jù)
            Failed_Close    = 0x05,     //服務(wù)器主動關(guān)閉了鏈接
            Failed_ConnectTimeout = 0x06, //鏈接超時
        };

IP黑名單和流控策略, 同時支持TarsGateway的三種協(xié)議,所以后面統(tǒng)一介紹。

5. 流量控制

可以支持訪問TarsGateway 訪問后端進行流量控制,支持單機控制,也支持多機協(xié)同控制,也可以關(guān)閉流控。

開關(guān)控制:?配置flow_control_onoff可以對流控進行開關(guān)控制。另外如果服務(wù)servant沒有配置FlowControlObj,那么就不會開啟流控策略。

流控策略:?一定時間內(nèi)最多訪問多少次, 通過時間滑動窗口動態(tài)控制,滑動窗口大小為1s,超過次數(shù)則直接返回http 403。

多機協(xié)同:?配置了tup_report_obj,那么會通過該obj進行多機協(xié)同流量控制,否則進行單機控制。注意,如果是單機的策略,那么流控配置的一定時間內(nèi)最多可以訪問多少次就是單機最多可以訪問該站點多少次;如果是多機協(xié)同,那么就是多機同時允許訪問該站點多少次。

配置說明:?如果是TARS-tup或者TARS-JSON協(xié)議,那么流控的站點ID為服務(wù)Obj,如果是http協(xié)議,那么站點ID為配置中的stationId.

6. 黑名單策略

黑名單為IP黑名單,支持全局黑名單和站點黑名單兩個級別。

黑名單格式:?客戶端IP地址,支持通配符。如 192.168.2.130, 192.168.10.*

全局黑名單:?對所有訪問TarsGateway進行控制,包括TARS-tup、TARS-JSON和普通HTTP協(xié)議。

站點黑名單:?只針對指定站點控制,其他站點不首影響。

站點白名單:?站點一旦配置了白名單,那么就只能是指定IP才能訪問,主要用于內(nèi)部系統(tǒng)控制指定ip訪問,或者開放給指定合作伙伴調(diào)用。

7. 配置熱更新

支持常用配置熱更新,包括:

  1. loadProxy: 通過該tars命令可以實現(xiàn)TARS-tup&TARS-JSON協(xié)議的servant代理配置更新;
  2. loadHttp: 通過該配置可以進行普通HTTP協(xié)議的路由策略, 后端節(jié)點配置,監(jiān)控url配置等;
  3. loadComm: 通過該命令可以進行一些公共的配置加載,主要包括黑白名單加載;
  4. 流控策略自動動態(tài)加載DB。
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費