参考乐字节的Dubbo教程

https://www.bilibili.com/video/BV19L4y1n7YE

Zookeeper单机部署 (Windows)

因为项目需要,这里我自己学习就采用Zookeeper作为注册中心

ZK的稳定版本镜像仓库

https://downloads.apache.org/zookeeper/stable/

下载后解压出来,拷贝一份zoo_sample.cfg重命名为zoo.cfg

配置信息:

主要是这三个信息需要根据自己需要变更

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=E:\\apache-zookeeper-3.7.0-bin\\data zk的数据输出目录
# the port at which the clients will connect
clientPort=2181 zk的默认客户端口2181 admin.serverPort=2180 这个是zk的服务端口配置,默认8080
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1 ## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

然后双击cmd脚本启动

zkServer.cmd

Linux则是shell脚本,需要加上参数

zkServer.sh start

只要终端窗口没有 [ERROR]就表示ZK运行正常

Linux使用命令查看

zkServer.sh status

Demo工程结构:

新建一个Maven工程,把源代码目录删除后,配置Pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>cn.cloud9</groupId>
<artifactId>Dubbo-Sample</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging> <!-- 管理的模块 -->
<modules>
<module>Common-API</module>
<module>Provider</module>
<module>Consumer</module>
</modules> <!-- 配置dubbo的版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<dubbo.version>2.0.0</dubbo.version>
</properties> <parent>
<!-- 指定Springboot版本 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
</parent>
<!-- 管理依赖的版本,不是用来导入的 -->
<dependencyManagement>
<dependencies>
<!-- dubbo-starter 组件 -->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency> <!-- dubbo使用zk作为注册中心需要的依赖组件 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.8</version>
<type>pom</type>
</dependency> <!-- 上面zk组件没有客户端,还需要单独引入 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.9</version>
</dependency>
</dependencies>
</dependencyManagement> </project>

Common-API包

也是普通Maven项目

这个里面只需要提供公共的PO和调用接口即可

所有通用的依赖组件都在这个包里面引入

没有任何Spring的配置信息

商品PO类

package cn.cloud9.common.pojo;
import lombok.*;
import java.io.Serializable; @Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@EqualsAndHashCode
public class Goods implements Serializable {
private String id;
private String name;
private Integer count;
}

调用的接口规范

package cn.cloud9.common.service;
import cn.cloud9.common.pojo.Goods;
import java.util.List; public interface ProviderService {
List<Goods> listEnableGoods();
}

common-api注入的依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>Dubbo-Sample</artifactId>
<groupId>cn.cloud9</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>Common-API</artifactId> <properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency> <dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<type>pom</type>
</dependency> <!-- https://blog.csdn.net/pri_sta_pub/article/details/79087592 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies> </project>

Provider 生产者服务

生产者将规定的接口进行实现

注意这里打注解,按照DEMO演示只需要打上Dubbo的@Service就可以了

实际情况可能Spring也会需要,因为生产者服务自己也可能是一个web服务

这里把完整资源名称写出来

package cn.cloud9.provider.service;

import cn.cloud9.common.service.ProviderService;
import cn.cloud9.common.pojo.Goods;
import java.util.ArrayList;
import java.util.List; @com.alibaba.dubbo.config.annotation.Service(interfaceClass = ProviderService.class)
@org.springframework.stereotype.Service
public class ProviderServiceImpl implements ProviderService { @Override
public List<Goods> listEnableGoods() {
List<Goods> goodsList = new ArrayList<>();
Goods goods = null;
for (int i = 0; i < 10; i++) {
goods = new Goods("GOODS-1001-ZXC-" + i, "GOODS-NAME-" + i, 10);
goodsList.add(goods);
}
return goodsList;
}
}

然后是启动类

除了Springboot启动类,还需要Dubbo配置注解

注意其他需要扫描的类,都需要和启动类同包内

package cn.cloud9.provider;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubboConfiguration
@SpringBootApplication
public class ProviderApplication { public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}

生产者的dubbo配置信息:

server:
port: 8081 spring:
application:
name: dubbo-provider # 服务名称
dubbo: # dubbo配置
server: true
application:
name: provider # dubbo注册的名称
registry: # 注册中心地址和端口
address: zookeeper://localhost:2181
protocol: # 采用的协议和端口
name: dubbo
port: 20880
scan: cn.cloud9.provider.service # 扫描的资源地址

生产者引入的依赖只需要Common-API一个就满足了

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>Dubbo-Sample</artifactId>
<groupId>cn.cloud9</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>Provider</artifactId> <properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>cn.cloud9</groupId>
<artifactId>Common-API</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

</dependencies>
</project>

Consumer 消费者服务

消费者和生产者一样都是只需要引入Common-API

消费只需要注入接口引用,调用即可

注意,需要使用Dubbo提供的@Reference注解注入

package cn.cloud9.consumer.controller;

import cn.cloud9.common.service.ProviderService;
import cn.cloud9.common.pojo.Goods;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
@RequestMapping("/consume")
public class ConsumerController { @Reference(interfaceClass = ProviderService.class)
private ProviderService providerService;
/**
* /consume/goods
* @return
*/
@GetMapping("/goods")
public String getEnableGoodsList() {
final List<Goods> goodsList = providerService.listEnableGoods();
return goodsList.toString();
}
}

消费者的启动类和生产者一样,需要配置@DubboConfiguration

package cn.cloud9.consumer;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubboConfiguration
@SpringBootApplication
public class ConsumerApplication { public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}

然后是消费者的配置信息,和生产者区分开来

1、服务不能和生产者一个端口号

2、服务名称

3、dubbo注册的服务名称

4、扫描的包

server:
port: 8083 spring:
application:
name: dubbo-consumer
dubbo:
server: true
application:
name: consumer
registry:
address: zookeeper://localhost:2181
protocol:
name: dubbo
port: 20880
scan: cn.cloud9.consumer

调用运行测试

上述步骤配置完成后

使用接口测试工具或者浏览器访问我们提供的web接口

localhost:8083/consume/goods

如果响应了数据,则调用正常

[Goods(id=GOODS-1001-ZXC-0, name=GOODS-NAME-0, count=10), Goods(id=GOODS-1001-ZXC-1, name=GOODS-NAME-1, count=10), Goods(id=GOODS-1001-ZXC-2, name=GOODS-NAME-2, count=10), Goods(id=GOODS-1001-ZXC-3, name=GOODS-NAME-3, count=10), Goods(id=GOODS-1001-ZXC-4, name=GOODS-NAME-4, count=10), Goods(id=GOODS-1001-ZXC-5, name=GOODS-NAME-5, count=10), Goods(id=GOODS-1001-ZXC-6, name=GOODS-NAME-6, count=10), Goods(id=GOODS-1001-ZXC-7, name=GOODS-NAME-7, count=10), Goods(id=GOODS-1001-ZXC-8, name=GOODS-NAME-8, count=10), Goods(id=GOODS-1001-ZXC-9, name=GOODS-NAME-9, count=10)]

使用Zookeeper Assistant 查看

可以发现这里放置的地址:

consumer://192.168.124.8/cn.cloud9.common.service.ProviderService?application=consumer
&category=consumers
&check=false&dubbo=2.6.0
&interface=cn.cloud9.common.service.ProviderService
&methods=listEnableGoods
&pid=27832
&side=consumer
&timestamp=1646562849952 dubbo://192.168.124.8:20880/cn.cloud9.common.service.ProviderService?anyhost=true
&application=provider
&dubbo=2.6.0
&generic=false
&interface=cn.cloud9.common.service.ProviderService
&methods=listEnableGoods
&pid=23608
&side=provider
&timestamp=1646562834480

实际业务案例场景:

订单服务, 商品服务 作为 【消息的生产者】

酒店端,小程序端, 商家端, 后台管理端,4个服务作为【消息的消费者】

API包,约束Dubbo要求的接口和PO序列化类

一、API包内容

本来应该Dubbo其它框架应该一起放在API里面,其它服务都只要引入API包就可以了

这里API包就是简单的组件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>aisw-root</artifactId>
<groupId>cn.ymcd.aisw</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>aisw-api</artifactId>
<name>aisw-api</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

订单接口,和商品接口:

package cn.ymcd.aisw.service;

import cn.ymcd.aisw.service.dto.ECommodityDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; /**
* aisw_e_commodity 电竞酒店商品表 服务类
*
* @projectName:
* @author:daizhizhou
* @date:2022-03-14
* @version 1.0
*/
public interface IECommodityService extends IService<ECommodityDTO> { /**
* 电竞酒店商品翻页查询
*
* @param eCommodityDTO 商品参数
* @return
* @author wangkun
* @createTime 2022/3/7 14:51
*/
IPage<ECommodityDTO> eCommodityPageQuery(ECommodityDTO eCommodityDTO);
}

继承了MybatisPlus的IService接口,约定了处理的 PO序列化类

package cn.ymcd.aisw.service;

import cn.ymcd.aisw.service.dto.EOrderDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; /**
* TE_E_ORDER电竞酒店订单表服务类
*
* @version 1.0
* @projectName:aisw-api
* @author:wangkun
* @date:2022-03-07
*/
public interface IEOrderService extends IService<EOrderDTO> { /**
* 分页查询订单列表
*
* @param eOrderQueryReq 电竞酒店订单查询传入参数
* @return
* @author wangkun
* @createTime 2022/3/7 14:51
*/
IPage<EOrderDTO> queryEOrderList(EOrderDTO eOrderQueryReq);
}

对应的PO类只要求一点,必须序列化

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("aisw_e_commodity")
public class ECommodityDTO extends BaseDTO implements Serializable { private static final long serialVersionUID = 1L; // 这里省略属性... ...
}

二、生产者服务配置:

API 包 + Dubbo框架 + ZK客户端

订单服务包和商品服务包都是这样的依赖信息

    <dependencies>
<dependency>
<groupId>cn.ymcd.aisw</groupId>
<artifactId>aisw-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--dubbo依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!-- zkclient客户端 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>

管理的框架版本在API根版本里面:

    <dependencyManagement>
<dependencies>
<!--dubbo rpc框架 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!--zkclient客户端 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

生产者实现API接口定义的规范

package cn.ymcd.aisw.ehotel;

import cn.ymcd.aisw.ehotel.dao.ECommodityDAO;
import cn.ymcd.aisw.service.IECommodityService;
import cn.ymcd.aisw.service.dto.ECommodityDTO;
import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /**
* @projectName: aisw-root
* @author: cloud9
* @date: 2022年03月31日 11:02
* @version: 1.0
*/
@Service(version = "1.0.0")
public class EHotelCommodityServiceImpl extends ServiceImpl<ECommodityDAO, ECommodityDTO> implements IECommodityService {
@Override
public IPage<ECommodityDTO> eCommodityPageQuery(ECommodityDTO eCommodityDTO) {
QueryWrapper<ECommodityDTO> queryWrapper = Wrappers.query(eCommodityDTO);
return baseMapper.selectPage(eCommodityDTO.getPage(), queryWrapper);
}
}

启动类需要打上开启Dubbo的注解

package cn.ymcd.aisw;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement; /**
* 应用启动程序
* @return
* @author wangkun
* @createTime 2022/03/14 11:14
*/
@SpringBootApplication(scanBasePackages = "cn.ymcd", exclude = {DynamicDataSourceAutoConfiguration.class})
@EnableTransactionManagement
@EnableDubbo
public class AiswWxAppletBootApplication { public static void main(String[] args) {
SpringApplication.run(AiswWxAppletBootApplication.class, args);
}
}

然后是yml配置:

1、Dubbo注册的服务名称

2、Zookeeper的客户端端口,需要把服务信息放在Zookeeper上面,这里本机调试只开启一个ZK

3、服务上线时,需要向下面这样放集群ZK的信息

4、Dubbo协议,端口20881,端口只能一个生产者服务对应一个端口,不能共用端口

5、最重要的,你的接口实现类必须要被Dubbo找到,@Service注解是给Dubbo扫描的,SpringBoot不会接管这个Bean对象

所以需要在配置上写包扫描的位置,这样Dubbo才会去加载这个实现类

#[dubbo config]
#当前服务/应用的名字
dubbo:
application:
name: aisw-commodity-server
registry:
address: zookeeper://172.17.29.7:2181
# address: zookeeper://172.17.29.7:62001?backup=172.17.29.7:62002,172.17.29.7:62003,172.17.29.7:62004
protocol:
name: dubbo
port: 20881
scan:
base-packages: cn.ymcd.aisw

三、消费者服务配置

消费者也需要遵守共同的API规范,引入一样的组件:

        <dependency>
<groupId>cn.ymcd.aisw</groupId>
<artifactId>aisw-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--dubbo rpc框架 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!--zkclient客户端 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
</dependency>

消费者的消息消费,接口实现是通过Dubbo代理完成的,同样的Springboot不接管这个接口Bean

package cn.ymcd.aisw.commodity.controller;

import cn.ymcd.aisw.service.IECommodityService;
import cn.ymcd.aisw.service.dto.ECommodityDTO;
import cn.ymcd.comm.base.BaseController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* @projectName: aisw-root
* @author: cloud9
* @date: 2022年03月15日 16:43
* @version: 1.0
*/
@RestController
@RequestMapping("${sys.path}/commodity")
public class ECommodityController extends BaseController { @Reference(version = "1.0.0")
private IECommodityService eCommodityService;
/**
* 电竞酒店商品
* sys/commodity/paging
* @param eCommodityDTO 电竞酒店订单查询传入参数
* @return
* @author wangkun
* @createTime 2020/12/4 11:35
*/
@ApiOperation(value = "电竞酒店商品列表", notes = "电竞酒店商品列表")
@PostMapping(value = "/paging")
public IPage<ECommodityDTO> queryECommodityPage(@RequestBody @ApiParam(name = "商品列表基本对象", value = "传入json格式", required = true) ECommodityDTO eCommodityDTO) { return eCommodityService.eCommodityPageQuery(eCommodityDTO);
} }

消费者启动类也需要开启Dubbo:

package cn.ymcd.aisw;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement; /***
* 应用启动程序
* @return
* @author wangkun
* @createTime 2022/03/07 11:14
*/
@SpringBootApplication(scanBasePackages = "cn", exclude = {DynamicDataSourceAutoConfiguration.class})
@EnableTransactionManagement
@EnableDubbo
@MapperScan("cn.ymcd.aisw")
public class AiswEHotelBootApplication { public static void main(String[] args) {
SpringApplication.run(AiswEHotelBootApplication.class, args);
}
}

消费者服务的配置:

和生产者差不多,也需要把服务信息放到Zookeeper上,注解扫描

但是消费者不需要提供Dubbo协议和端口

#[dubbo config]
#dubbo服务名称
dubbo.application.name=aisw-eHotel
#注册中心地址
# dubbo.registry.address=zookeeper://192.168.200.25:2181
# dubbo.registry.address=zookeeper://172.17.29.7:62001?backup=172.17.29.7:62002,172.17.29.7:62003,172.17.29.7:62004
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.base-packages=cn.ymcd.aisw

在调用的时候Debug可以看见接口的代理对象实例:

【Dubbo】构建SpringBoot整合Dubbo的Demo的更多相关文章

  1. Springboot整合Dubbo和Zookeeper

    Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...

  2. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  3. 【转】SpringBoot学习笔记(7) SpringBoot整合Dubbo(使用yml配置)

    http://blog.csdn.net/a67474506/article/details/61640548 Dubbo是什么东西我这里就不详细介绍了,自己可以去谷歌 SpringBoot整合Dub ...

  4. SpringBoot整合dubbo(yml格式配置)

    yml文件 如果只作为服务的消费者不用暴露端口号,扫描的包名根据自己service改 dubbo: application: name: springboot-dubbo-demo #应用名 regi ...

  5. dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级

    1. springboot整合dubbo 在provider端,添加maven引入,修改pom.xml文件 引入springboot,版本:2.3.2.RELEASE,dubbo(org.apache ...

  6. Dubbo学习-6-springboot整合dubbo

    1.在前面帖子和工程的基础上,这里使用springboot整合dubbo,首先创建springboot项目: https://start.spring.io/  进入spring Initializr ...

  7. spring-boot整合dubbo启动demo

    参考资料: https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/ https://github.com/apach ...

  8. Dubbo与SpringBoot整合流程(从实例入手,附代码下载)

    场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...

  9. springboot整合dubbo+zookeeper最新详细

    引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...

  10. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!   “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...

随机推荐

  1. uniapp 添加操作

    1 分析: 2 需要动态的向数据库中插入数据,既然要进行添加操作,就会触发一个点击的事件,所以我们的第一步就是要先绑定事件 3 向服务器进行请求接口操作,请求的方法为 'POST' 4 最后就是在me ...

  2. INFINI Labs 产品更新 | Console 1.24.0 操作日志审计功能发布

    INFINI Labs 产品又更新啦~,包括 Console,Gateway 1.24.0.本次各产品更新了很多亮点功能,如 Console 增加操作日志审计功能,优化数据探索字段统计,修复 Gate ...

  3. windows 批处理 检查并启动 windows 服务

    windows 批处理 检查并启动 windows 服务 set srvname="YSWindowsService" sc query|find %srvname% && ...

  4. Android开发基础——真机测试错误,ADB启动不了,程序安装不了,the connection to adb is down,INSTALL_CANCELED_BY_USER...

    在Android开发中,无论是真机测试还是AVD测试,都会报出这些错误.在这里,我会详细说明一下怎么会出现这些错误的,然后要怎么样才能解决这些错误. 错误一: The connection to ad ...

  5. element el-input 去掉边框

    element样式还是蛮好的,只是有时候我们需要做一些调整,比如,el-input 的边框,官网是这样子的 我们需要去掉这个边框 试了常用的:border: none:  以及:outline:non ...

  6. python根据文件目录批量过滤空行

    import shutil import os path = "E:\\in\\" #文件夹操作目录 path2 = "E:\\out\\" #文件夹输出目录 ...

  7. python 判断token是否有效,若失效,重新发起token请求

    场景: 1.对一个接口,进行接口自动化测试,查找的是有权限操作的用例,传入到获取token接口,生成token,判断当前是否有token,如果存在token,则无需再次发起token接口: 存在的问题 ...

  8. HDU1010第一道DFS

    DFS就是深度搜索算法....感觉就像破案一样.... #include<iostream> #include<cstdio> #include<cstring> ...

  9. 推荐一款基于业务行为驱动开发(BDD)测试框架:Cucumber!

    大家好,我是狂师. 今天给大家介绍一款行为驱动开发测试框架:Cucumber. 1.介绍 Cucumber是一个行为驱动开发(BDD)工具,它结合了文本描述和自动化测试脚本.它使用一种名为Gherki ...

  10. Debezium-Flink-Hudi:实时流式CDC

    1. 什么是Debezium Debezium是一个开源的分布式平台,用于捕捉变化数据(change data capture)的场景.它可以捕捉数据库中的事件变化(例如表的增.删.改等),并将其转为 ...