Dubbo配置,高可用及相关原理

Dubbo

  • 基础知识:

什么是分布式系统:就是若干独立计算机的集合

RPC远程过程调用

影响RPC框架性能的两点:服务器之间能否快速建立连接;序列化与反序列化机制的反应速度

Dubbo与Spring Boot的整合步骤 :

  1. 在pom文件中加入Dubbo的依赖

  1. 在application.properties文件中加入配置:

       3.要暴露服务就用@service注解,要远程引用服务就用@Reference注解

       Dubbo配置文件的加载顺序:

      

启动时检查:

默认情况是=check=true;在启动时就会自动检查所需的服务是否在注册中心,如果没有就会报错。所以修改为false,只有在调用服务时才会检查服务是否可用。

服务超时:在规定时间内服务消费者没有对服务消费者做出反应就中止服务,防止线程大量阻塞

<Timeouot=0>:时间单位是毫秒,默认值是1000

起作用的优先级:

Timeout一般配合retries(重试次数)使用

Retries是一个整数,但是不包括第一次调用<retries=”0>,0代表不重试,一次出错就出错

在幂等(无论重试多少次输出效果都一样)方法设置重试次数来提高性能【查询,删除,修改】,非幂等方法不能设置重试次数【新增】

多版本:使用场景就是当系统出现不兼容的版本升级

Spring Boot的三种整合方式:

  1. 导入Dubbo的starter,在application.properties中配置Dubbo的相关的属性,主要使用@service标签来暴露服务和是哟个@Reference标签来引用。注意要用@EnableDubbo注解开启基于注解Dubbo功能
  2. 保留Dubbo的XML配置文件的方式,再加上@ImportResource

暴露服务也不需要用@Service注解

     3.使用注解API的方式

将每一个组件手动创建到容器中,让Dubbo扫描其他组件就可以

配置Dubbo的扫描路径:

高可用场景:

  1. zookeeper宕机与dubbo直连

现象:zookeeper注册中心宕机还可以消费dubbo暴露的服务

原因:

也可以绕过注册中心,即Dubbo直连:

  1. 集群下Dubbo负载均衡配置,默认使用随机权重负载均衡机制

即寻找处理最快的

服务降级:

什么是服务降级:当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务的和页面有策略地不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

可以通过服务降级功能临时屏蔽某个出错的非关键业务,并定义降级后的返回策略,向注册中心写入动态配置覆盖规则

其中:

  • mock=force:return+null表示消费方对该服务的方法的调用都直接返回null值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响

mock=fail:return+null表示消费方对该服务的方法调用在失败后在返回null值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响

集群容错:

在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover

集群容错模式:

整合Hystrix服务容错:

  1. 配置spring-cloud-starter-netfilx-hystrix

Springboot官方提供了对hystrix的集成,直接在pom.xml里加入依赖

@EnableHystrix开启服务容错

Dubbo的原理

RPC原理:

一次完整的RPC调用流程如下(同步调用):

  1. 服务消费方(client)调用以本地调用方式调用服务
  2. Client stub接收到调用后负责将方法,参数等组装成能够进行网络传输的消息体
  3. Client stub找到服务地址,并将消息发送到服务端
  4. Server stub接收到消息后进行解码
  5. Server stub根据解码结果调用本地的服务
  6. 本地服务执行并将结果返回给server stub
  7. Server stub将返回结果打包成消息并发送至消费方
  8. Client stub接收到消息并进行解码
  9. 服务消费方的到最终结果

RPC框架的目标就是将2-8步的过程封装起来,对用户不可见

Netty通信原理:

Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。极大地简化了TCP和UDP套接字服务器等网路编程。

阻塞式IO:

非阻塞式IO:

Selector一般称为选择器,也可以理解为多路复用器

Connect:连接就绪 -- Accept:接受就绪 -- Read:读就绪-- Write:写就绪

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值