• spring boot-18.使用dubbo发布分布式服务


    我们新建两个项目分别模拟服务的提供者和服务的消费者,spring boot 集成dubbo主要分为以下几个步骤:

    1.安装zookeeper

    推荐使用docker 安装,使用以下几个命令即可完成

    (1)docker pull zookeeper:3.4.11

    (2)docker run --name zookeeper -p 2181:2181 --restart always -d 56d414270ae3 (-d 后面为镜像ID)

    2.服务提供者和服务消费者的项目中分别添加dubbo 和zookeeper依赖

           <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>0.1.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
             <groupId>com.github.sgroschupf</groupId>
             <artifactId>zkclient</artifactId>
             <version>0.1</version>
        </dependency>  

    3.安装dubbo管理后台

    在dubbo发布的项目中有个dubbo-admin项目,可以将这个项目打成一个war包,准备一个tomcat ,将wabapps 下的ROOT 文件夹下 内容删除,将dubbo-admin.war解压至ROOT下,修改WEN-INF下的dubbo.properties中 的zookeeper地址改成自己的,为了防止端口冲突可以修改tomcat 下的conf 下的server.xml 中的端口号,然后运行bin 下的startup.bat 即可启动dubbo的管理后台,输入用户名和密码(root/root 或guest/guest)

    4.编写服务代码

    (1)新建一个接口,表明我们要提供的服务

    package com.springboot.service.ticket;
    
    public interface TicketService {
        public String getTicket() ;
    }

    (2)实现服务接口,并使用dubbo的@service标注这个服务,并将服务作为一个组件注入到IOC容器中

    package com.springboot.service.ticket;
    
    import org.springframework.stereotype.Component;
    
    import com.alibaba.dubbo.config.annotation.Service;
    
    @Service
    @Component
    public class TicketServiceImpl implements TicketService{
    
        @Override
        public String getTicket() {
            // TODO Auto-generated method stub
            return "《碟中谍6》";
        }
    
    }

    (3)配置服务

    #服务名称
    dubbo.application.name=springboot-dubbo-provider #zookeeper地址
    dubbo.registry.address=zookeeper://192.168.1.215:2181
    #服务的扫描路径,改路径下被@service注解的都将被当成一个服务发布 dubbo.scan.base-packages=com.springboot.service dubbo.protocol.name=dubbo dubbo.protocol.port=20880

    5.编写消费端代码

    (1)新建和服务端一模一样的接口,包括接口所在路径也要一致

    (2)调用服务。使用@Reference 将服务接口注入

    package com.springboot.service.user;
    
    import org.springframework.stereotype.Service;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.springboot.service.ticket.TicketService;
    
    @Service
    public class UserService {
        
        @Reference
        TicketService ticketService;
        
        public String BuyTicket() {
            String ticket = ticketService.getTicket();
            System.out.println("买到电影票:"+ticket);
            return ticket;
        }
    }

    (3)配置

    server.port=8081
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=20880
    dubbo.application.name=springboot-dubbo-consumer
    dubbo.registry.address=zookeeper://192.168.1.215:2181

    (4)调用消费端服务

    package com.springboot.contrller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.springboot.service.user.UserService;
    
    @RestController
    public class buyController {
        
        @Autowired
        UserService userService;
        
        @GetMapping("/buy")
        public String buy() {
            return userService.BuyTicket();
        }
    }

    6.发布服务,订阅服务。

    分别启动服务端项目和消费端项目,即可在dubbo的管理后台看到服务提供者和消费者

    调用消费端服务

  • 相关阅读:
    webpack之模块(七)
    webpack之配置(六)
    webpack之插件(五)
    webpack之loader(四)
    webpack之模式(三)
    webpack之输出(二)
    webpack之入口起点(一)
    Dynamics CRM Tips
    Step by Step 开发dynamics CRM
    Loading Ring 使用文档
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/9560652.html
Copyright © 2020-2023  润新知