Dubbo概述
Dubbo是阿里开源的一个分布式服务框架,在国内粉丝很多。官网上的介绍是:
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
Dubbo的文档很完整,网络上资源也很多,这里就不再重复了。本文做这样一个尝试,将一个Dubbo应用容器化,部署到阿里云的容器服务上。
极简Dubbo应用结构
在Dubbo世界里,服务调用方和服务提供方通过Dubbo的发现机制互相发现。一个最小的Dubbo应用包含如下三个服务:
服务提供者
服务调用方
发现机制(例如zookeeper)
zookeeper已经有Docker镜像了,下面我们就会用Spring Boot开发服务提供方Service Producer和服务调用方Service Consumer。
定义服务接口
创建一个Maven模块service-api,定义服务接口。
public interface Greetings {
String say(String name); } |
这个接口很简单,就是问好。
在pom.xml中引入对Dubbo的依赖:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> </dependency> </dependencies> |
我们用的是dubbo 2.5.3版本,读者如果愿意尝试更新的版本,可以自行升级。
服务提供方 Service Producer
创建一个Maven模块service-producer,提供服务接口的实现。
public class GreetingsImpl implements Greetings {
public String say(String name) { return "Greetings from " + name; } } |
为了能找到服务接口模块,需要在pom.xml中定义对service-api的依赖。
<dependencies> ... <dependency> <groupId>com.example</groupId> <artifactId>dubbo-service-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> |
Dubbo通过spring xml配置文件的方式声明对zookeeper的访问。在resources目录下创建services.xml,其中最重要的内容是指定zookeeper的地址和端口,为了不把zookeeper的地址写死在配置文件中,我们采用环境变量来指明服务地址。这也是1