SpringCloud入门学习笔记(二)

Dubbo篇

上接 SpringCloud入门学习笔记(一)-CSDN博客

背景

  服务之间的远程通信是分布式架构最基本的组成部分,传统意义上的通信,主要解决的是数据孤岛和数据联通的问题,侧重于数据的共享。随着SOA的出现,当前的需求主要集中于服务的解耦。除此之外,随着业务需求的增加导致微服务数量的增多,随之产生了很多问题,例如:协调线上的服务、根据不同服务的需求合理分配资源、动态更新服务中的配置信息等等。为了解决这些问题,就提出了Dubbo,统一的服务治理框架对服务进行统一的管理,保证高效。

1.1 概念


  Apache Dubbo是一个分布式服务框架,主要实现多个系统直接的高性能、透明化调用,相当于RPC(远程过程调用)框架,不过在此基础上实现了服务治理功能,比如:服务注册、监控、路由、容器等。从图中可以看出,除了RPC的功能之外,Dubbo的核心功能就是监控和服务注册。

1.2  Springboot集成Apache Dubbo

   虽然Apache Dubbo本身并不依赖于Springboot,也可以实现微服务,但是集成之后可以享受Spring Boot生态的框架和技术支持。下面是案例:

1.2.1 服务提供者  
  • 首先创建一个Maven工程springboot-provider,其中有2个模块:sample-api和sample-provider,其中sample-provider是一个Spring Boot工程。
  • 在sample-api模块中定义一个接口,并且通过mvn install安装到本地私服。

  •  在sample-provider中引入依赖
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.15</version>
        </dependency>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>sample_api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
  •  在sample-provider中实现IHelloWorld接口,使用Dubbo中的@Service注解发布服务
@Service
public class HelloServiceImpl implements IHelloWorld{

    @Value("${dubbo.application.name}")
    private String serviceName;

    @Override
    public String sayHello(String name){
        return String.format("[%s]:Hello,%s",serviceName,name);
    }
}
  •  在application.properties文件中添加Dubbo的配置信息
spring.application.name = springboot-dubbo-demo

dubbo.application.name = springboot-provider
dubbo.protocal.name = dubbo
dubbo.protocal.port = 20880
dubbo.registry.address = N/A
  •  写个启动类,加@DubboComponentScan注解,将@Service注解识别为Dubbo的service
@DubboComponentScan
@SpringBootApplication
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class,args);
    }
}
1.2.2 服务使用者
  • 创建一个Spring Boot项目springboot-cosumer,添加jar包依赖
  • 在application.properties中配置项目名称
  • 在启动类中使用Dubbo提供的@Reference注解来获得一个远程代理对象。
1.2.3  分析

  上述的案例通过点对点的方式实现服务之间的通信,Dubbo可以很好的集成注册中心来实现服务地址的统一管理。早期通过zookeeper来实现注册,关于zookeeper的介绍此处不提供。

1.3 Dubbo的其他应用

  • 集群容错
  • 负载均衡
  • 服务降级
  • 主机绑定规则
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值