摘要:對于發(fā)布的服務(wù),使用的接口暴露給使用者,使用者引入該服務(wù)接口,然后配置接口。不使用的方式這個(gè)是最直接的使用方式,通過的返回代理類,然后直接調(diào)用。以下幾種就是使用的調(diào)用方式。
序
使用netty開發(fā)rpc的話,對于client端來說,面臨的一個(gè)問題就是client如何方便地對遠(yuǎn)程服務(wù)進(jìn)行調(diào)用。java的rmi通過代理模式給了很好的實(shí)例,通過代理,使得調(diào)用遠(yuǎn)程服務(wù)像調(diào)用本地服務(wù)一樣,對使用者來說,非常簡便。對于發(fā)布的服務(wù),使用java的接口暴露給使用者,使用者引入該服務(wù)接口,然后配置接口。這里簡述了幾種具體的調(diào)用方式。
不使用ioc的方式public void proxyDemo(){ HelloService helloService = client.rpcProxy(HelloService.class, Pair.of(500L, TimeUnit.MILLISECONDS)); System.out.println(helloService.say("proxy demo")); }
這個(gè)是最直接的使用方式,通過jdk的proxy返回代理類,然后直接調(diào)用。不過,一般工程里頭涉及多次調(diào)用的話,每次new一個(gè)代理類比較浪費(fèi),可以考慮集成ioc容器。以下幾種就是使用spring的調(diào)用方式。
java config方式@Bean public HelloService buildHelloService(RpcProxyFactory rpcProxyFactory){ return rpcProxyFactory.proxyBean(HelloService.class,100/*timeout*/); }
好處是,可以直接共用service-api的接口,不好的是java config稍微不如xml直觀,不過適應(yīng)就好
xml方式com.codecraft.rpc.service.demo.HelloService 200
這種方式就是配置感覺略微復(fù)雜點(diǎn),不過還可以接受,具體可參照navi
自定義schema的xml參照dubbo的方式,自定義schema,dubbo-config-spring,這種方式是使用簡單,但是擴(kuò)展spring的xsd略微復(fù)雜。
client再次定義接口使用spring的scanner的方式,client端再次寫接口添加注解,然后client端掃描裝配,重復(fù)定義,不建議用,具體可參照rpc-spring
參考Spring bean 實(shí)現(xiàn)生命周期的三種解決方案
dubbo是如何“插入”到spring框架中的
Dubbo之旅--啟動(dòng)解析(DubboBeanDefinitionParser#parse)
spring hessian 自動(dòng)掃描注入
hessian-spring
rpc-spring
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65762.html
摘要:先來說第種類型,即遠(yuǎn)程通信的,看的源碼,調(diào)用過程大致內(nèi)容就是將通過遠(yuǎn)程通信將信息傳遞給服務(wù)器端,服務(wù)器端接收到該信息后,找到對應(yīng)的本地,然后通過反射執(zhí)行相應(yīng)的方法,將方法的返回值再通過遠(yuǎn)程通信將結(jié)果傳遞給客戶端。 showImg(https://segmentfault.com/img/remote/1460000015285374?w=640&h=363); 上圖是服務(wù)消費(fèi)的主過程:...
摘要:序調(diào)用,有多種序列化的方式,通用如,使用的方面的,比如默認(rèn)的序列化,比如還有跨語言的,比如。所以也一直在尋找運(yùn)行效率與開發(fā)效率兼得的序列化方式。偶爾在網(wǎng)上看到,覺得找到了一直在找的這種序列化方式。 序 rpc調(diào)用,有多種序列化的方式,通用如json,mongodb使用的bson;java方面的,比如Java默認(rèn)的序列化,比如hessian;還有跨語言的,比如thrift、protoco...
摘要:如果有多個(gè)注冊中心,多個(gè)服務(wù)提供者,這個(gè)時(shí)候會得到一組實(shí)例,此時(shí)需要通過集群管理類將多個(gè)合并成一個(gè)實(shí)例。并保留服務(wù)提供者的部分配置,比如版本,,時(shí)間戳等最后將合并后的配置設(shè)置為查詢字符串中。 1. 簡介 在上一篇文章中,我詳細(xì)的分析了服務(wù)導(dǎo)出的原理。本篇文章我們趁熱打鐵,繼續(xù)分析服務(wù)引用的原理。在 Dubbo 中,我們可以通過兩種方式引用遠(yuǎn)程服務(wù)。第一種是使用服務(wù)直聯(lián)的方式引用服務(wù),第...
摘要:對于與而言,則可以看做是消息傳遞技術(shù)的一種衍生或封裝。在生產(chǎn)者通知消費(fèi)者時(shí),傳遞的往往是消息或事件,而非生產(chǎn)者自身。通過消息路由,我們可以配置路由規(guī)則指定消息傳遞的路徑,以及指定具體的消費(fèi)者消費(fèi)對應(yīng)的生產(chǎn)者。采用和來進(jìn)行遠(yuǎn)程對象的通訊。 消息模式 歸根結(jié)底,企業(yè)應(yīng)用系統(tǒng)就是對數(shù)據(jù)的處理,而對于一個(gè)擁有多個(gè)子系統(tǒng)的企業(yè)應(yīng)用系統(tǒng)而言,它的基礎(chǔ)支撐無疑就是對消息的處理。與對象不同,消息本質(zhì)上...
閱讀 1083·2021-11-16 11:45
閱讀 2731·2021-09-27 13:59
閱讀 1327·2021-08-31 09:38
閱讀 3158·2019-08-30 15:52
閱讀 1323·2019-08-29 13:46
閱讀 2095·2019-08-29 11:23
閱讀 1654·2019-08-26 13:47
閱讀 2502·2019-08-26 11:54