今天遇到一個(gè)問(wèn)題,場(chǎng)景是對(duì)數(shù)據(jù)進(jìn)行水平拆分,希望可以把系統(tǒng)部署到任意機(jī)房践宴,并方便進(jìn)行流量調(diào)撥。前提是數(shù)據(jù)庫(kù)已經(jīng)支持分布式部署爷怀,可以把分區(qū)切換到任意機(jī)房阻肩。剩下的問(wèn)題就是如何對(duì)服務(wù)請(qǐng)求進(jìn)行尋址。
因?yàn)榱髁柯酚傻侥膫€(gè)機(jī)房由請(qǐng)求參數(shù)中的數(shù)據(jù)分區(qū)決定运授,而服務(wù)是RPC實(shí)現(xiàn)烤惊,所以要先把參數(shù)反序列化才能拿到分區(qū)參數(shù)。調(diào)用方和服務(wù)提供方都要升級(jí)改造才能支持吁朦。如果服務(wù)是基于http實(shí)現(xiàn)或其他文本協(xié)議柒室,就不一定需要升級(jí)調(diào)用方或服務(wù)提供方,可以很方便地做一個(gè)路由層逗宜。
RPC的方便之處是強(qiáng)類型雄右,不不靈活的地方也是強(qiáng)類型空骚。不過(guò)作為接口,我寧愿采用擴(kuò)展性更好的文本接口不脯。