SpringBoot(十九)——————Spring Boot与分布式、ZooKeeper、Dubbo

参考源码说明:https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md

Dubbo版本升级说明:https://github.com/apache/dubbo-spring-boot-project/releases

源码地址:https://github.com/877148107/springboot_integrate/tree/master/springboot-integrate-dubbo-provider

目录

分布式应用

ZooKeeper

Dubbo

安装 ZooKeeper

1、docker拉取ZooKeeper镜像

 2、启动ZooKeeper镜像

SpringBoot整合 ZooKeeper、Dubbo

1、创建一个提供者工程

1)、引入pom依赖

2)、配置dubbo属性

3)、将服务发布出去

4)、启动工程

2、创建一个消费者工程

1)、引入pom依赖

2)、配置dubbo属性

3)、新建一个服务提供接口

4)、远程引用

 5)、测试

 错误信息


  • 分布式应用

在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud。分布式当中涉及到远程过程调用RPC框架,以前大多数都是使用的webservice进行调用但是这样调用比较麻烦,因此现在基本上都使用了RPC框架dubbo、Springcloud。

在分布式应用调用的过程就会使用的一个注册中心(zookeeper)和远程过程调用(dubbo)

  • ZooKeeper

ZooKeeper官网:https://zookeeper.apache.org

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Zookeeper主要是作为注册中心使用。

  • Dubbo

Dubbo官网:http://dubbo.apache.org/zh-cn/

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

dubbo主要用于分布式服务调用框架。

工作图:

  • 安装 ZooKeeper

1、docker拉取ZooKeeper镜像

[root@localhost ~]# docker pull zookeeper

 2、启动ZooKeeper镜像

[root@localhost ~]# docker run --name zk01 -p 2181:2181 --restart always -d bbebb888169c 

  • SpringBoot整合 ZooKeeper、Dubbo

1、创建一个提供者工程

springboot-integrate-dubbo-provider,服务提供者提供一个买票服务。详细代码见源码

1)、引入pom依赖

<!--引入dubbo依赖-->
        <!-- https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.5</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>

2)、配置dubbo属性

#名称
dubbo.application.name=springboot-integrate-dubbo-provider
#发布到注册中心的地址
dubbo.registry.address=zookeeper://192.168.0.113:2181
#将那个包下的服务发布出去
dubbo.scan.base-packages=com.wmy.integrate.service

3)、将服务发布出去

@org.apache.dubbo.config.annotation.Service

@Component
@Service
public class TicketServiceImpl implements TicketService{

    @Override
    public String buyTicket() {
        return "《熊出没》";
    }
}

4)、启动工程

2、创建一个消费者工程

springboot-integrate-dubbo-consume,消费者去买一张票,。详细代码见源码

1)、引入pom依赖

<!--引入dubbo依赖-->
        <!-- https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.5</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>

2)、配置dubbo属性

#服务消费者名称
dubbo.application.name=springboot-integrate-dubbo-consume
#注册中心的地址
dubbo.registry.address=zookeeper://192.168.0.113:2181

3)、新建一个服务提供接口

包路径、名称和类名都一样


public interface TicketService {

    String buyTicket();
}

4)、远程引用

@Reference

@Service
public class UserService {

    @Reference
    TicketService ticketService;

    public void bugTicket(){
        String ticket = ticketService.buyTicket();
        System.out.println("电影票:"+ticket);
    }
}

 5)、测试

@SpringBootTest
class SpringbootIntegrateDubboConsumeApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        userService.getTicket();
    }

}

  •  错误信息

1.java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.13.0</version>
        </dependency>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值