我們針對(duì)服務(wù)治理的功能,提供了很多API,可以授權(quán)給開發(fā)人員或者外部系統(tǒng)使用。
例如單元測試調(diào)用,限流配置/開關(guān),動(dòng)態(tài)分組,上下線等都提供了開放API。
JSF HTTP網(wǎng)關(guān)
網(wǎng)關(guān)是為了方便跨語言通過HTTP+JSON調(diào)用JSF服務(wù),而不需要使用JSF的RPC框架。
特性如下:
基于Netty4.0實(shí)現(xiàn)HTTP網(wǎng)關(guān),沒有使用Servlet容器,輕量高效。
支持服務(wù)自動(dòng)發(fā)現(xiàn)
- 一般的HTTP服務(wù),外面為了解決單點(diǎn)問題,都會(huì)用域名+VIP等實(shí)現(xiàn)高可用,故障轉(zhuǎn)移等;
- 現(xiàn)在網(wǎng)關(guān)同時(shí)原生接入了JSF的注冊中心,知道了服務(wù)的提供者信息(JSF協(xié)議支持HTTP調(diào)用)。
- 服務(wù)提供者也不用關(guān)系擴(kuò)容縮容導(dǎo)致服務(wù)的IP端口發(fā)生變化,網(wǎng)關(guān)會(huì)自動(dòng)維護(hù)服務(wù)列表。
- 服務(wù)限流
- 針對(duì)方法級(jí)+應(yīng)用進(jìn)行授權(quán),固定時(shí)間只能調(diào)用指定次數(shù)。
- 同一個(gè)方法也只能占用網(wǎng)關(guān)內(nèi)的部分線程
- 結(jié)果統(tǒng)一包裝
- 對(duì)異常等響應(yīng)進(jìn)行包裝
JSF遇到京東彈性云
京東的JSF服務(wù)開發(fā)在京東彈性云的研發(fā)推廣之前完成,自從京東彈性云落地以來,也遇到不少問題。
例如:
- 硬件指標(biāo):例如使用JDK獲取的Docker的指標(biāo)有些是物理機(jī)的,我們需要特殊處理
- 網(wǎng)絡(luò):結(jié)合京東的“胖”容器,每個(gè)容器其實(shí)有實(shí)際IP,對(duì)外提供服務(wù)
- 輕量:提高啟動(dòng)速度
- 開放服務(wù):在容器銷毀或者非優(yōu)雅停機(jī)的情況下,提供API進(jìn)行服務(wù)治理
JSF規(guī)模
- 接口數(shù):萬級(jí)
- 服務(wù)節(jié)點(diǎn)數(shù):百萬級(jí)
- 接入實(shí)例數(shù):十萬級(jí)
- 框架調(diào)用量:每天千億級(jí)別
- 監(jiān)控?cái)?shù)據(jù):每天120億條數(shù)據(jù),1.2T數(shù)據(jù)量
- HTTP網(wǎng)關(guān):每天百億級(jí)別
總結(jié)
- 沒有最好,只有最適合!
意思就是不要人云亦云,盲目看大公司用什么,現(xiàn)在什么最新,或者什么性能最好。因?yàn)榧軜?gòu)不是讓你一下子設(shè)計(jì)出來使用一輩子,好的架構(gòu)都是慢慢演化而來的。不同的架構(gòu)會(huì)做出不同的技術(shù)選型。所以無論什么時(shí)候都要結(jié)合自己的現(xiàn)狀以及未來幾年的規(guī)劃,來進(jìn)行技術(shù)選型。
- It’s just the beginning!
服務(wù)化框架的選擇只是開始,真正的變革是選擇后,公司整體業(yè)務(wù)和開發(fā)的變革。這個(gè)大家有空可以看看康威定律。