1、Dubbo简介
Apache Dubbo官网
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架。
Apache Dubbo提供了六大核心能力:
- 面向接口代理的高性能RPC调用
提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。 - 智能负载均衡
内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。 - 服务自动注册与发现
支持多种注册中心服务,服务实例上下线实时感知。 - 高度可扩展能力
遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。 - 运行期流量调度
内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。 - 可视化的服务治理与运维
提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。
2、Dubbo简单应用示例
通过下面的简单应用示例来实现两个工程之间的服务通信()。
该示例分为两个工程:
- dubbo-server-demo:服务端,服务器是个父工程,下面有两个子工程,分别为
dubbo-server-api:提供统一的标准接口,供服务生产者和消费者引用。
dubbo-server:服务提供者,引用并实现api接口。是dubbo的服务生产者。 - dubbo-client-demo:客户端,调用api接口,是dubbo服务消费者。
2.1 dubbo-server-demo的工程结构如下图:
dubbo-server-demo工程的pom.xml
<?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>com.che.dubbo</groupId>
<artifactId>dubbo-server-demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>dubbo-server-api</module>
<module>dubbo-server</module>
</modules>
</project>
2.2 dubbo-server-api工程
pom.xml
<?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-server-demo</artifactId>
<groupId>com.che.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo-server-api</artifactId>
</project>
接口定义:ISayService.java
package com.che.dubbo;
public interface ISayService {
String say(String msg);
}
2.3 dubbo-server工程
pom.xml
<?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"