日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dubbo 快速入门教程

發(fā)布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dubbo 快速入门教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、Apache Dubbo概述
    • 1. Dubbo簡介
    • 2. Dubbo架構(gòu)
  • 二、Dubbo快速入門
    • 1.創(chuàng)建兩個maven工程,添加web
    • 2. 配置dubbodemo_provider
    • 3. 配置dubbodemo_consumer


一、Apache Dubbo概述

1. Dubbo簡介

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

它是阿里巴巴公司開源的、輕量級的開源Java RPC框架,可以和Spring框架無縫集成,2018年阿里巴巴把這個框架捐獻給了apache基金會。

Dubbo提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務自動注冊和發(fā)現(xiàn)。

什么是RPC?

RPC全稱為remote procedure call,即遠程過程調(diào)用。它并不是一個具體的技術(shù),而是指整個網(wǎng)絡(luò)遠程調(diào)用過程。

RPC是一個泛化的概念,嚴格來說一切遠程過程調(diào)用手段都屬于RPC范疇。各種開發(fā)語言都有自己的RPC框架。Java中的RPC框架比較多,廣泛使用的有RMI、Hessian、Dubbo等。

比如:兩臺服務器A和B,A服務器上部署一個應用,B服務器上部署一個應用,A服務器上的應用想調(diào)用B服務器上的應用提供的方法,由于兩個應用不在一個內(nèi)存空間,不能直接調(diào)用,所以需要通過網(wǎng)絡(luò)來表達調(diào)用的語義和傳達調(diào)用的數(shù)據(jù)。

2. Dubbo架構(gòu)

Dubbo架構(gòu)圖如下:

虛線都是異步訪問實線都是同步訪問

藍線: 在啟動時要完成的功能
紅線: 在程序運行過程中要執(zhí)行的功能

節(jié)點角色說明
Provider暴露服務的服務提供方
Consumer調(diào)用遠程服務的服務消費方
Registry服務注冊與發(fā)現(xiàn)的注冊中心
Monitor統(tǒng)計服務的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心
Container服務運行容器
序號說明
0服務容器負責啟動,加載,運行服務提供者
1服務提供者在啟動時,向注冊中心注冊自己提供的服務
2服務消費者在啟動時,向注冊中心訂閱自己所需的服務
3注冊中心將服務提供者地址列表提供給消費者。如果地址有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者
4基于軟負載均衡算法,選一臺提供者給消費者進行調(diào)用。如果調(diào)用失敗了,則再選另一臺給消費者調(diào)用
5服務消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心

二、Dubbo快速入門

Dubbo作為一個RPC框架,其最核心的功能就是要實現(xiàn)跨網(wǎng)絡(luò)的遠程調(diào)用。

演示案例:一個作為服務的提供方,一個作為服務的消費方。通過Dubbo來實現(xiàn)服務消費方遠程調(diào)用服務提供方的方法。

前提:必須先安裝好Zookeper,并且啟動后才能演示案例

-Zookeper可以作為一個注冊中心,將消費者和提供者注冊到里面,并實現(xiàn)消費者使用提供者提供的業(yè)務。

1.創(chuàng)建兩個maven工程,添加web

提供者:dubbodemo_provider
消費者:dubbodemo_consumer

2. 配置dubbodemo_provider

2.1 在dubbodemo_provider的pom.xml文件導入坐標

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring.version>5.0.5.RELEASE</spring.version> </properties><dependencies><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><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.7</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.12.1.GA</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- 配置tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration> <!-- 指定端口 --><port>8081</port> <!-- 請求路徑 --><path>/</path></configuration></plugin></plugins></build>

2.2 配置web.xml文件

<display-name>Archetype Created Web Application</display-name><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>

2.3 創(chuàng)建服務接口

public interface HelloService {public String hello(String name); }

2.4 創(chuàng)建接口實現(xiàn)類

@Service //注解是用dubbo包中的 public class HelloServiceImpl implements HelloService {@Overridepublic String hello(String name) {return "hello:+"+name;} }

2.5 在resource文件夾中創(chuàng)建spring配置文件:applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 當前應用名稱,用于注冊中心計算應用間依賴關(guān)系,注意:消費者和提供者應用名不要一樣 --><dubbo:application name="dubbodemo_provider"/><!-- 連接服務注冊中心zookeeper ip為zookeeper所在服務器的ip地址--><dubbo:registry address="zookeeper://192.168.215.128:2181"/><!-- 注冊 協(xié)議和port 端口默認20880 --><dubbo:protocol name="dubbo" port="20881"></dubbo:protocol><!-- 掃描指定包,加入@Service注解的類會被發(fā)布為服務 --><dubbo:annotation package="com.demo.service.impl"/> </beans>

2.6 啟動服務

3. 配置dubbodemo_consumer

3.1 在dubbodemo_consumer的pom.xml文件導入坐標

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring.version>5.0.5.RELEASE</spring.version> </properties> <dependencies><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><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.7</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.12.1.GA</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><!-- 指定端口 --><port>8082</port> <!-- 請求路徑 --><path>/</path></configuration></plugin></plugins></build>

3.2 配置web.xml文件

<display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定加載的配置文件 ,通過參數(shù)contextConfigLocation加載 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-web.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

3.3 創(chuàng)建服務接口

public interface HelloService {public String hello(String name); }

3.4 創(chuàng)建Controller控制器

@RestController @RequestMapping("demo") public class HelloController {@Reference //引入dubbo的注入,spring的@Autowiredb不行private HelloService helloService;@RequestMapping("/hello")public String hello(String name){String hello = helloService.hello(name);return hello;} }

3.5 在resource文件夾中創(chuàng)建spring配置文件:applicationContext-web.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 當前應用名稱,用于注冊中心計算應用間依賴關(guān)系,注意:消費者和提供者應用名不要一樣 --><dubbo:application name="dubbodemo_consumer"/><!-- 連接服務注冊中心zookeeper ip為zookeeper所在服務器的ip地址--><dubbo:registry address="zookeeper://192.168.215.128:2181"/><!-- 掃描指定包,加入@Service注解的類會被發(fā)布為服務 --><dubbo:annotation package="com.demo.controller"/> </beans>

3.6 啟動服務

在瀏覽器輸入http://localhost:8082/demo/hello.do?name=Jack
查看瀏覽器輸出結(jié)果:hello:Jack

總結(jié)

以上是生活随笔為你收集整理的Dubbo 快速入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。