亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dubbo是什么?如何使用Dubbo?

發布時間:2020-06-05 20:29:59 來源:億速云 閱讀:312 作者:Leah 欄目:軟件技術

Dubbo是什么?如何使用Dubbo?這些問題可能是我們日常工作會見到的。通過這些問題,希望你能收獲更多。下面是揭開這些問題的詳細內容。

Dubbox簡介

Dubbox 是一個分布式服務框架,其前身是阿里巴巴開源項目Dubbo ,被國內電商及互聯網項目中使用,后期阿里巴巴停止了該項目的維護,當當網便在Dubbo基礎上進行優化,并繼續維護,為了與原有的Dubbo區分,故將其命名為Dubbox。

Dubbox 致力于提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbox就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbox這樣的分布式服務框架的需求,并且本質上是個服務調用的東東,說白了就是個遠程服務調用的分布式框架。
Dubbo是什么?如何使用Dubbo?
節點角色說明:

  • Provider: 暴露服務的服務提供方。
  • Consumer: 調用遠程服務的服務消費方。
  • Registry: 服務注冊與發現的注冊中心。
  • Monitor: 統計服務的調用次調和調用時間的監控中心。
  • Container: 服務運行容器。

調用關系說明:

  • 服務容器負責啟動,加載,運行服務提供者。
  • 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
  • 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
  • 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推
    送變更數據給消費者。
  • 服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,
    如果調用失敗,再選另一臺調用。
  • 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計
    數據到監控中心。

Zookeeper 介紹

官方推薦使用 zookeeper 注冊中心。注冊中心負責服務地址的注冊與查找,相當于目錄服務,服務提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉發請求,壓力較小。

Zookeeper 是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支持變更推送,適合作為Dubbox 服務的注冊中心,工業強度較高,可用于生產環境。

Zookeeper 在Linux系統的安裝

安裝步驟:
第一步:安裝 jdk
第二步:把 zookeeper 的壓縮包上傳到 linux 系統。
注意:Alt+P 進入SFTP ,輸入put d:\zookeeper-3.4.6.tar.gz 上傳
第三步:解壓縮壓縮包

tar -zxvf zookeeper-3.4.6.tar.gz

第四步:進入 zookeeper-3.4.6 目錄,創建 data 文件夾。

mkdir data

第五步:進入conf目錄 ,把 zoo_sample.cfg 改名為 zoo.cfg

cd conf
mv zoo_sample.cfg zoo.cfg

第六步:打開zoo.cfg ,  修改 data 屬性:dataDir=/root/zookeeper-3.4.6/data

Zookeeper 服務啟動

進入bin目錄,啟動服務輸入命令

 ./zkServer.sh start

輸出以下內容表示啟動成功
Dubbo是什么?如何使用Dubbo?
關閉服務輸入命令

./zkServer.sh stop

輸出以下提示信息
Dubbo是什么?如何使用Dubbo?
查看狀態:

./zkServer.sh status

如果啟動狀態,提示
Dubbo是什么?如何使用Dubbo?
如果未啟動狀態,提示:
Dubbo是什么?如何使用Dubbo?

Dubbo本地 JAR包部署與安裝

Dubbo的jar包并沒有部署到Maven的中央倉庫中,大家在Maven的中央倉庫中可以查找到Dubbo的最終版本是2.5.3 , 阿里巴巴解散了Dubbo團隊后由當當網繼續維護此項目,并改名為 Dubbox ,坐標不變,版本變更了,但是并沒有提交到中央倉庫。
我們現在需要手動將Dubbox的jar包安裝到我的本地倉庫中。
先將dubbo-2.8.4.jar包放到d:\setup, 然后輸入命令

mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar

下載網址:https://github.com/dangdangdotcom/dubbox/tree/dubbox-2.8.4
下載后直接解壓,解壓后,直接cd進入dubbo中進行maven的打包,然后在target目錄就會生成dubbox-2.8.4.jar包

入門實戰

  • 創建Maven工程(WAR)dubboxdemo-service  ,在pom.xml中引入依賴
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast.dubboxdemo</groupId>
<artifactId>dubboxdemo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>        
        <spring.version>4.2.4.RELEASE</spring.version>
</properties>
    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>   
        <!-- dubbo相關 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>            
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>       
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.11.0.GA</version>
        </dependency>       
    </dependencies>
<build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
    <source>1.7</source>
    <target>1.7</target>
    </configuration>
    </plugin>
    <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <!-- 指定端口 -->
                    <port>8081</port>
                    <!-- 請求路徑 -->
                    <path>/</path>
                </configuration>
        </plugin>
    </plugins>
</build>
</project>
  • 在工程的webapps下創建WEB-INF文件夾,創建web.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">  
    <!-- 加載spring容器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext*.xml</param-value>
    </context-param>
    <listener>      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 
</web-app>
  • 創建業務接口,創建包cn.ldc.org.dubbodemo.service,用于存放業務接口,創建接口
package cn.ldc.org.dubbodemo.service;
/**
 * 業務接口
 * @author Administrator
 *
 */
publicinterface UserService {   
    public String getName();    
}
  • 創建業務實現類
    創建包cn.ldc.org.dubbodemo.service.impl ,用于存放業務實現類。創建業務實現類:
package cn.ldc.org.dubbodemo.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import cn.itcast.dubbodemo.service.UserService;
@Service
publicclass UserServiceImpl implements UserService {
    public String getName() {       
        return"itcast";
    }
}

注意:Service注解與原來不同,需要引入com.alibaba包下的

  • 編寫配置文件

在src/main/resources下創建applicationContext-service.xml ,內容如下:

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<dubbo:application name="dubboxdemo-service"/>
<dubbo:registry address="zookeeper://192.168.179.128:2181"/>
<dubbo:annotation package="cn.ldc.org.dubboxdemo.service" />
</beans>

注意:dubbo:annotation用于掃描@Service注解。

  • 測試運行
tomcat7:run

服務消費者開發

開發步驟:
(1)創建Maven工程(WAR)dubboxdemo-web ,在pom.xml引入依賴 ,同“dubboxdemo-service”工程。區別就是把tomcat插件的運行端口改為8082 。
(2)在webapps目錄下創建WEB-INF 目錄,并創建web.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">  
<!-- 解決post亂碼 -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
        <init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>       
<servlet>
    <servlet-name>springmvc</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 指定加載的配置文件 ,通過參數contextConfigLocation加載-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-web.xml</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*</url-pattern>
</servlet-mapping>
</web-app>

(3)拷貝業務接口
將“dubboxdemo-service”工程的cn.ldc.org.dubboxdemo.service 包以及下面的接口拷貝至此工程。
(4)編寫Controller

package cn.ldc.org.dubboxdemo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.itcast.dubbodemo.service.UserService;
@Controller
@RequestMapping("/user")
publicclass UserController {
    @Reference
    private UserService userService;    
    @RequestMapping("/showName")
    @ResponseBody
    public String showName(){
        returnuserService.getName();
    }       
}

(5)編寫spring配置文件
在src/main/resources下創建applicationContext-web.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <mvc:annotation-driven >
        <mvc:message-converters register-defaults="false">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8" />
            </bean>
        </mvc:message-converters>   
    </mvc:annotation-driven>
    <!-- 引用dubbo 服務 -->
    <dubbo:application name="dubboxdemo-web" />
    <dubbo:registry address="zookeeper://192.168.179.128:2181"/>
<dubbo:annotation package="cn.ldc.org.dubboxdemo.controller" />
</beans>

測試運行

tomcat7:run

看完上述內容,你們對Dubbo有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜良县| 鹤山市| 浦江县| 龙泉市| 吴江市| 汕头市| 巴东县| 甘孜县| 措美县| 古蔺县| 桂阳县| 铜鼓县| 锡林浩特市| 沐川县| 嘉黎县| 沾益县| 缙云县| 米泉市| 蓬安县| 通许县| 玉田县| 宁乡县| 伊春市| 会泽县| 朔州市| 尤溪县| 平泉县| 云梦县| 独山县| 达孜县| 西畴县| 任丘市| 井陉县| 阿荣旗| 桐乡市| 余江县| 阿拉善左旗| 信丰县| 顺平县| 额敏县| 湛江市|