学习dubbo,记录一些小知识点。
# # 先熟悉一个概念,什么是RPC
RPC 就是远程过程调用,A服务器调用B服务器上的服务。
原理图如下:
# # 了解一下影响性能的几个因素
远程调用,重要的有网络传输,还有从图上可以看出来的是,传输参数,和返回相应结果,都需要序列化,所以序列化也是重要 的因素。
# # dubbo的优良特性
# # dubbo的设计架构
左右分别是消费者和生产者(服务提供者),上边的是注册中心,一般配置zookeper,下边的是监控中心,持续的监控使用情况。 监控中心能够给我们提供可视化展示界面,方便我们对服务的管理查看
# # dubbo的使用步骤 (最佳的步骤文档是double官方文档)
先搭建 注册中心,官网给我们推荐的是zk。有需要的话就搭建一下监控中心。这里不做具体的步骤了。
搭建好了以后,就是生产者工程和消费者工程。然后将他们注册到 zk上去
# # Dubbo 配合SpringBoot
springBoot真的好用,让Dubbo 的使用变得极方便。
第一步: pom文件导入 starter
第二步:相关的配置
第三部:生产者暴露服务
注意这个 @service 是 Dubbo 的
第四步:消费者注入使用 @ Reference
# # 配置文件相关东西- 配置优先级
第一个是 JVM 配置的参数,是优先级最高的。
第二个是 xml形式,优先级中间。
第三个是 properties 的形式,是优先级低的。
# # 配置相关 - 启动时检查
启动时检查,就是如果先启动了消费者,没有启动消费者,在启动过程就会报错。如果将启动时检查关闭,就在调用时就会报错。
# # 小配置的优先级
比方说配置方法的超时时间。思想就是最精确的最优先,方法,接口,全局配置,小的优先就是方法。
# # 重试次数
重试次数是指在失败以后再尝试调用。 规则是 不包括第一次,再试几次。比方说 配置3 , 如果失败以后就尝试3次。
这里我们需要明确的知道的是,我们要保证幂等性,对于查询操作重试没有问题,对于修改操作如果不关注返回值的话,影响也不大,删除操作不关注返回结果的话,也没问题。对于插入操作就不一样了。
# # 多版本的问题
对于一个接口,如果我们不能一下子替换,需要检测效果,我们就可以这样来做。保留旧版本,一部分人可以调用新版本,一部分人可以调用旧版本
# # 高可用问题
问题是这样的,zk宕机了以后,能不能调用服务。如果消费者已经调用过生产者,那就可以继续调用。因为我们还有本地缓存。这个道理呢就相当于是婚介中心倒闭了,但是你们是在他倒闭之前认识的,那么你们依旧能够联系,因为你们已经互留了电话号码。甚至知道对方在几单元几户住着。
另外一个问题是,我们可以配置dubbo直连的形式。方式就是配置一下地址。 这个直连呢,就好比方是 你在学校谈了女朋友,没有通过婚介中心,就知道对方是谁,她家在哪里。
还有一个问题就是zk集群的问题,集群中只要有一个存在,就能够当注册中心去使用。
# # 负载均衡
负载均衡有这么几个算法:随机负载;权重负载,轮询
# # 服务降级
服务降级呢,指的是,当服务器压力上来以后,选择放弃相应一些请求,以保证核心服务能够正常提供服务。
第一种是使用dubbo的管理工具屏蔽掉,请求来了以后不做任何处理,直接返回 null
第二种呢就是设置超时时间。
# # 服务容错
服务容错指的是在服务提供者不能返回结果时候,返回一个我们预定的格式的数据。dubbo需要配合使用Hystrix 来使用。