GenweiWu / Blog

个人技术能力提升
MIT License
4 stars 0 forks source link

2021_dubbo复习 #74

Open GenweiWu opened 3 years ago

GenweiWu commented 3 years ago

什么是SOA架构!!!

面向服务的架构 应用程序将不同的功能模块拆分成不同的服务,服务之前通过预定的接口进行通信调用;共同对外提供请求服务;

dubbo是什么?!!

dubbo是一个远程RPC调用框架,是阿里巴巴开源的;

2014 年开始停止维护过几年,17 年开始重新维护,并进入了 Apache 项目。

当当网维护了dubbox 后面阿里合并了dubbo和dubbox,继续更新维护,现在成了apache dubbo顶级项目

为什么要用dubbo

  1. dubbo是阿里巴巴开源的,不少大公司在使用,性能和稳定性上满足现网使用
  2. dubbo可以让核心服务分别暴露,这样一来服务可以方便的灵活扩展;另外只要注册到注册中心,可以部署多个服务实现灵活扩展

dubbo 对比 springCloud

组件 Dubbo Spring Cloud
服务注册中心 Zookeeper Spring Cloud Netflix Eureka
服务监控 Dubbo-monitor Spring Boot Admin
断路器 不完善 Spring Cloud Netflix Hystrix
服务网关 Spring Cloud Netflix Gateway
分布式配置 Spring Cloud Config
服务跟踪 Spring Cloud Sleuth
消息总线 Spring Cloud Bus
数据流 Spring Cloud Stream
批量任务 Spring Cloud Task

dubbo都支持哪些协议!!

等等

dubbo需要依赖web容器吗?

不依赖

dubbo内置了哪几种容器?

dubbo 节点角色!!!!!

节点 角色说明
Registry 服务注册、发现中心,一般有个zookeeper
Provider 服务提供者
Consumer 服务消费者
Monitor 监控中心,监控调用时间、调用次数等信息
Container 服务运行容器

摘自官网

dubbo调用流程!!!

  1. 容器启动,加载运行Provider
  2. Provider会向注册中心注册,表示自己可以提供哪些服务
  3. Consumer向注册中心注册,表示自己需要调用哪些服务
  4. 注册中心会给Consumer返回一个Provider的列表
  5. Consumer可以去调用Provider提供的服务,基于负载均衡策略
  6. Consumer和Provider会想Monitor提供调用信息,供其分析

dubbo默认使用功能的注册中心是什么?

Zookeeper,还有redis等

dubbo常见配置

provider

<?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://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口-->
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" protocol="dubbo" />
    <!--具体实现该接口的 bean-->
    <bean id="demoService" class="com.alibaba.dubbo.demo.impl.DemoServiceImpl"/>
</beans>

consumer

<?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://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <dubbo:application name="demotest-consumer" owner="programmer" organization="dubbox"/>
    <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--使用 dubbo 协议调用定义好的 api.PermissionService 接口-->
    <dubbo:reference id="permissionService" interface="com.alibaba.dubbo.demo.DemoService"/>
</beans>

在 Provider 上可以配置的 Consumer 端的属性有哪些?

dubbo启动时服务不可用会怎样?

启动时会检查provider是否可用,不可用会启动失败,抛出异常

默认 check="true",可以通过 check="false" 关闭检查。

负载均衡策略