}客戶端請求報錯如下:
1.順著客戶端呼叫的call()
方法,進入原始碼github.com\micro\go-plugins\client\http\http.go
,找到獲取服務節點的方法:
))3.進一步進入filterlabel()
方法,在第41行可以發現,上一步傳的兩個引數在這裡做了校驗,分別作為的metadata(元資料)
的map的鍵和值,相當於驗證協議需要為http:
if node.metadata[key]
== val
4.回到http.go
的69行,如果不滿足http協議,則獲取服務節點失敗,返回我們所遇到的這個err:
// get next nodes from the selector
next, err := h.opts.selector.
select
(service, selectoptions...
)if err !=
nil&& err == selector.errnotfound
else
if err !=
nil
到這裡其實已經可以基本確定我們遇到的問題了:在使用go-plugins
外掛程式進行服務呼叫時,在服務發現時為選擇器新增了過濾,限定了請求協議,要求metadata
的鍵值必須為"protocol":"http"
,否則返回的服務節點切片長度將為0。
因此解決方法則是在服務端進行服務註冊的時候,為註冊的服務新增上metadata
配置,指定請求協議為http:
service := web.
newservice
( web.
name
("cas"),
web.
address
(":8001"),
web.
registry
(consulreg)
, web.
handler
(engine)
,// 為註冊的服務新增metadata,指定請求協議為http
web.
metadata
(map
[string
]string),
)
在指定了服務的請求協議後,成功解決該問題~? Jsp處理客戶端請求
什麼是jsp內建物件 jsp內建物件是 web 容器建立的一組物件 jsp內建物件out out物件用於向瀏覽器輸出資料 其常用的方法是print 該方法用於在頁面中顯示字串資訊。jsp內建物件request request物件主要用於處理客戶端請求 request物件常用方法 4.jsp內建物件r...
beego客戶端請求httplib
httplib 庫主要用來模擬客戶端傳送 http 請求,類似於 curl 工具,支援 jquery 類似的鏈式操作。使用起來相當的方便 通過如下方式進行安裝 首先匯入包 然後初始化請求方法,返回物件 然後我們就可以獲取資料了 str,err req.string iferr nil fmt.pri...
瘦客戶端 胖客戶端 智慧型客戶端
胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...