導航:首頁 > 配伺服器 > dubbo如何指向一個伺服器

dubbo如何指向一個伺服器

發布時間:2022-04-26 03:39:39

㈠ bbo泛化調用細節是如何實現的

直連加不發布服務 DUBBO的配置屬性裡面對消費端提供了不從注冊中心發現服務的機制,直接配置遠程介面的地址,這樣可以保證消費端連接到制定的環境介面。這樣消費端是解決了問題,但是服務提供端呢?如上圖的B1它即是消費端也是服務提供端,它提供A1所依賴的介面,那麼如果B1將它的服務發布到注冊中心裏面(這里需要提醒,STABLE環境機制裡面所有子環境公用一個注冊中心),那麼勢必會導致stable環境裡面的A會發現B1提供的服務?勢必會導致stable環境的不穩定(stable環境的機制是stable環境只能進不能出,就是不能調用外部其他子環境的服務)?所以B1不能發布服務到注冊中心,bbo也提供了相關的配置屬性來支持這一點。下面我例舉出通過哪些配置可以實現這種方案: 服務消費端: DUBBO在消費端提供了一個url的屬性來指定某個服務端的地址 <!--lang:xml--> <bbo:reference interface="com.alibaba.bbo.demo.HelloWorldService" check="false" id="helloWorldService"/> 默認的方式是從注冊中心發現介面為com.alibaba.bbo.demo.HelloWorldService的服務,但是如果需要直連,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通過配置bbo.reference.url=bbo://ip:port/來讓某個消費者系統的服務都指向制定的伺服器地址(關於配置信息可以參考《DUBBO配置規則詳解》)

㈡ bbo是如何啟動的

已知,在項目啟動過程中,我們會將bbo的配置文件寫到spring的配置文件里,如下xml文件:

<bbo:application name="anyname_provider" />
<!-- 使用zookeeper注冊中心暴露服務地址 -->
<bbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用bbo協議在20880埠暴露服務 -->
<bbo:protocol name="bbo" port="20880" />
<!-- 聲明需要暴露的服務介面 -->
<bbo:service interface="com.shxz130.provider.Provider"
ref="demoService" />

從官方文檔中,我們能看到如下:

啟動過程.png

也就是說spring啟動過程中,隨著Spring在初始化過程中,碰到bbo命名的標簽,如(<bbo:service>,<bbo:registry>)等標簽,會由DubboNamespaceHandler類處理,具體原理見鏈接Spring自定義標簽

DubboBeanDefinitionParser代碼如下:

public class DubboNamespaceHandler extends NamespaceHandlerSupport { static {
Version.checkDuplicate(DubboNamespaceHandler.class);
} public void init() {
registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));
registerBeanDefinitionParser("mole", new DubboBeanDefinitionParser(MoleConfig.class, true));
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));
registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));
registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));
registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));
registerBeanDefinitionParser("annotation", new ());
}
}

遇到不同的標簽,會由不同的Parser處理,這里重點看服務發布,這行代碼:

registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));

也就是說,當Spring容器處理完<bbo:service>標簽後,會在Spring容器中生成一個ServiceBean ,服務的發布也會在ServiceBean中完成。不妨看一下ServiceBean的定義:

public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware {
}

該Bean實現了很多介面,關於InitializingBean,DisposableBean,ApplicationContextAware,BeanNameAware,這些介面的使用介紹如下鏈接:

㈢ JAVA分布開發bbo問題

首先要搞清楚三者的概念
1、Dubbo是阿里開源的默認基於TCP協議RPC遠程服務調度框架,簡單理解就是服務A使用TCP協議調用服務B的Dubbo介面。
2、Zookeeper是注冊中心,在這里主要用於管理bbo服務提供者和消費者的注冊信息與服務調度時提供相關依據。
3、Tomcat是WEB應用伺服器,可以對外暴露基於HTTP協議的服務介面。
由於用戶訪問你的應用首先是通過瀏覽器,也就是基於HTTP協議,所以必須對外暴露HTTP介面作為入口,那麼就需要使用WEB應用伺服器,比如Tomcat、Jetty、Undertow等等。
關於不啟動tomcat,需要哪些配置的問題如下:
Dubbo支持HTTP協議,但原理任然是通過WEB應用伺服器暴漏一個埠。從Dubbo本身專注的領域來說,不建議用HTTP協議,所以最終的結論是,服務與服務之間的介面調用使用Dubbo,而對外暴露HTTP介面任然使用WEB應用伺服器。

㈣ bbo怎麼實現rpc遠程調用

在消費者初始化的時候,會生成一個消費者代理注冊到容器中,該代理回調中持有一個MockClusterInvoker實例,消費調用服務介面時它的invoke會被調用,此時會構建一個RpcInvocation對象,把服務介面的method對象和參數放到RpcInvocation對象中,作為MockClusterInvoker.invoke方法的參數,在這個invoke方法中,判斷請求是否需要mock,是否配置了mock屬性,是強制mock還是失敗後mock,關於mock這里先不詳細展開,這里只看下核心流程。
MockClusterInvoker.invoke會調用FailfastClusterInvoker.invoke,大系統中為了服務高可用同一個服務一般會有多個應用伺服器提供,要先挑選一個提供者提供服務。在服務介面消費者初始化時,介面方法和提供者Invoker對應關系保存在RegistryDirectory的methodInvokerMap中,通過調用的方法名稱(或方法名稱+第一個參數)改方法對應的提供者invoker列表,如注冊中心設置了路由規則,對這些invoker根據路由規則進行過濾。
com.alibaba.bbo.registry.integration.RegistryDirectory.doList(Invocation)

這里的sent參數決定是否等待請求消息發出,sent=true 等待消息發出,消息發送失敗將拋出異常,sent=false 不等待消息發出,將消息放入IO隊列,即刻返回。默認情況下都是false。NettyChannel中有channel屬性,這個channel是Netty框架中的組件,負責客戶端和服務端鏈路上的消息傳遞,channel.write把請求消息寫入,這里的message是上面封裝的Request對象。這里的IO模型是非阻塞的,線程不用同步等待所有消息寫完,而是直接返回。調用Netty框架的IO事件之後會觸發Netty框架的IO事件處理鏈。

㈤ 如何在controller里調用別人的bbo介面

直連加不發布服務DUBBO的配置屬性裡面對消費端提供了不從注冊中心發現服務的機制,直接配置遠程介面的地址,這樣可以保證消費端連接到制定的環境介面。這樣消費端是解決了問題,但是服務提供端呢?如上圖的B1它即是消費端也是服務提供端,它提供A1所依賴的介面,那麼如果B1將它的服務發布到注冊中心裏面(這里需要提醒,STABLE環境機制裡面所有子環境公用一個注冊中心),那麼勢必會導致stable環境裡面的A會發現B1提供的服務?勢必會導致stable環境的不穩定(stable環境的機制是stable環境只能進不能出,就是不能調用外部其他子環境的服務)?所以B1不能發布服務到注冊中心,bbo也提供了相關的配置屬性來支持這一點。下面我例舉出通過哪些配置可以實現這種方案:服務消費端:DUBBO在消費端提供了一個url的屬性來指定某個服務端的地址默認的方式是從注冊中心發現介面為com.alibaba.bbo.demo.HelloWorldService的服務,但是如果需要直連,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通過配置bbo.reference.url=bbo://ip:port/來讓某個消費者系統的服務都指向制定的伺服器地址(關於配置信息可以參考《DUBBO配置規則詳解》)

㈥ bbo 伺服器之間通過什麼來調用

原理:首先有個伺服器,提供注冊服務,稱之為注冊中心。
服務提供方連接注冊中心,將對應的服務配置到注冊中心中。
服務消費方連接到注冊中心,通過注冊中心,調用服務提供方提供的方法或服務。

㈦ bbo 遠程調用service介面方法必須要寫一份服務端service介面代碼才能注入嗎

Dubbo的Filter是一個調用另一個的,最後再執行業務代碼。 在這一行調下一個Filter,那麼寫在這行代碼前面的代碼就是在業務代碼前攔截了,寫在之後的代碼就是執行完業務代碼後攔截了。

㈧ 如何通過bbo介面調用別人的服務,找不到服務

直連加不發布服務
DUBBO的配置屬性裡面對消費端提供了不從注冊中心發現服務的機制,直接配置遠程介面的地址,這樣可以保證消費端連接到制定的環境介面。這樣消費端是解決了問題,但是服務提供端呢?如上圖的B1它即是消費端也是服務提供端,它提供A1所依賴的介面,那麼如果B1將它的服務發布到注冊中心裏面(這里需要提醒,STABLE環境機制裡面所有子環境公用一個注冊中心),那麼勢必會導致stable環境裡面的A會發現B1提供的服務?勢必會導致stable環境的不穩定(stable環境的機制是stable環境只能進不能出,就是不能調用外部其他子環境的服務)?所以B1不能發布服務到注冊中心,bbo也提供了相關的配置屬性來支持這一點。下面我例舉出通過哪些配置可以實現這種方案:
服務消費端:
DUBBO在消費端提供了一個url的屬性來指定某個服務端的地址
<!--lang:xml-->
<bbo:reference interface="com.alibaba.bbo.demo.HelloWorldService" check="false" id="helloWorldService"/>

默認的方式是從注冊中心發現介面為com.alibaba.bbo.demo.HelloWorldService的服務,但是如果需要直連,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通過配置bbo.reference.url=bbo://ip:port/來讓某個消費者系統的服務都指向制定的伺服器地址(關於配置信息可以參考《DUBBO配置規則詳解》)

㈨ bbo框架 怎麼發布到linux伺服器

DUBBO的介紹部分我這里就不介紹了,大家可參考官方文檔。DUBBO的注冊中心安裝
DUBBO的注冊中心支持好幾種,公司用到zookeeper注冊中心,所以我這邊只說明zookeeper注冊中心如何安裝。
安裝zookeeper注冊中心首先得下載zookeeper。大家可到zookeeper的官網

閱讀全文

與dubbo如何指向一個伺服器相關的資料

熱點內容
做解壓的解壓球 瀏覽:563
伺服器地址怎麼改id 瀏覽:454
用紙做解壓器手工 瀏覽:516
如何配置本地域名伺服器 瀏覽:563
誠信可靠的重慶伺服器託管雲空間 瀏覽:977
怎樣找到用應用鎖加密的應用 瀏覽:590
百戰程序員解說 瀏覽:758
吃雞安卓怎麼遇到真人 瀏覽:20
python最好的開發工具 瀏覽:227
有關命令應用文模板 瀏覽:978
epma指標組合源碼圖片 瀏覽:884
屏幕上小圓圈怎麼取消安卓 瀏覽:342
數控車r30凹弧怎樣編程 瀏覽:653
孩子王app會員卡在哪裡看 瀏覽:315
程序員新技術教學視頻 瀏覽:717
歡太健康APP設備在哪裡 瀏覽:791
跟客戶溝通壓力大怎麼樣排解壓力 瀏覽:948
域伺服器為什麼沒有重啟選擇 瀏覽:616
智能雲伺服器如何租用 瀏覽:682
51單片機的針腳電壓是多少 瀏覽:281