目录
一、dubbo能做什么?
dubbo能够提供高性能RPC调用,服务自动发现与注册,提高系统可伸缩性,可视化服务治理。
二、Java中如何使用dubbo?
1、定义服务
创建子模块(以下称api模块),定义服务接口与实体(实现序列化)
//定义服务接口
public interface DemoService {
HelloRsp sayHello(HelloReq req);
}
//请求与响应实体
@Data
public class HelloReq implements Serializable {
private String msg;
}
@Data
public class HelloRsp implements Serializable {
private String msg;
}
2、实现并注册服务
创建服务提供方(provider),依赖api模块;
实现服务接口DemoService
import org.apache.dubbo.config.annotation.Service;
// dubbo 注解service,version指定版本
@Service(version = "1.0")
public class DemoServiceImpl implements DemoService {
@Override
public HelloRsp sayHello(HelloReq req) {
HelloRsp rsp = new HelloRsp();
rsp.setMsg(req.getMsg() + " reply: Hello!")
return rsp ;
}
}
配置yml注册服务
dubbo:
application:
name: provider
registry:
address: zookeeper://ip:port?backup=backip1:backport1,backip2:backport2
timeout: 6000
#元中心地址
metadata-report:
address: zookeeper://ip:port?backup=backip1:backport1,backip2:backport2
protocol:
#协议名称
name: dubbo
port: 20880
scan:
base-packages: com.demo.service
3、订阅服务
创建服务消费者(consumer),依赖api模块;
配置yml发现服务
dubbo:
application:
name: consumer
registry:
address: zookeeper://ip:port?backup=backip1:backport1,backip2:backport2
注入代理并调用
public class Test{
//对应的version
@Reference(version = "1.0", parameters = {"unicast", "false"})
private DemoService demoService;
public void run() throws Exception {
System.out.println(demoService.sayHello());
}
}