Missian異步RPC框架
大家都知道,Hessian是一個(gè)了不起的RPC框架。但是,它的調(diào)用是同步的,并且只能基于HTTP傳輸。
作者創(chuàng)建missian(mina+hessian的意思)的目的有二:
1、實(shí)現(xiàn)異步的RPC調(diào)用。同步遠(yuǎn)程操作帶來的損耗有時(shí)候是無法忍受的。異步操作要復(fù)雜一些,但是能夠提高系統(tǒng)的并發(fā)能力和響應(yīng)時(shí)間。
2、讓hessian可以在tcp上傳輸。HTTP是構(gòu)建在tcp之上的應(yīng)用層協(xié)議,本身是比較復(fù)雜的,對(duì)HTTP編碼解碼的過程也無疑是一個(gè)性能損耗。如果把HTTP這一層去掉,能夠一定程度的提供性能。
有多種辦法可以對(duì)hessian進(jìn)行擴(kuò)展以支持tcp傳輸,但是很難讓它異步,因此我決定大刀闊斧的對(duì)其進(jìn)行改造,以達(dá)到我的目的。
Missian的服務(wù)器端是基于mina的;同步客戶端之基于傳統(tǒng)的阻塞式Socket實(shí)現(xiàn)的,支持連接池;異步的客戶端基于mina NioSocketConnector。
這里也推薦一下mina這個(gè)了不起的nio框架。我從06年底就開始使用。最近的一個(gè)項(xiàng)目中,寫的基于mina的http服務(wù),在全部擊中緩存的情況下(仍有一定的邏輯,諸如幾個(gè)小列表進(jìn)行取并集、交集,返回?cái)?shù)據(jù)包在1-2K之間),測(cè)試達(dá)到了23000個(gè)TPS,此時(shí)CPU僅達(dá)到40%左右。我推薦大家使用mina來開發(fā)網(wǎng)絡(luò)通信方面的東西,包括服務(wù)器。
Missian沒有綁定spring,但是我強(qiáng)烈推薦使用spring,這樣missian可以直接去spring里面找到對(duì)應(yīng)的bean,否則還需要你自己實(shí)現(xiàn)一個(gè)BeanLocator接口。
同時(shí)我提供了幾個(gè)例子:
1、構(gòu)建服務(wù)器端(基于spring)
2、構(gòu)建服務(wù)器端(無spring)
3、同步客戶端(無spring,使用spring來創(chuàng)建也很簡(jiǎn)單)
4、異步客戶端(基于spring)
5、異步客戶端(無spring)
Missian 即將支持基于HTTP的異步/同步調(diào)用,這時(shí)協(xié)議和hessian是完全一致的,因此missian http客戶端可以調(diào)用hessian servlet(僅同步調(diào)用,因?yàn)楫惒叫枰?wù)器端回傳方法名稱,hessian是沒有這個(gè)的),hessian也可以調(diào)用missian的服務(wù)。 Missian http客戶端調(diào)用missian服務(wù)則即可以是同步的也可以是異步的。
