關於dubbojava的信息

本文目錄一覽:

為什麼dubbo的java project需要兩個

一個是生產者,一個是消費者。生產者就是提高dubbo服務的工程。消費者就是一個web項目,然後這個項目中對業務數據的增刪改查都是去調用的生產者工程上的dubbo服務。這樣可以有多個web項目去調用生產者上面的dubbo服務。從而實現了對業務處理代碼的集中管理和重複利用。

JAVA分布開發dubbo問題

首先要搞清楚三者的概念

1、Dubbo是阿里開源的默認基於TCP協議RPC遠程服務調度框架,簡單理解就是服務A使用TCP協議調用服務B的Dubbo接口。

2、Zookeeper是註冊中心,在這裡主要用於管理dubbo服務提供者和消費者的註冊信息與服務調度時提供相關依據。

3、Tomcat是WEB應用服務器,可以對外暴露基於HTTP協議的服務接口。

由於用戶訪問你的應用首先是通過瀏覽器,也就是基於HTTP協議,所以必須對外暴露HTTP接口作為入口,那麼就需要使用WEB應用服務器,比如Tomcat、Jetty、Undertow等等。

關於不啟動tomcat,需要哪些配置的問題如下:

Dubbo支持HTTP協議,但原理任然是通過WEB應用服務器暴漏一個端口。從Dubbo本身專註的領域來說,不建議用HTTP協議,所以最終的結論是,服務與服務之間的接口調用使用Dubbo,而對外暴露HTTP接口任然使用WEB應用服務器。

從零開始認識Dubbo

[TOC]

1.Dubbo是什麼

Apache Dubbo 是一款高性能Java RPC框架。

Dubbo是一個分布式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務框架的需求,並且本質上是個服務調用的東東, 說白了就是個遠程服務調用的分布式框架(告別Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上註冊) 其核心部分包含:

2.Dubbo能做什麼

Dubbo採用全spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基於Spring的Schema擴展進行加載。

3.Dubbo架構

節點角色說明:

Provider: 暴露服務的服務提供方。

Consumer: 調用遠程服務的服務消費方。

Registry: 服務註冊與發現的註冊中心。

Monitor: 統計服務的調用次調和調用時間的監控中心。

Container: 服務運行容器。

調用關係說明:

4.Dubbo的使用方法

Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基於Spring的Schema擴展進行加載。如果不想使用Spring配置,可以通過API的方式進行調用(註解式,不推薦使用)

下載安裝zookeeper註冊中心(不建議使用multicast)

1.Windows

下載地址:

使用方法:下載解壓即可,進入解壓目錄運行zkServer.cmd啟動註冊服務中心

截圖:

2.MacOS

下載地址:

使用方法:下載解壓即可,進入解壓目錄運行zkServer.sh start啟動註冊服務中心

3.Linux

下載地址:

使用方法:下載解壓即可,進入解壓目錄運行zkServer.sh start啟動註冊服務中心

服務提供者

1.定義服務接口(該接口需單獨打包,在服務提供方和消費方共享)

DemoService.java

2.服務提供方實現接口:(對服務消費方隱藏實現)

DemoServiceImpl.java

dubbo-provider.xml:

4.加載Spring配置,啟動服務:

Provider.java:

或者使用springBoot啟動

服務消費者:

applicationContext-dubbo.xml 中註冊自己需要調用的接口。

1.通過Spring配置引用遠程服務

dubbo-consumer.xml:

2.加載Spring配置,並調用遠程服務:

Consumer.java

或者使用springBoot啟動

並添加對應的restful接口提供接口訪問

修改對應index頁面

3.dubbo管理頁面:

啟動後訪問

輸入賬號密碼root/root

應用頁面:

提供者頁面:

消費者頁面:

服務頁面:

測試是否成功,只要看狀態是否正常,就ok了 ….

provider-log:

5.使用Dubbo可能遇到的問題

1、org.springframework.beans.factory.BeanCreationException

原因分析:

解決方案

2、org.apache.dubbo.rpc.RpcException

原因分析

解決方案

可能是因為providers沒有啟動,或者是provider對應暴露的服務被禁用,啟動providers或者解除禁用即可

3、java.lang.IllegalStateException

原因分析

解決方案

總結以上兩點,通俗點講,就是重啟了工程(可能是因為直接修改代碼,工程reload了), 並且,連過了數據庫(登錄等),才出現了上述報錯信息。原因是因為在tomcat重啟的時候,之前的tomcat的線程還沒有完全關閉,最新啟動tomcat就會報這個異常。

4、org.apache.dubbo.remoting.TimeoutException

原因分析

解決方案

在dubbo-provider.xml增加超時時間

dubbo java環境下出現這種錯誤怎麼解決?

往service里注入失敗了。

改成:ref=”CarServiceImpl”

Dubbo分布式服務框架 服務註冊不上:

(1) 檢查dubbo的jar包有沒有在classpath中,以及有沒有重複的jar包

(2) 檢查有沒有重複的dubbo.properties配置文件

(3) 檢查暴露服務的spring配置有沒有加載

(4) 檢查beanId或beanName有沒有重複

(5) 查看有沒有錯誤日誌:

cat ~/output/logs/webx.log

(6) 在服務提供者機器上測試與註冊中心的網絡是否通:

telnet 172.22.3.94 9090

(7) 檢查與註冊中心的連接是否存在:

netstat -anp | grep 172.22.3.94

(8) 如果是預發布機,檢查hosts文件有沒有正確綁定:

cat /etc/hosts

(9) 實在不行,開啟遠程調試:

– (a) 在服務器JVM參數中加入:-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=7001,server=y,suspend=y

注意線上只有7001和8080可以被線下訪問,調試端口需用這兩個之一,因註冊是啟動時行為,啟動時必需掛起suspend=y

– (b) 在dubbo源碼的DefaultRegistryService的registerService()方法中設置斷點。

– (c) 在Eclipse的Debug按鈕下拉菜單Debug Configurations中的Remote Java Applications中新增遠程調試,並設置IP和端口,以及增加dubbo的源碼,進行遠程Debug調試。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193367.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 15:01
下一篇 2024-12-01 15:01

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論