数据结构论坛

首页 » 分类 » 问答 » 分布式系列Java底层架构之RPC框
TUhjnbcbe - 2021/5/24 19:04:00

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

Dubbo是什么

简单说呢,Dubbo用起来就和EJB、WebService差不多,调用一个远程的服务(或者JavaBean)的时候在本地有一个接口,就像调用本地的方法一样去调用,它底层帮你实现好你的方法参数传输和远程服务运行结果传回之后的返回,就是RPC的一种封装啦~

当然,这个只是Dubbo的最基本的功能,它的特点是:

1.它主要是使用高效的网络框架和序列化框架,让分布式服务之间调用效率更高。

2.采用

注册中心

管理众多的服务接口地址,当你想调用服务的时候只需要跟注册中心询问即可,不用像使用WebService一样每个服务都得记录好接口调用方式。

3.

监控中心

:实现对服务方和调用方之间运行状态的监控,还能控制服务的优先级、权限、权重、上下线等,让整个庞大的分布式服务系统的维护和治理比较方便。

4.高可用:有个服务宕机了?注册中心就会从服务列表去掉该节点。还是调用到了?客户端会向注册中心请求另一台可用的服务节点重新调用。注册中心宕机?注册中心也能实现高可用(ZooKeeper)。

5.负载均衡:采用软负载均衡算法实现对多个相同服务的节点的请求负载均衡。

Dubbo注册中心

上面已经安装完成了zookeeper的注册中心了,这个注册中心主要就是负责dubbo的所有服务地址列表维护,并且可以通过在ZooKeeper节点中设置相应的值来实现对这个服务的权重、优先级、是否可用、路由、权限等的控制。

你可以先记住,之后在Dubbo的管理控制台对服务的一堆治理策略设置和调整,实际上就是修改了注册中心中的服务对应的配置数据(即修改了zookeeper中服务对应的节点的配置数据)。

之后

Consumer

从注册中心请求到服务的数据时就能根据这些配置数据进行相应的治理配置参数的代码执行生效。

Dubbo样例服务开发

这里我用maven构建项目,在Spring环境中配置Provider和Consumer。

先说明使用的依赖:

org.springframework

spring-core

4.2.3.RELEASE

org.springframework

spring-beans

4.2.3.RELEASE

org.springframework

spring-context

4.2.3.RELEASE

org.springframework

spring-test

4.2.3.RELEASE

org.springframework

spring-tx

4.2.3.RELEASE

org.springframework

spring-web

4.2.3.RELEASE

org.springframework

spring-webmvc

4.2.3.RELEASE

1
查看完整版本: 分布式系列Java底层架构之RPC框