IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> dubbo高级配置(笔记) -> 正文阅读

[网络协议]dubbo高级配置(笔记)

一、序列化

  • dubbo 内部已经将序列化和反序列化的过程内部封装了
  • 我们只需要在定义pojo类时实现Serializable接口即可
  • 一般会定义一个公共的pojo模块,让生产者和消费者都依赖该模块。
/**
 * 注意!!!
 *  将来所有的pojo类都需要实现Serializable接口
 */
public class User implements Serializable {}

二、?地址缓存

  • dubbo服务消费者在第一次调用时,会将服务提供方地址缓存到本地,以后在调用则不会访问注册中心。
  • 当服务提供者地址发生变化时,注册中心会通知服务消费者。

三、?超时与重试

  • 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
  • 在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。
  • dubbo 利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
  • 使用timeout属性配置超时时间,默认值1000,单位毫秒。(一般在在服务端设置)
  • 通过 retries ?属性来设置重试次数。默认为 2 次(一般在在服务端设置)
@Service(timeout = 3000,retries = 2)//当前服务3秒超时,重试2次,一共3次
public class UserServiceImpl implements UserService {}

四、多版本

  • 灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能。
  • dubbo 中使用version 属性来设置和调用同一个接口的不同版本(消费者和服务端都需要设置)

?服务端1:

@Service(version = "v1.0")
public class UserServiceImpl implements UserService {}

服务端2:?

@Service(version = "v2.0")
public class UserServiceImpl2 implements UserService {}

消费者:?

@RestController
@RequestMapping("/user")
public class UserController {


    /*
        1. 从zookeeper注册中心获取userService的访问url
        2. 进行远程调用RPC
        3. 将结果封装为一个代理对象。给变量赋值

     */

    @Reference(version = "v2.0")//远程注入
    private UserService userService;
}

五、负载均衡

负载均衡策略(4种):(在服务端设置权重,在消费者设置均衡策略)

  • Random :按权重随机,默认值。按权重设置随机概率。
  • RoundRobin :按权重轮询。
  • LeastActive:最少活跃调用数,相同活跃数的随机。
  • ConsistentHash:一致性 Hash相同参数的请求总是发到同一提供者。

?服务端

@Service(weight = 100)
public class UserServiceImpl implements UserService {}

消费者?

@RestController
@RequestMapping("/user")
public class UserController {

    @Reference(loadbalance = "random")//远程注入
    private UserService userService;
}

六、集群容错

集群容错模式:(在消费者设置cluster 属性)

  • Failover Cluster:失败重试。默认。当出现失败,重试其它服务器 ,默认重试2次,使用 retries 配置。一般用于读操作
  • Failfast Cluster 快速失败,只发起一次调用,失败立即报错。通常用于写操作。
  • Failsafe Cluster 失败安全,出现异常时,直接忽略。返回一个空结果。
  • Failback Cluster 失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作
  • Forking Cluster 并行调用多个服务器,只要一个成功即返回
  • Broadcast ?Cluster 广播调用所有提供者,逐个调用,任意一台报错则报错。

?

@RestController
@RequestMapping("/user")
public class UserController {

    @Reference(cluster = "failover")//远程注入
}

七、服务降级

在消费者中设置

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:59:55  更:2022-02-28 16:03:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:47:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码