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的管理后台看到服务提供者和消费者

调用消费端服务

原文地址:https://www.cnblogs.com/li-zhi-long/p/9560652.html

时间: 2024-10-10 15:59:50

spring boot-18.使用dubbo发布分布式服务的相关文章

使用Ratpack和Spring Boot打造高性能的JVM微服务应用

使用Ratpack和Spring Boot打造高性能的JVM微服务应用 这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中文地址:使用Ratpack与Spring Boot构建高性能JVM微服务. 在微服务天堂中Ratpack和Spring Boot是天造地设的一对.它们都是以开发者为中心的运行于JVM之上的web框架,侧重于生产率.效率以及轻量级部署.他

Spring Boot同时开启HTTP和HTTPS服务

由于Spring Boot中通过编码开启HTTPS服务比较复杂,所以官方推荐通过编码开启HTTP服务,而通过配置开启HTTPS服务. Spring Boot的application.yml中添加如下配置,开启HTTPS服务 server: port: 16062 ssl: key-store: classpath:config/test.jks key-store-password: 123456 key-password: 123456 其中的jks证书文件可以利用JDK工具keytool.e

Spring Boot 2 整合 Dubbo 框架 ,实现 RPC 服务远程调用

一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互. 2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点. 3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用. 4)图中只包含 RPC

Spring Boot方式的Dubbo项目

项目依赖 需要org.apache.dubbo.dubbo-dependencies-bom, 需要org.apache.dubbo.dubbo-spring-boot-starter, 当前版本有2.7.0和2.7.1, dubbo版本已经发布到2.7.2了, 但是starter还没更新到2.7.2, 所以整体使用2.7.1版本 另外就是spring-boot的org.springframework.boot.spring-boot-dependencies, org.springframew

Dubbo[一个分布式服务框架

http://alibaba.github.io/dubbo-doc-static/User+Guide-zh.htm#UserGuide-zh-API%E9%85%8D%E7%BD%AE http://alibaba.github.io/dubbo-doc-static/Home-zh.htm Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装

Spring Boot 2.0(一):【重磅】Spring Boot 2.0权威发布

就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring Boot官方又赶紧把 GitHub 上发布的 v2.0.0.RELEASE 版本进行了撤回.到了下午将问题修复后,又重新进行了上传,至此Spring Boot2.0正式推出! 要知道这是Spring Boot1.0发布4年之后第一次重大修订,因此有多的新功能和特性值得大家期待!在S

spring boot 定时任务基于zookeeper的分布式锁实现

基于ZooKeeper分布式锁的流程 在zookeeper指定节点(locks)下创建临时顺序节点node_n 获取locks下所有子节点children 对子节点按节点自增序号从小到大排序 判断本节点是不是第一个子节点,若是,则获取锁:若不是,则监听比该节点小的那个节点的删除事件 若监听事件生效,则回到第二步重新进行判断,直到获取到锁 具体实现 添加Maven依赖: <?xml version="1.0" encoding="UTF-8"?> <

spring Boot环境下dubbo+zookeeper的一个基础讲解与示例

一,学习背景 1.   前言 对于我们不管工作还是生活中,需要或者想去学习一些东西的时候,大致都考虑几点: a)      我们为什么需要学习这个东西? b)     这个东西是什么? c)      这个东西能为我们做什么? d)     如何去学? 结合以上几点,我们一起学习下Dubbo这个框架! 2.   学习背景 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取

Spring Boot 2.x 已经发布了很久,现在 Spring Cloud 也发布了 基于 Spring Boot 2.x 的 Finchley 版本,现在一起为项目做一次整体框架升级。

升级前 => 升级后 Spring Boot 1.5.x => Spring Boot 2.0.2 Spring Cloud Edgware SR4 => Spring Cloud Finchley.RELEASE Eureka ServerEureka Server 依赖更新 升级前: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-