Dubbo学习笔记

视频资源:尚硅谷Dubbo教程(dubbo经典之作)

1. Dubbo初识

特性:

  1. 面向接口代理的高性能RPC调用:

    提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。

  2. 智能负载均衡:

    内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。

  3. 服务自动注册与发现:

    支持多种注册中心服务,服务实例上下线实时感知。

    img

    过程:

    1.各微服务启动时,将自己的实例信息注册到注册中心,注册中心存储这些数据

    2.注册中心检测服务提供者的连接状态

    3.服务消费者从注册中心获取服务提供者的实例信息

    4.服务消费者远程调用服务提供者提供的接口服务

  4. 高度可拓展能力:

    遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。

  5. 运行期流量调度:

    内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。

  6. 可视化的服务治理与运维:

    提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。

2. Dubbo架构

//imgs/v3/concepts/threecenters.png

Dubbo 定义了一些中心化组件,这包括:

  • 注册中心(Registry)。协调 Consumer 与 Provider 之间的地址注册与发现
  • 配置中心(Config Center)。
    • 存储 Dubbo 启动阶段的全局配置,保证配置的跨环境共享与全局一致性
    • 负责服务治理规则(路由规则、动态配置等)的存储与推送
  • 元数据中心(Metadata)。
    • 接收 Provider 上报的服务接口元数据,为 Admin 等控制台提供运维能力(如服务测试、接口文档等)
    • 作为服务发现机制的补充,提供额外的接口/方法级别配置信息的同步能力,相当于注册中心的额外扩展

Provider(服务提供者)、Consumer(服务消费者),比如用户Web(界面)就是consumer,用户业务(服务)就是provider。

Architecture

注意init、async、sync的不同步骤

3. ZooKeeper注册中心

Dubbo官方推荐使用ZooKeeper

ZooKeeper是Apache Hadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度高,可用于生产环境,并推荐使用。

3.1 Dubbo-Admin

项目Github地址:https://github.com/apache/dubbo-admin/tree/master

是一个Maven项目,并且是Springboot的项目,需要打包执行,运行Dubbo-Admin需要运行ZooKeeper

3.2 编写一个Hello World

假设有一个场景,有一个订单服务和一个用户服务,用户在支付时,订单服务需要获取到用户的所有地址:

I8jECiFNQ5fVXg4

在单体应用中,所有的beanserviceserviceImpl全都放在一个项目中。在分布式项目中,比如用户服务订单服务在两个独立的项目中,这时候bean、service就不应当在每个项目中都重复定义,此时应当建立一个interface的项目,在其中定义如UserOrderUserServiceOrderService;用户服务的项目和订单服务的项目都依赖这个interface项目(在pom.xml中添加对这个项目的依赖)。

izNxAvy2RLXpOfm

用户服务的项目中没有UserService这个接口,而只有UserServiceImpl这个实现类;订单服务相同。倘若这两个项目需要调用对方项目中的方法,需要provider(服务提供者)先将自己(服务)注册到注册中心,然后让consumer(服务消费者)去注册中心中订阅服务提供者的服务地址。

在配置服务提供者和服务消费者时,如果不使用注解而只使用xml配置文件将会非常繁琐,以服务提供者举例,涉及到:

  1. 指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
  2. 指定注册中心的位置
  3. 指定通信规则(通信协议、通信端口)
  4. 暴露服务
  5. 标明服务的实现的位置

provider.xml

<?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"
       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">

    <!-- 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;port随意写即可-->
    <dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>

    <!-- 4、暴露服务   ref:指向服务的真正的实现对象 -->
    <dubbo:service interface="com.zzw.gmall.service.UserService" ref=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值