Spring Cloud Alibaba,Apache Dubbo 的基本应用

Spring Cloud Alibaba,Apache Dubbo 的基本应用,第1张

Spring Cloud Alibaba,Apache Dubbo 的基本应用 一、为什么要用dubbo
  • 服务治理框架
  • 服务的监控
  • 服务的注册发现
  • 服务的通信
  • 服务的容错
  • 服务的负载均衡

SpringCloud Alibaba :

  • Dubbo
  • seata
  • rocketMQ
  • Nacos
  • Sentinel
二、Dubbo Spring Cloud的demo 2.1 创建一个项目
  • 创建一个spring-cloud-dubbo-example的maven工程

分别添加三个模块:

  • spring-cloud-dubbo-sample-api
  • spring-cloud-dubbo-sample-provider
  • spring-cloud-dubbo-sample-consumer

其中后面两个模块都是spring boot的应用。

修改 spring-cloud-dubbo-sample-provider 这个模块中:

  • 将dependencyManagement部分的依赖移动到parent pom.xml
  • 修改spring-cloud-dubbo-sample-provider中的pom.xml,增加parent模块的依赖

    com.gupaoedu.dubbo
    spring-cloud-dubbo-example
    1.0-SNAPSHOT
  •  添加maven依赖

    com.alibaba.cloud
    spring-cloud-starter-dubbo


    com.gupaoedu.dubbo
    1.0-SNAPSHOT
    spring-cloud-dubbo-sample-api


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery
2.2 定义服务接口

在spring-boot-dubbo-sample-api模块中,定义接口:

public interface IHelloService {
    String sayHello();
}
2.3 实现服务

在spring-boot-dubbo-sample-provider中,实现IHelloService接口:

public class HelloServiceImpl implements IHelloService{
    @Override
    public String sayHello() {
        return "Hello GuPao";
    }
}

添加 @EnableDiscoveryClient 注解:

@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudDubboSampleProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudDubboSampleProviderApplication.class, args);
    }

}
2.4 配置dubbo服务发布
  • 在服务实现类中添加 @Service 注解:
@Service
public class SayHelloServiceImpl implements ISayHelloService{

    @Override
    public String sayHello(String msg) {
        return "Hello, GuPaoEdu.cn";
    }
}

注意:@Service注解是这个下面的:org.apache.dubbo.config.annotation.Service

  • 配置dubbo提供方信息 
#dubbo 服务扫描基础包路径
dubbo.scan.base-packages=com.gupaoedu.dubbo.springclouddubbosampleprovider
dubbo.protocol.id=dubbo
# Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称,port 为协议端口( -1 表示自增端口,从 20880 开始)
dubbo.protocol.name=dubbo
#表示从20880自增
dubbo.protocol.port=-1
spring.cloud.nacos.discovery.server-addr=192.168.216.128:8848
  • dubbo.scan.base-packages : 指定 Dubbo 服务实现类的扫描基准包
  • dubbo.protocol : Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称, port 为协议端口( -1 表示自增端口,从 20880 开始)
  • dubbo.registry : Dubbo 服务注册中心配置,其中子属性 address 的值 "springcloud://localhost",说明挂载到 Spring Cloud 注册中心
  • spring.cloud.nacos.discovery : Nacos 服务发现与注册配置,其中子属性 server-addr指定 Nacos 服务器主机和端口
2.5 版本规范

        项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从 0 开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用 0,即版本号为 0.x.x 的格式。

        由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloudcommons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:

  • 1.5.x 版本适用于 Spring Boot 1.5.x
  • 2.0.x 版本适用于 Spring Boot 2.0.x
  • 2.1.x 版本适用于 Spring Boot 2.1.x
  • 2.2.x 版本适用于 Spring Boot 2.2.x
2.6 构建服务消费者 2.6.1 添加jar包依赖

    com.alibaba.cloud
    spring-cloud-starter-dubbo


    org.springframework.boot
    spring-boot-actuator


    com.gupaoedu.dubbo
    1.0-SNAPSHOT
    spring-cloud-dubbo-sample-api


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery


    org.springframework.boot
    spring-boot-starter-web
2.6.2 添加配置文件
spring.application.name=spring-cloud-dubbo-sample-consumer
dubbo.application.name=spring-cloud-dubbo-sample-consumer
dubbo.cloud.subscribed-services=spring-cloud-dubbo-sample-provider
spring.cloud.nacos.discovery.server-addr=192.168.216.128:8848

        除应用名称 spring.application.name 存在差异外, spring-cloud-dubbo-client-sample 新增了属性 dubbo.cloud.subscribed-services 的设置。并且该值为服务提供方应用 "springcloud-dubbo-sample-provider"。
        它的主要作用是服务消费方订阅服务提供方的应用名称的列表,若需订阅多应用,使用 "," 分割。不推荐使用默认值为 "*",它将订阅所有应用。

2.6.3 编写测试代码
@RestController
@SpringBootApplication
public class SpringCloudDubboSampleConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudDubboSampleConsumerApplication.class, args);
    }

    @Reference
    ISayHelloService sayHelloService;

    @GetMapping("/say")
    public String say(){
        return sayHelloService.sayHello("Mic");
    }


}
2.5.4 测试 

访问:http://localhost:8080/say

三、Dubbo Spring Boot 3.1基于spring boot集成Dubbo方式

dubbo集成到spring boot中有一个好处,就是它可以继承spring boot本身的特性

  • 自动装配(注解驱动、自动装配)
  • production-ready(安全机制、健康检测、外部化配置)
3.2 创建项目结构

创建基础的项目结构:

spring-boot-dubbo-example [maven]

  • spring-boot-dubbo-sample-api [maven]
  • spring-boot-dubbo-sample-provider [spring boot]
  • spring-boot-dubbo-sample-consumerp [spring-boot]
3.3 添加jar包依赖

        从2.7开始,dubbo的版本和dubbo-spring-boot的版本是保持一致的,所以大家不用再去担心版本的问题。


    org.apache.dubbo
    dubbo-spring-boot-starter
    2.7.7


    com.alibaba.nacos
    nacos-client
    1.2.1
3.4 添加服务以及发布
@DubboService(registry = {"shanghai","hunan"},version = "2.0")
public class SayHelloServiceImpl2 implements ISayHelloService {

    @Override
    public String sayHello(String msg) {
        return "[Version2.0]Hello,"+msg+" GuPaoEdu.cn";
    }
}
registry = {"shanghai","hunan"},version = "2.0"
这一块是设置注册中心,可选参数
spring.application.name=spring-boot-dubbo-sample-provider
dubbo.registry.address=nacos://192.168.216.128:8848
dubbo.scan.basepackages=com.gupaoedu.springboot.dubbo.springbootdubbosampleprovider.service
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
3.5 客户端编写服务引用代码 3.5.1 添加jar包依赖

    org.springframework.boot
    spring-boot-starter-web


    com.gupaoedu.com
    1.0-SNAPSHOT
    spring-boot-dubbo-sample-api


    org.apache.dubbo
    dubbo-spring-boot-starter
    2.7.7


    com.alibaba.nacos
    nacos-client
    1.2.1
3.5.2 添加web测试类
@RestController
@SpringBootApplication
public class SpringBootDubboSampleConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDubboSampleConsumerApplication.class, args);
    }

    @DubboReference(registry = {"shanghai","hunan"},version = "2.0")
    ISayHelloService sayHelloService;

    @GetMapping("/say")
    public String say(){
        return sayHelloService.sayHello("Mic");
    }

}
3.5.3 配置 
dubbo.registry.address=nacos://192.168.216.128:8848
3.5.4 测试



 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5612593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存