Java — Dubbo 高效的RPC框架

Java — Dubbo : 高效的RPC框架(1)

高效:协议和封装

Dubbo简介:

​ 是一个高可用的,基于Java的开源RPC框架;Dubbo框架不仅仅你是具备RPC的访问功能,还包含服务治理功能。执行效率高。

​ 执行效率:越底层越高效

​ 2.7以后是Apache,2.7之前是阿里巴巴的。

​ 区别在于包名,不是类名。

Dubbo架构讲解

1、架构图

​ 首先有一个注册中心,不强制要求要什么,就是以一个软件,可以不要注册中心,背下来IP和端口。推荐软件使用:zookeeper

​ duubo不能独立开发,必须依赖于容器,容器就是spring容器。

​ duubo是根据配置文件连接zookeeper;根据注解获得配置文件去创建bean对象;然后拿到duubo内置类似于工厂的东西;获取到bean对象;连接到zookeeper,拼一个URL地址;往zookeeper里面一存;就算服务器启动了。

​ duubo干的活与我们基于RMI手写的RPC是一样的。具体的服务代码,还是需要我们自行定义。而是帮助我们做服务的发布,把我们写好的代码发布到zookeeper上。

​ dubbo是用节点的名字存储的URL地址。拿到URL地址之后就可以创建代理对象,本地调方法,远程服务,进行返回。

​ Monitor:监控中心、监控器。很弱鸡,只能干一个活,而且是被动的。duubo提供了一个小的外部应用,下载启动,只需要写一个zookeeper在哪。启动的之后就等着。等着客户端、服务端发消息。服务端:当前服务端被调用了多少次;客户端:当前调用了那个服务几次。就是统计数据,而且是被动的。

start:先启动容器,Spring可以启动。读取所有的服务端代码,发布到zookeeper中。服务端代码在dubbo中叫Provider(服务的提供者)

register:注册,发布

subscribe:发现、订阅

客户端启动的时候连接zookeeper,拿到URL地址,创建一个代理对象,然后远程调用。

init线条代表初始化;虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结果才能继续执行,相对性能低。

证明Dubbo的服务的代码测试:

首先创建一个maven类型的项目,项目名new_dubbo

在项目中导入依赖,dubbo是要必须依赖于spring容器。所以可以导入springboot的依赖

<!--dubbo必须依赖于spring-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

导过依赖之后再创建一个new_dubbo的子项目new_dubbo_provider(供应商)。

在new_dubbo_provider的pom.xml文件下导入依赖。
 <dependencies>
        <!--启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!--dubbo的基于spring-boot的依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.7</version>
        </dependency>

    </dependencies>
创建一个接口
package com.bjsxt.service;

public interface FirstService {
   
    String sayHello(String name);
}

创建接口的实现类
package com.bjsxt.service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值