介绍
Dubbo是一个应用的远程调用服务,还提供了统计服务的次数和调用时间,对接第三方的注册中心。
本文将结合Dubbo与ZooKeeper两个框架来实现一个简单的调用过程和详细配置的讲解。
使用
在使用Dubbo之前请确保ZooKeeper的zkServer和zkCli已经启用了。
—稍后补充流程图
api配置
独立的api项目模块,用于服务者实现,消费者引用此接口去调用。
public interface DemoService {
String sayHello(String name);
}
服务者配置
只有 group,interface,version 是服务的匹配条件,三者决定是不是同一个服务,其它配置项均为调优和治理参数。
1,java配置
/**
* 服务者提供者实现api模块的DemoService接口,注解@DubboService来提供对外提供服务。
* version:当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
*/
@DubboService(version = "${demo.service.version}")
public class DefaultDemoService implements DemoService {
@Override
public String sayHello(String name) {
return String.format("Hello Hello, %s", name);
}
}
2,yml配置
# Spring boot application
spring.application.name=dubbo-registry-zookeeper-provider-sample
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
# Dubbo Application
## The default value of dubbo.application.name is ${spring.application.name}
## dubbo.application.name=${spring.application.name}
# Dubbo Protocol
dubbo.protocol.name=dubbo
## Random port
dubbo.protocol.port=-1
## Dubbo Registry
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.file = ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache
## DemoService version
demo.service.version=1.0.0
消费者配置
调用服务者的服务,java类配置
@EnableAutoConfiguration
public class DubboRegistryZooKeeperConsumerBootstrap {
private final Logger logger = LoggerFactory.getLogger(getClass());
/**
* 申请去调用服务者类,可
* loadbalance:集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。如果服务者和消费者都有loadbalance则按照
*/
@DubboReference(version = "${demo.service.version}" ,loadbalance = "consistenthash")
private DemoService demoService;
public static void main(String[] args) {
SpringApplication.run(DubboRegistryZooKeeperConsumerBootstrap.class).close();
}
@Bean
public ApplicationRunner runner() {
return args -> logger.info(demoService.sayHello("我是蒋犇犇"));
}
}
yml配置
spring:
application:
name: dubbo-registry-zookeeper-consumer-sample
demo:
service:
version: 1.0.0
# 连接zookeeper的端口
embedded:
zookeeper:
port: 2181
dubbo:
registry:
# 连接注册中心的ip和port
address: zookeeper://127.0.0.1:${embedded.zookeeper.port}
# 使用文件缓存注册中心地址列表及服务提供者列表,应用重启时将基于此文件恢复,注意:两个注册中心不能使用同一文件存储
file: ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache
详细配置
标签上配置属性时,方法级优先,接口级次之,全局配置再次之。如果级别一样,则消费方优先,提供方次之。
<dubbo:service/>
服务配置 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
<dubbo:reference/>
引用配置 用于创建一个远程服务代理,一个引用可以指向多个注册中心
<dubbo:protocol/>
协议配置 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
<dubbo:application/>
应用配置 用于配置当前应用信息,不管该应用是提供者还是消费者
<dubbo:module/>
模块配置 用于配置当前模块信息,可选
<dubbo:registry/>
注册中心配置 用于配置连接注册中心相关信息
<dubbo:monitor/>
监控中心配置 用于配置连接监控中心相关信息,可选
<dubbo:provider/>
提供方配置 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
<dubbo:consumer/>
消费方配置 当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
<dubbo:method/>
方法配置 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
<dubbo:argument/>
参数配置 用于指定方法参数配置
运维平台
正式版
正式版还是几年前的,太老旧了,也不知道什么时候更新,听闻新版本将会把监控中心、动态配置等全部加进去。
- windows上随便找个地址,创建一个docker-compose.yml文件,内容如下:
version: '3'
services:
zookeeper:
image: zookeeper
ports:
- 2181:2181
admin:
image: apache/dubbo-admin
depends_on:
- zookeeper
ports:
- 8080:8080
environment:
- admin.registry.address=zookeeper://zookeeper:2181
- admin.config-center=zookeeper://zookeeper:2181
- admin.metadata-report.address=zookeeper://zookeeper:2181
2.在windows的cmd控制台切换到docker-compose.yml文件所在目录,运行docker-compose up(docker-compose软件要另行安装)
3.在宿主机浏览器上运行localhost:8080就可以看到dubbo admin的后台了