dubbo yml配置_Dubbo专栏:SpringBoot整合Dubbo服务降级与豪猪断路器一

SpringBoot整合Dubbo与豪猪断路器,必须了解什么是服务降级?

      当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

工程目录

1762a869973ed45d286356ccb0444250.png

创建maven的坐标

<?xml version="1.0" encoding="UTF-8"?><project xmlns="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">    <parent>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-parentartifactId>        <version>2.0.4.RELEASEversion>        <relativePath />     parent>    <modelVersion>4.0.0modelVersion>    <artifactId>springboot-dubbo-service-providerartifactId>    <packaging>jarpackaging>    <name>boot-user-service-providername>    <description>Demo project for Spring Bootdescription>    <properties>        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>        <java.version>1.8java.version>    properties>    <dependencies>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starterartifactId>        dependency>        <dependency>            <groupId>com.examplegroupId>            <artifactId>iterface-commonartifactId>            <version>1.0-SNAPSHOTversion>        dependency>        <dependency>            <groupId>com.alibaba.bootgroupId>            <artifactId>dubbo-spring-boot-starterartifactId>            <version>0.2.0version>        dependency>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-testartifactId>            <scope>testscope>        dependency>        <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>                spring-cloud-starter-netflix-hystrix            artifactId>        dependency>    dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.bootgroupId>                <artifactId>spring-boot-maven-pluginartifactId>            plugin>        plugins>    build>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloudgroupId>                <artifactId>spring-cloud-dependenciesartifactId>                <version>Finchley.SR1version>                <type>pomtype>                <scope>importscope>            dependency>        dependencies>    dependencyManagement>project>

添加配置文件

application.yml

#dubbo.application.name=user-service-provider#dubbo.registry.address=127.0.0.1:2181#dubbo.registry.protocol=zookeeper##dubbo.protocol.name=dubbo##dubbo.protocol.port=20881##dubbo.monitor.protocol=registry##dubbo.scan.base-packages=com.atguigu.gmall

dubbo.properties

dubbo.protocol.port=20882

provider.xml

xml version="1.0" encoding="UTF-8"?>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">      <dubbo:application name="springboot-dubbo-service-provider">dubbo:application>            <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181">dubbo:registry>         <dubbo:protocol name="dubbo" port="20882">dubbo:protocol>         <dubbo:service interface="com.dubbo.common.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>            id="userServiceImpl01" class="com.yang.dubbo.service.impl.UserServiceImpl">            <dubbo:monitor protocol="registry">dubbo:monitor>   

创建配置类

package com.yang.dubbo.config;import java.util.ArrayList;import java.util.List;import com.dubbo.common.service.UserService;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.alibaba.dubbo.config.ApplicationConfig;import com.alibaba.dubbo.config.MethodConfig;import com.alibaba.dubbo.config.MonitorConfig;import com.alibaba.dubbo.config.ProtocolConfig;import com.alibaba.dubbo.config.ProviderConfig;import com.alibaba.dubbo.config.RegistryConfig;import com.alibaba.dubbo.config.ServiceConfig;@Configurationpublic class MyDubboConfig {@Bean   public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("springboot-dubbo-service-provider"); return applicationConfig; }// @Bean public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setProtocol("zookeeper"); registryConfig.setAddress("127.0.0.1:2181"); return registryConfig; }// @Bean public ProtocolConfig protocolConfig() {
ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20882); return protocolConfig; }/** * ref="userServiceImpl01" timeout="1000" version="1.0.0"> */ @Bean public ServiceConfiguserServiceConfig(UserService userService){
ServiceConfig 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 methods = new ArrayList<>(); methods.add(methodConfig); serviceConfig.setMethods(methods); //ProviderConfig //MonitorConfig return serviceConfig; }
}

service层

package com.yang.dubbo.service.impl;import java.util.Arrays;import java.util.List;import com.dubbo.common.bean.UserAddress;import com.dubbo.common.service.UserService;import org.springframework.stereotype.Component;import com.alibaba.dubbo.config.annotation.Reference;import com.alibaba.dubbo.config.annotation.Service;import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;@Service//暴露服务 @Componentpublic class UserServiceImpl implements UserService {@HystrixCommand   @Override   public ListgetUserAddressList(String userId) {// TODO Auto-generated method stub      System.out.println("UserServiceImpl..3.....");      UserAddress address1 = new UserAddress(1, "北京市昌平区宏福科技园综合楼3层", "1", "李老师", "010-56253825", "Y");      UserAddress address2 = new UserAddress(2, "深圳市宝安区西部硅谷大厦B座3层(深圳分校)", "1", "王老师", "010-56253825", "N");//    try {//       Thread.sleep(2000);//    } catch (InterruptedException e) {//       e.printStackTrace();//    }      if(Math.random()>0.5) {throw new RuntimeException();      }return Arrays.asList(address1,address2);   }
}

启动类

package com.yang.dubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.hystrix.EnableHystrix;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;/** * 1、导入依赖; *        1)、导入dubbo-starter *        2)、导入dubbo的其他依赖 * @author lfy * * SpringBoot与dubbo整合的三种方式: * 1)、导入dubbo-starter,在application.properties配置属性,使用@Service【暴露服务】使用@Reference【引用服务】 * 2)、保留dubbo xml配置文件; *        导入dubbo-starter,使用@ImportResource导入dubbo的配置文件即可 * 3)、使用注解API的方式: *        将每一个组件手动创建到容器中,让dubbo来扫描其他的组件 *///@EnableDubbo //开启基于注解的dubbo功能//@ImportResource(locations="classpath:provider.xml")@EnableDubbo(scanBasePackages="com.yang.dubbo")@EnableHystrix //开启服务容错@SpringBootApplicationpublic class BootUserServiceProviderApplication {public static void main(String[] args) {
SpringApplication.run(BootUserServiceProviderApplication.class, args); }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值