Dubbo学习记录------快速入门(一)

Dubbo学习记录------

Dubbo介绍

Dubbo是由阿里巴巴开源的一个高性能、基于Java开源的远程调用框架。如其他RPC系统一样,Dubbo是基于定义服务的概念,指定可以通过参数和返回类型远程调用的方法。在服务器端,服务器实现这个接口,并运行一个Dubbo服务器来处理客户端调用。在客户端,客户机有一个存根,它提供与服务器相同的方法。
Dubbo的三个核心功能:基于接口的远程调用、容错和负载均衡,以及服务的自动注册与发现。Dubbo框架广泛的在阿里巴巴内部使用,以及其他平台。

角色介绍

Container:服务运行容器
Provider:服务提供者
Consumer:服务消费者
Registry:服务注册与发现中心
Monitor:监控器,统计服务的调用次数和调用时间的监控中心
【Provider】—》(1.register)【Registry】:服务提供者注册到注册中心
【Consumer】----》(2.subscribe)【Registry】;服务消费者去注册中心订阅
【Registry】—》(3.notify)【Consumer】:注册中心告知消费者订阅成功,能够找到对应的服务提供者
【Consumer】—》(4.invoke)【Provider】:远程调用生产者进行消费。
【Monitor】:监控整个Dubbo运行的参数。
整个过程中,只有消费者调用生产者是同步,其他均为异步操作

Multicast注册中心

Multicast注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
1.提供方启动时广播自己的地址
2.消费方启动时广播订阅请求
3.提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了unicast=false,则广播给订阅者
4.消费方收到提供方地址时,连续该地址给RPC调用。
不建议生产使用Multicast,只适合小规模使用。组播地址段:224.0.0.0-239.255.255.255

案例:Multicast

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <dubbo.version>2.7.3</dubbo.version>
    </properties>
 <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

创建demo,Project下包含三个maven项目,分别是api,customer,provider。
api项目中,创建接口。
provider项目中实现接口,并且在实现Service上不能用

不能用@Component注解,要使用dubbo提供的@Service注解
并且Service注解可以指定版本@Service(version="1.0"),如果消费着调用的版本不同时,也是无法调用的。

配置文件配置

# 防止端口冲突
server:
  port: 8001

# dubbo配置
dubbo:
  application:
    # 应用名称
    name: provider
  registry:
    # 注册中心地址
    address: multcast://224.5.6.7:1234
    # 超时时间
    timeout: 6000
  protocol:
    # 协议名称
    name: dubbo
    # 协议端口
    port: 20880
  scan:
    # 扫描包位置,暴露服务位置
    base-packages: com.dubbo.provider.service

而在customer项目中,

@Component
public class ss implements CommandLineRunner {
    //不用autowired注解,而是使用Reference注解,并且该注解时dubbo中的,不要选成其他的。
    //unicast由于本机自测,需要使用广播方式,才能获取到服务提供者
    @Reference(version = "1.0",parameters = {"unicast","false"})
    private UserService userService;
    
    @Override
    public void run(String... args) throws Exception {
        System.out.println(userService.findById());
    }
}

另外在配置文件中配置:

# 防止端口冲突
server:
  port: 8002

# dubbo配置
dubbo:
  application:
    # 应用名称
    name: consumer
  registry:
    # 注册中心地址
    address: multcast://224.5.6.7:1234

注意:不推荐使用Multicast注册中心

推荐使用Zookeeper作为注册中心

Dubbo支持curator作为Zookeeper客户端实现。
Zookeeper是开源的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个分为应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
在此,Zookeeper主要作为服务注册中心存在。将编写好的服务注册到Zookeeper服务注册中心。
服务注册中心,给客户端提供可调用的服务列表,客户端在调用远程服务时,根据服务列表选择服务方的服务地址进行服务调用。负责服务地址的注册与发现,相当于目录服务。
是一个树形结构。

单节点版本搭建

创建安装目录zookeeper。

mkdir -p /usr/local/zookeeper

解压

tar zxvf zookeeper-3.6.1-bin.tar.gz -C /usr/local/zookeeper

把conf目录下的zoo_sample.cfg改名为:zoo.cfg

mv zoo_sample.cfg zoo.cfg

配置文件内容介绍:

# 心跳的秒数
tickTime = 2000
# 初始化的线程数
initLimit = 10
# 同步的线程数
syncLimit = 5
# 数据的目录
DataDir = /tmp/zookeeper
# 建议指定自定义目录
DataDir = /usr/local/zookeeper/data
logDir = /usr/local/zookeeper/logs
# 默认端口2181
clientPort = 2181

bin目录下:
主要关注:zkServer.sh(linux启动程序)
启动命令:

./zkServer.sh start

查看启动状态:

./zkServer.sh status

引入curator客户端依赖

在api项目中,引入依赖。注册中心客户端引入curator客户端

<dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <type>pom</type>
        </dependency>

生产者yml文件修改

dubbo:
  application:
    # 应用名称
    name: provider
  registry:
    # 注册中心地址,改为自己本机IP
    address: zookeeper://192.168.10.100:2181
    # 超时时间
    timeout: 6000
    # 元中心地址
   metadata-report:
   	address:zookeeper://192.168.10.100:2181
  protocol:
    # 协议名称
    name: dubbo
    # 协议端口
    port: 20880
  scan:
    # 扫描包位置,暴露服务位置
    base-packages: com.dubbo.provider.service

消费者只需要把注册中心地址改为zookeeper地址即可,不需要添加元数据中心地址.
消费者会拉去注册中心的服务缓存到本地,即使注册中心宕机,之前的服务也能用,但是新的服务无法发现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值