栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot+Dubbo+zookeeper入门学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot+Dubbo+zookeeper入门学习

开始学习微服务了,记录一下Dubbo+zookeeper快速入门

1、了解Dubbo(引用)

1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。

2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。

3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。(下面讲解)

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

Provider(生产者): 暴露服务的服务提供方。

Consumer(消费者): 调用远程服务的服务消费方。

Registry(注册中心): 服务注册与发现的注册中心。dubbo推荐的是zookeeper。什么是zookeeper?zookeeper是用于分布式中一致性处理的框架。更多的可以查看我之前的文章:这么说吧,zookeeper 很简单,其实就是个框架,是一致性处理用的。简单的讲,zookeeper就是个中介,卖楼的(生产者)把楼盘信息放在中介(注册中心)那里,想买楼的(消费者)去中介那里获得楼盘资源清单。于是,我们的图变成了这样:

是不是好很多了?还不够, 我们还需要个监控中心(干嘛用的?当然是监控用的,调用失败怎么办?挂了怎么办?): Monitor: 统计服务的调用次调和调用时间的监控中心。(不画图了)

然后,Provider放在容器里运行,就叫做Container服务运行容器。(不画图了)

最终dubbo架构,如图(从0开始看起):

服务是 Dubbo 中的核心概念,一个服务代表一组 RPC 方法的集合,服务是面向用户编程、服务发现机制等的基本单位。Dubbo 开发的基本流程是:用户定义 RPC 服务,通过约定的配置 方式将 RPC 声明为 Dubbo 服务,然后就可以基于服务 API 进行编程了。对服务提供者来说是提供 RPC 服务的具体实现,而对服务消费者来说则是使用特定数据发起服务调用。

2、准备工具

下载zookeeper,直接去官网下载就可以

在bin里点击zkServer.cmd直接开启注册中心

下载dubbo-admin 可视化工具

官方地址:https://github.com/apache/incubator-dubbo/tree/2.5.xhttps://github.com/apache/incubator-dubbo/tree/2.5.x

推荐用IDEA打开dubbo-admin项目,把项目打包成jar包,并使用java -jar运行jar包

项目的application.properties配置,已经默认配置好的 用户是root 密码root

server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest

dubbo.registry.address=zookeeper://127.0.0.1:2181

3、创建Springboot项目

新建2个springboot项目,对应生产者和消费者

这是2个项目的pom配置,导入Dubbo和Zookeeper需要的包,当然版本日新月异,需要自己去官网了解版本的改动

        
            org.apache.dubbo
            dubbo-spring-boot-starter
            2.7.3
        

        
            com.github.sgroschupf
            zkclient
            0.1
        

        
            org.apache.curator
            curator-client
            2.12.0
        
        
            org.apache.curator
            curator-recipes
            2.12.0
        
        
            org.apache.zookeeper
            zookeeper
            3.5.9
            
                
                    org.slf4j
                    slf4j-log4j12
                
            
        

生产者:卖票的服务 provider-service

配置application.properties

# 应用名称
spring.application.name=provider-service
# 应用服务 WEB 访问端口
server.port=8081

#服务应用名称
dubbo.application.name=provider-service
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#哪些服务要被注册  会扫描这个包下的服务
dubbo.scan.base-packages=com.hcx.service

新建TicketService.java 的接口

public interface TicketService {
    public String getTicket();
}

以及它的实现类 TicketServiceimpl.java

@Component
@Service(version = "1.0.0",timeout = 10000,interfaceClass = TicketService.class)
//dubbo3.x版本@Service已弃用 新版推荐@DubboService
public class TicketServicelmpl implements TicketService {
    @Override
    public String getTicket() {
        return "北京-->>上海 一等座";
    }
}

项目图:

消费者:买票的服务 consumer-service

配置application.properties 

# 应用名称
spring.application.name=consumer-service

# 应用服务 WEB 访问端口
server.port=8082

dubbo.application.name=consumer-service
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=20880

#消费者不需要写服务

 新建一个TicketService.java  对应生产者的TicketService

public interface TicketService {
    public String getTicket();
}

在新建一个UserService.java的服务,和一个Controller页面显示拿到的数据,也可以去测试类写

@Service
public class UserService {
    //去注册中心拿服务
    @Reference(version = "1.0.0",check = true)  //引用    pom坐标、路径相同的接口名 两边的接口相同就可以调用
    TicketService tickerService;

    public String buyTicker(){
        String ticket = tickerService.getTicket();
        return "在注册中心拿到:"+ticket;
    }
}

4、完成

开启注册中心,运行dubbo-admin,然后在运行2个springboot项目

打开http://localhost:7001/  dubbo-admin主页地址

 可以看到生产者成功注册到注册中心了

在consumer-service项目中测试

在测试类中测试 

 成功 拿到数据

哈哈 可以向分布式系统前进了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号