简介
- 注册中心
- 服务者
- 消费者
- 监控中心
- RPC:
安装 zookeeper
1、下载:https://archive.apache.org/dist/zookeeper/
2、配置:复制zookeeper-3.4.13\conf/zoo_sample.cfg——》zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=../datalog
clientPort=2181
3、启动:zookeeper-3.4.13\bin\zkServer.cmd和zkCli.cmd
dubbo-admin监控中心
1、下载:https://github.com/apache/dubbo-admin/tree/master
2、进入dubbo-admin-master\dubbo-admin 执行mvn clean package
在文件夹下打开cmd: shift+右键——》在此处打开Powershell窗口——》start cmd +enter
- dubbo-admin是个springboot项目,可在配置文件application.properties中修改相关配置
- 执行前要把dubbo服务端和客户端都运行
- 执行成功会生成 dubbo-admin-master\dubbo-admin\target\dubbo-admin-0.0.1-SNAPSHOT.jar
3、登录监控中心:http://localhost:7001/ 内置帐号:root:root和guest:guest
springboot注册服务者和消费者
参考:https://github.com/apache/dubbo-spring-boot-project/blob/master/README_CN.md
注册服务者
1、maven依赖
<properties>
<java.version>12</java.version>
<spring-boot.version>2.1.1.RELEASE</spring-boot.version>
<dubbo.version>2.7.4.1</dubbo.version>
</properties>
<dependencies>
<!-- <dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>1.0.2</version>
</dependency>-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Apache Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-bom</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
- 注意:github中的maven依赖缺失很多:
- 注意:github中的maven依赖有问题:
<dubbo.version>2.7.3</dubbo.version>
和
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.4.1</version>
</dependency>
使用不同版本,启动失败
2、application.properties
spring.application.name=dubbo1205
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.address=zookeeper://127.0.0.1:2181
3、代码
@EnableDubbo //开启dubbo注解
@SpringBootApplication
public class Dubbo1205Application {
public static void main(String[] args) {
SpringApplication.run(Dubbo1205Application.class, args);
}
}
@Service(interfaceClass = ITicketService.class)
@org.springframework.stereotype.Service
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《厉害了,我的国》";
}
}
4、启动后可在监控中心查看到多了一个提供者
消费者
spring:
application:
name: dubbo1206
@EnableDubbo //开启dubbo注解
@SpringBootApplication
public class Dubbo1206Application {
public static void main(String[] args) throws IOException {
SpringApplication.run(Dubbo1206Application.class, args);
}
}
@RestController
public class HelloController {
@Reference(url = "dubbo://127.0.0.1:20880")
private ITicketService ticketService;
@GetMapping("/hello")
public String hello(){
String name = ticketService.getTicket();
return name;
}
}