快速学会Dubbo的配置环境及相关配置

目录
  • 1. Dubbo相关概念
    • 1.1 自动服务发现工作原理
  • 2. 启动文件
    • 2.1 zookeeper-3.4.11\bin\zkServer.cmd
    • 2.2 zookeeper-3.4.11\bin\zkCli.cmd
    • 2.3 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
    • 2.4 dubbo-monitor-simple-2.0.0\assembly.bin\start.bat
  • 3. 修改项目文件
    • 3.1 在pom.xml文件里导入相关依赖
    • 3.2 在application.properties文件 / src/main/resources/provider.xml文件中配置dubbo
      • 3.2.1 提供者
      • 3.2.2 消费者
    • 3.3 使用注解开启功能
  • 4. 配置文件
    • 4.1 配置文件的优先级
    • 4.2 不同粒度配置的覆盖关系
    • 4.3 关闭启动检查check
    • 4.4 超时timeout
    • 4.5 重试次数retries
    • 4.6 多版本version
    • 4.7 本地存根stub
    • 4.8 SpringBoot与Dubbo整合的三种方式

1. Dubbo相关概念

1.1 自动服务发现工作原理

2. 启动文件

这里指使用zookeeper作为注册中心;并启动相关dubbo监控;

2.1 zookeeper-3.4.11\bin\zkServer.cmd

可以在zookeeper-3.4.11\conf路径下配置zookeeper客户端的端口号以及data数据:

在zookeeper-3.4.11\bin目录下运行cmd启动zookeeper服务:

2.2 zookeeper-3.4.11\bin\zkCli.cmd

在zookeeper-3.4.11\bin目录下运行cmd启动zookeeper客户端:

2.3 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

可以在incubator-dubbo-ops-master\dubbo-admin\src\main\resources路径下修改application.properties文件中修改DubboWeb界面的端口:

在项目根路径下打开命令行,执行mvn clean package将项目打成jar包,再执行java -jar dubbo-admin-0.0.1-SNAPSHOT.jar命令运行Dubbo;


2.4 dubbo-monitor-simple-2.0.0\assembly.bin\start.bat

可以在dubbo-monitor-simple-2.0.0\conf路径下的dubbo.properties文件配置监控页端口:

在dubbo-monitor-simple-2.0.0\assembly.bin路径下双击运行start.bat文件:

3. 修改项目文件

需要对项目文件做些修改;以开启dubbo相关功能;

3.1 在pom.xml文件里导入相关依赖

<!-- 引入dubbo -->
<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>dubbo</artifactId>
	<version>2.6.2</version>
</dependency>
<!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端端 -->
<dependency>
	<groupId>org.apache.curator</groupId>
	<artifactId>curator-framework</artifactId>
	<version>2.12.0</version>
</dependency>

3.2 在application.properties文件 / src/main/resources/provider.xml文件中配置dubbo

3.2.1 提供者

<?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:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

	<!-- 1、指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) -->
	<dubbo:application name="user-service-provider"></dubbo:application>

	<!-- 2、指定注册中心的位置 -->
	<!-- <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> -->
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>

	<!-- 3、指定通信规则(name指定通信协议?通信端口) -->
	<dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>

	<!-- 4、暴露服务   ref:指向服务的真正的实现对象 -->
	<dubbo:service interface="com.atguigu.gmall.service.UserService"
		ref="userServiceImpl01" timeout="1000" version="1.0.0">
		<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
	</dubbo:service>

	<!--统一设置服务提供方的规则  -->
	<dubbo:provider timeout="1000"></dubbo:provider>

	<!-- 服务的实现 -->
	<bean id="userServiceImpl01" class="com.atguigu.gmall.service.impl.UserServiceImpl"></bean>

	<dubbo:service interface="com.atguigu.gmall.service.UserService"
		ref="userServiceImpl02" timeout="1000" version="2.0.0">
		<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
	</dubbo:service>
	<bean id="userServiceImpl02" class="com.atguigu.gmall.service.impl.UserServiceImpl2"></bean>

	<!-- 连接监控中心 -->
	<dubbo:monitor protocol="registry"></dubbo:monitor>

</beans>

3.2.2 消费者

<?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:dubbo="http://dubbo.apache.org/schema/dubbo"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--启用包扫描-->
	<context:component-scan base-package="com.atguigu.gmall.service.impl"></context:component-scan>

	<dubbo:application name="order-service-consumer"></dubbo:application>

	<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>

	<!--  配置本地存根-->

	<!--声明需要调用的远程服务的接口;生成远程服务代理  -->
	<!--
		1)、精确优先 (方法级优先,接口级次之,全局配置再次之)
		2)、消费者设置优先(如果级别一样,则消费方优先,提供方次之)
	-->
	<!-- timeout="0" 默认是1000ms-->
	<!-- retries="":重试次数,不包含第一次调用,0代表不重试-->
	<!-- 幂等(设置重试次数)【查询、删除、修改】、非幂等(不能设置重试次数)【新增】 -->
	<dubbo:reference interface="com.atguigu.gmall.service.UserService"
		id="userService" timeout="5000" retries="3" version="*">
		<!-- <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method> -->
	</dubbo:reference>

	<!-- 配置当前消费者的统一规则:所有的服务都不检查 -->
	<dubbo:consumer check="false" timeout="5000"></dubbo:consumer>

	<dubbo:monitor protocol="registry"></dubbo:monitor>
	<!-- <dubbo:monitor address="127.0.0.1:7070"></dubbo:monitor> -->

</beans>

在进行SpringBoot整合Dubbo时,以上信息可以配置进application.properties文件里;详情请见《4.8 SpringBoot与Dubbo整合的三种方式》

3.3 使用注解开启功能

注解 位置 功能
@EnableDubbo 开启dubbo相关功能 主启动类
@Service 暴露服务 服务提供者provider
@Reference 远程调用 服务消费者consumer

4. 配置文件

Dubbo 的 XML Schema 配置参考手册

dubbo:consumer 配置

4.1 配置文件的优先级

  • JVM 启动 -D 参数优先;
  • XML 次之;
  • Properties 最后,相当于缺省值;

4.2 不同粒度配置的覆盖关系

  • 越上面优先级越高;
  • 精确优先 (方法级优先,接口级次之,全局配置再次之);
  • 消费者设置优先(如果级别一样,则消费方优先,提供方次之);

4.3 关闭启动检查check

提供者有三种关闭启动检查注册中心的配置:

  • Spring配置文件
<!-- 关闭某个服务的启动时检查 (没有提供者时报错) -->
<dubbo:reference interface="com.foo.BarService" check="false" />

<!-- 关闭所有服务的启动时检查 (没有提供者时报错) -->
<dubbo:consumer check="false" />

<!-- 关闭注册中心启动时检查 (注册订阅失败时报错) -->
<dubbo:registry check="false" />
  • dubbo.properties
dubbo.reference.com.foo.BarService.check=false
dubbo.reference.check=false
dubbo.consumer.check=false
dubbo.registry.check=false
  • 通过 -D 参数
java -Ddubbo.reference.com.foo.BarService.check=false
java -Ddubbo.reference.check=false
java -Ddubbo.consumer.check=false
java -Ddubbo.registry.check=false

消费者有一种关闭启动检查服务提供者的配置:

<dubbo:reference check="false"/>

4.4 超时timeout

提供者:

<!-- 配置超时时间 -->
<dubbo:service interface="com.atguigu.gmall.service.UserService"
	ref="userServiceImpl01" timeout="1000"">
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>

消费者

<!-- 配置超时时间 -->
<dubbo:reference interface="com.foo.BarService"
	id="BarService" timeout="5000">
</dubbo:reference>

<!-- 还可以给具体方法配置超时时间(假设BarService里有testMethod方法) -->
<dubbo:reference interface="com.foo.BarService"
	id="BarService" timeout="5000">
	<dubbo:method name="testMethod" timeout="2000"></dubbo:method>
</dubbo:reference>

可以体现:

  • 精确优先 (方法级优先,接口级次之,全局配置再次之);
  • 消费者设置优先(如果级别一样,则消费方优先,提供方次之);

4.5 重试次数retries

消费者:

<!-- retries="":重试次数,不包含第一次调用,0代表不重试-->
<!-- 幂等(设置重试次数)【查询、删除、修改】、非幂等(不能设置重试次数)【新增】 -->
<dubbo:reference interface="com.foo.BarService"
	id="BarService" timeout="5000" retries="3" >
</dubbo:reference>

4.6 多版本version

提供者:

<!-- 1.0.0版本-->
<dubbo:service interface="com.atguigu.gmall.service.UserService"
	ref="userServiceImpl01" timeout="1000" version="1.0.0">
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>
<!-- 服务的实现 -->
<bean id="userServiceImpl01" class="com.atguigu.gmall.service.impl.UserServiceImpl"></bean>

<!-- 2.0.0版本-->
<dubbo:service interface="com.atguigu.gmall.service.UserService"
	ref="userServiceImpl02" timeout="1000" version="2.0.0">
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>
<bean id="userServiceImpl02" class="com.atguigu.gmall.service.impl.UserServiceImpl2"></bean>

消费者:

<!-- version指定用哪个版本,*表示随机版本-->
<dubbo:reference interface="com.atguigu.gmall.service.UserService"
	id="userService" timeout="5000" retries="3" version="*">
	<!-- <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method> -->
</dubbo:reference>

4.7 本地存根stub

提供者:

public class UserServiceStub implements UserService {
	private final UserService userService;

	/**
	 * 传入的是userService远程的代理对象
	 * @param userService
	 */
	public UserServiceStub(UserService userService) {
		super();
		this.userService = userService;
	}

	@Override
	public List<UserAddress> getUserAddressList(String userId) {
		System.out.println("UserServiceStub.....");
		if(!StringUtils.isEmpty(userId)) {
			return userService.getUserAddressList(userId);
		}
		return null;
	}
}

消费者:

<!--  配置本地存根-->
<dubbo:reference interface="com.atguigu.gmall.service.UserService"
	id="userService" timeout="5000" retries="3" version="*" stub="com.*.UserServiceStub">
</dubbo:reference>

4.8 SpringBoot与Dubbo整合的三种方式

  • 1.导入dubbo-starter;在application.properties配置属性;使用@Service暴露服务;使用@Reference引用服务;
  • 2.保留dubbo xml配置文件;导入dubbo-starter;使用@ImportResource导入dubbo的配置文件即可;

在主启动类上@ImportResource(locations="classpath:provider.xml")

  • 3.使用注解API的方式;将每一个组件手动创建到容器中,让dubbo来扫描其他的组件;使用@Service暴露服务;

主启动类上:@EnableDubbo(scanBasePackages="com.atguigu.gmall")

在config包下进行如下配置:

@Configuration
public class MyDubboConfig {

	@Bean
	public ApplicationConfig applicationConfig() {
		ApplicationConfig applicationConfig = new ApplicationConfig();
		applicationConfig.setName("boot-user-service-provider");
		return applicationConfig;
	}

	//<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
	@Bean
	public RegistryConfig registryConfig() {
		RegistryConfig registryConfig = new RegistryConfig();
		registryConfig.setProtocol("zookeeper");
		registryConfig.setAddress("127.0.0.1:2181");
		return registryConfig;
	}

	//<dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>
	@Bean
	public ProtocolConfig protocolConfig() {
		ProtocolConfig protocolConfig = new ProtocolConfig();
		protocolConfig.setName("dubbo");
		protocolConfig.setPort(20882);
		return protocolConfig;
	}

	/**
	 *<dubbo:service interface="com.atguigu.gmall.service.UserService"
		ref="userServiceImpl01" timeout="1000" version="1.0.0">
		<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
	</dubbo:service>
	 */
	@Bean
	public ServiceConfig<UserService> userServiceConfig(UserService userService){
		ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();
		serviceConfig.setInterface(UserService.class);
		serviceConfig.setRef(userService);
		serviceConfig.setVersion("1.0.0");

		//配置每一个method的信息
		MethodConfig methodConfig = new MethodConfig();
		methodConfig.setName("getUserAddressList");
		methodConfig.setTimeout(1000);

		//将method的设置关联到service配置中
		List<MethodConfig> methods = new ArrayList<>();
		methods.add(methodConfig);
		serviceConfig.setMethods(methods);

		//ProviderConfig
		//MonitorConfig
		return serviceConfig;
	}

}

到此这篇关于快速学会Dubbo的环境及相关配置配置的文章就介绍到这了,更多相关Dubbo 环境与配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于注解的Dubbo服务配置方法(实例讲解)

    基于注解的Dubbo服务配置可以大大减少dubbo xml配置文件中的Service配置量,主要步骤如下: 一.服务提供方 1. Dubbo配置文件中增加Dubbo注解扫描 <!-- 开启dubbo注解支持 --> <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 --> <dubbo:annotation package="com.bounter" /> 2.Service实现

  • dubbo中zookeeper请求超时问题:mybatis+spring连接mysql8.0.15的配置

    这两天准备复习一下java,所以写一个采用dubbo的商场项目练练手,却卡第一个测试上,启动provider服务和Consumer服务,请求接口却始终报zookeeper请求超时错误(dubbo+zookeeper服务端重复调用三次),经过排查,我的问题是出在dao层与数据库连接的问题上(而且provider方还不报错,我也是R-此处省略一万字,其他都是正常的,如果你不是出在dao层连接数据库的问题,此文可能对你帮助不大).dao层采用mybatis+spring连接mysql数据库版本8.0.

  • dubbo的配置文件详解(推荐)

    一.dubbo常用配置 <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心. eg.<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" /> <dubbo:reference/> 引用服务配置,用于创建一个远程服务代理,一个引用

  • 快速学会Dubbo的配置环境及相关配置

    目录 1. Dubbo相关概念 1.1 自动服务发现工作原理 2. 启动文件 2.1 zookeeper-3.4.11\bin\zkServer.cmd 2.2 zookeeper-3.4.11\bin\zkCli.cmd 2.3 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 2.4 dubbo-monitor-simple-2.0.0\assembly.bin\start.bat 3. 修改项目文件 3.1 在pom.xml文件里导入相关依赖 3.2 在ap

  • nacos配置中心持久化相关配置方式

    目录 首先去下载Nacos 下载完之后解压到本地 目前nacos只支持mysql做持久化 用记事本打开sql文件 看到我们的数据库多了几张表 今天我们介绍一下SpringCloudAlibaba开发微服务服务注册和配置中心nacos的安装和使用,以windows版本为例: 首先去下载Nacos 下载地址:https://github.com/alibaba/nacos/tags 我们选1.2.0版本的下载: 下载完之后解压到本地 查看目录结构: 这时我们可以选择在bin目录直接启动nacos,默

  • mac安装mysql数据库及配置环境变量的图文教程

    目录 安装mysql 配置环境变量 安装mysql 下载mysql.我下载的是:mysql-8.0.11-macos10.13-x86_64.dmg 双击打开mysql-8.0.11-macos10.13-x86_64.dmg,然后双击mysql-8.0.11-macos10.13-x86_64.pkg 一路点击继续,傻瓜式安装,没什么好说的 此处选择"Use Legacy Password Encryption",否则使用navicat连接mysql的时候,会报无法加载身份验证的错误

  • centeros7 安装配置环境jdk1.8的教程

    1.先卸载centeros自带jdk rpm-qa|grepopenjdk 查询出来的自带的openjdk 2.删除 rpm-e--nodeps 3.再次查询 rpm-qa|grepjdk 4.在usr/local创建文件夹 cd/usr/local mkdirjava 5.将jdk1.8放到刚刚创建的文件中 cd/usr/local/java 用xftp上传后解压 tar-zxvfjdk-8u181-linux-x64.tar.gz 6.进入刚刚解压的文件夹 cdjdk1.8.0_181/pw

  • 在阿里云的CentOS环境中安装配置MySQL的教程

    1 常规错误的yum安装方法: 在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6.24呢?答案是否定的. [root@typecodes ~]# yum -y install mysql mysql-server mysql-devel ...................... ....省略部分安装过程.... ...................... Installe

  • iOS使用Target如何快速科学的区分开发环境详解

    前言 本文主要给大家介绍了关于iOS利用Target区分开发环境的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 什么是区分开发环境: 请求的域名+第三方SDK账号的不同. 请求的域名-->因为开发环境和正式环境的服务器和数据库基本上都不是同一个. 第三方SDK账号-->第三方SDK需要账号区分防止开发测试数据污染正式环境 (推送+友盟统计是最明显的例子) 这篇文章要点: 如何使用Target去区分开发环境 如何在1的基础上面巧妙的区分第三方SDK的账号 最终目的

  • 为什么Java开发需要配置环境变量

    之前学习 Java 的时候,感觉最难做的一件事情就是配置 jdk 的环境.那叫一个困难啊,Path, JAVA_HOME, CLASSPATH 印象深刻的很-(但是现在 JDK11 不用再配置 classpath 了,jre 和 jdk 合并了) 就在去年暑假,要配 OpenCV 的环境,要调的东西还是比较多的,对环境配置的概念又加深了. 现在懂的多了,配过的环境也多了,配过的平台也不算少.现在就想分享一下 关于我对配环境这件事情的感受. 那就以 Windows 来说说环境配置的问题,Linux

  • Docker快速搭建PHP+Nginx+Mysql环境及踩坑

    目录 准备 创建目录 配置PHP 拉取php-fpm镜像 启动php-fpm 配置Nginx 拉取Nginx镜像 配置nginx.conf 启动Nginx 配置MySQL 拉取MySQL镜像 启动MySQL 常见问题 1.thinkphp报错 Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' 2.thinkphp 报错 STORAGE_WRITE_ERROR:./Application/Runtime/Cache/Home/4e64ea6a20

  • 使用sealos快速搭建K8s集群环境的过程

    目录 一.前言 二.sealos 三.准备环境 sealos 安装 虚拟机设置 网络 windows网络 虚拟机的网络 网卡配置 其他配置 RPM 源 四.安装开始 五.可能遇见的问题 sealos run的时候镜像下载缓慢 六.安装测试 安装Kubernetes Dashboard 一.前言 最近在做谷粒商城项目,搞到k8s了,但是跟这老师的方法一步一步做还是搭建不起来. 我不断的试错啊,各种bug都遇见了一个也没解决我真是啊哭死! 二.sealos 直到遇见一个大佬同学,告诉我sealos几

  • 教你快速搭建 React Native 开发环境

    React Native 官网地址:https://www.reactnative.cn/docs/environment-setup 开发平台 Windows 目标平台 Android 1.安装依赖 必须安装的依赖有 Node.JDK 和 Android Studio,Node 版本不得低于 14,React Native 需要 JDK 11,查看 JDK 版本的指令如下: javac -version 1-1.下载和安装 android studio 1-2.安装 Android SDK 目

随机推荐