对dubbo的理解

原理:

1:通过特殊的注解会给其创建一个特殊的动态代理对象,这个动态的代理对象会给他创建一个get()的方法,然后就会创建一个socket的对象(socket对象就是类似一个长连接,类似于两台在通讯的电话,一台去读,一台去写,当一方有呼应的时候就会请求过来一个accept的方法返回给socket对象,一旦有了返回就会建立起连接了)

2:然后就会对传递过来的参数进行打包然后进行序列化

3:接着就是会去到注册中心查找到需要访问的对应的接口的所对应的服务器的ip和端口,往这里发送请求

4:然后这边的服务器的话就 会一直监控着请求,一旦有请求过来,就马上会对他进行一个处理

5:首先会对之前的序列化的进行反序列化拿到各项的参数信息

6:通过上面拿到的信息从spring容器里面去拿到这个接口要实现的对象,然后通过解析出来的方法同时传入里面的参数,得到get方法返回的结果

7:最后是同样的方法去序列化数据返回给之前的调用者(创建socket,对象序列化,查找调用者的ip和端口,发送请求)

 

Dubbo是什么:

dubbo是一个阿里巴巴开发的开源分布式服务框架,致力于提供高性能和透明化的RPC(RPC 是一种协议,上面说的哪个dubbo 的原理就是这个协议,反过来说,dubbo就是rpc协议的实现框架)远程服务调用方案,是阿里巴巴集团的各成员站点的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持。

它可以跟spring无缝集成,说明着他就是在spring的基础上进行开发的,也说明着不是spring项目的话不能够使用dubbo

 

Dubbo的三大核心功能:

1:接口的远程方法的调用

2:智能的容错(就是当这个服务出现问题的时候不会直接报错,会自动重连几次,几次呢就是自己设计的,当然这个的话也会进行负载均衡的操作去调用别的服务)和负载均衡

3:服务的自动注册和发现(启动的时候会把id端口和发上去,然后还会把上面的服务下载到本地,就不需要频繁的去连接他了,当又新的再去异步下载)

 

RPC 是什么呢

就是远程的一个调用的协议,可以通过网络从计算机上面去远程调用上面的请求服务

RPC协议的底层原理,就是对象的序列化、反序列化以及序列化后数据的传输。就是说这边的服务会通过序列化去传输数据,另外一边通过反序列化的方式去拿到值

RPC的网络传输的协议就是http和tcp协议,这里的话推荐是使用tcp协议,因为越接近底层的东西是性能越高的,http协议的底层就是tcp,所以推荐使用tcp

 

注册中心Zookeeper:

什么是Zookeeper?

它是一个高效的分布式的协调的服务

 

 

 

Zookeeper的主要作用:

1、服务端服务的注册和客户端服务的发现

2、提高系统的可用性

3、提高系统的可伸缩性

4、集中管理服务 ;

 

 

在dubbo中有什么作用?

在dubbo里面的话主要的就是起到了服务的发现和注册的一个效果

 

Dubbo 的监控功能:
dubbo的话有一个监控的功能,会不停的监控dubbo 的服务有没有出现什么问题,这是一个异步调用的

 

序列化传输的目的:

序列化的目的就是转成字节的序列,字节的序列的话就是可以通过网络的传输,达到数据远程传输的效果,然后传过去那边再通过反序列化去拿到传过来的数据,就可以进行一个数据的传输的目的了

 

Dubbo使用注意事项:

1:domain实体类必须要进行序列化(因为dubbo里面的RPC是进行序列化反序列化的操作进行传输啥的,所以要进行序列化,不然会出现问题)

2:api是消费者,是被消费的,提供参数被别人使用的,server 是生产者,是生产参数的

3:生产者中的service是不要写实现类的,因为这个分布式的目的就是为了处理高并发的情况的,我们去对service和serviceimpl分开写的目的就是为了让处理数据的和提供参数的分开,处理的数据的多点服务去进行处理

4:注意server和api不是父子的项目关系,他们是一个同级关系的一个项目,在进行生产者的一个创建的时候需要注意这一点

5:生产者的依赖的创建的话就是要注意的就是他们每个之间的作用,一个是要与springboot 的集成,一个是dubbo 的依赖,最后一个就是zookeeper的客户端,就是实现服务的注册发现啥的

 

6:要注意的就是在生产者里面的要给消费者的服务的依赖也是 需要扯进来的,就是对应着的消费者的一个关联,也是像依赖导入那也放进来就行了

 

7:创建启动类的话是要在server上面去创建的,意思就是说调用的话是这个生产者的服务,让这个生产者去对数据进行生产

8:Zookeeper的启动:就是解压zookeeper的工具,然后去到bin文件,执行里面的zkServer.cmd服务就是启动了zookeeper了,他就有了服务的注册和发现的功能了

 

9:这个是有一个是一个统一调用的,简单来说就是controller放置的地方,暂时就是叫做一个website吧,这个是一个最大的服务,通过这个可以把作为一个controller

10:要注意的就是分布式里面的服务消费者的信息的要在这里面管理起来,所以所有的api都是需要关联的

一样是关联消费者,像导依赖一样导入就行了

 

11:在集成版的配置里面的话,要在配置文件里配置的话主要就是配置主要是:

生产者:

消费者:

12:服务启动的时候会默认的去检查关联的服务存在不存在,我们要是不想让她去检查,可以配置:

dubbo.consumer.check=false

13:我们配置负载均衡的策略的时候可以:

14:z在日常的升级的时候也有每一个版本的区别,我们也可以去指定的使用某一个的版本

15:消费者也可以设置超时的时间的

16:消费者在出现问题的时候也可能设置让它重试,我们可以给它配置重复的次数

17:服务走降级:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值