什么是Dubbo

Dubbo是阿里巴巴开源的基于 Java 的高性能RPC(一种远程调用) 分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。

简单的说,Dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有Dubbo这样的分布式服务框架的需求。

Dubbo快速入门_RPC

从头到尾主要就是一个Dubbo的@Service注解,能将服务发送到注册中心。还有就是一个@Reference注解,能从远程zookeeper注册中心获取对应的资源。注意注册和获取的接口名字要一样。

//@Service//这个是spring的注解,就是交给spring容器管理
@Service//这个是dubbo的注解,将服务对外发布,将地址发送到注册中心
public class UserServiceImpl implements UserService {
    public String sayHello() {
        return "hello Dubbo";
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
@RestController
@RequestMapping("/user")
public class UserController {
//    @Autowired
    /*
    1.将zookeeper注册中心获取userService的访问url
    2.将结果进行远程调用RPC
    3.将结果封装为一个代理对象,赋给变量
     */
    @Reference//远程注入
    private UserService userService;
    @RequestMapping("/sayHello")
    public String sayHello(){
        return userService.sayHello();
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

所需要的依赖

<dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

注意这里版本是有要求的,否则可能报错,例如: java.lang.NoClassDefFoundError: org/apache/jute/BinaryInputArchive

dubbo的配置:

<context:component-scan base-package="com.study.controller"/>
    <!--    1配置项目的名字-->
    <dubbo:application name="dubbo-web"/>
    <!--    配置注册中心的地址-->
    <dubbo:registry address="zookeeper://192.168.116.133:2181"/>
    <!--    配置dubbo包扫描-->
    <dubbo:annotation package="com.study.controller"/>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

报如下错误是因为监控进程的端口冲突

Dubbo快速入门_zookeeper_02

修改一下就可以了,一般也不会改,因为一般是集群,不会在一台电脑上

<dubbo:application name="dubbo-web">
    <dubbo:parameter key="qos.port" value="33333"/>
</dubbo:application>
  • 1.
  • 2.
  • 3.