4.Radar客户端 - SpringCloud/spring-cloud-radar GitHub Wiki
- 说明
- 客户端接入分为
spring boot
接入和spring mvc
接入 - 客户端实例有两种角色provider 和 consumer
- provider 是指对外提供外部服务的应用程序,同时自己也可以作为Consumer消费外部的服务,如果一个实例是Provider角色时,会在注册中心插入一条记录,可以在注册中心portal中查询到。
- consumer指当前实例仅仅只消费外部的服务,本身不对外提供服务。
- 客户端接入分为
同时当用户登录到portal 管理界面中,在 接入说明
菜单中,也有详细的接入说明。用户可自行查看
- 添加maven引用
<dependency>
<groupId>com.ppdai.infrastructure</groupId>
<artifactId>radar-client-springboot</artifactId>
<version>0.0.1</version>(推荐最新版)
</dependency>
- 服务
provider
端 properties 配置(也可yml)
radar.register.url=http://fat-radar.********.com //注册中心地址必须
radar.instance.appId=1010111 //appid,必须
radar.instance.clusterName=default //集群名,可以不用配置
radar.instance.tag.test1=test1 //tag,不是必须
radar.instance.tag.test2=test2 //
server.port=8080 //端口号
spring.application.name=radar-demo-provider //服务名,建议必须
- 纯消consumer端properties 配置(也可yml)
radar.register.url=http://fat-radar.********.com //注册中心地址
radar.instance.registerSelf=false //必须
- 添加maven引用
<dependency>
<groupId>com.ppdai.infrastructure</groupId>
<artifactId>radar-client-spring</artifactId>
<version>0.0.1</version>(推荐最新版)
</dependency>
- 添加servlet bean扫描
<context:component-scan base-package="com.ppdai.infrastructure.radar.client"/>
- 服务provider,注册bean
@Bean
public RadarClientConfig radarClientConfig(){
RadarClientConfig radarClientConfig=new RadarClientConfig("http://fat-radar.********.com");
radarClientConfig.setAppName("radar-demo-provider-1");
radarClientConfig.setCandAppId("1010111");
radarClientConfig.setClusterName("default");
radarClientConfig.setPort(8085);
radarClientConfig.setCandInstanceId("radar-demo-provider-5");
radarClientConfig.getTags().put("test1", "test1");
radarClientConfig.getTags().put("test2", "test2");
return radarClientConfig;
}
- 纯消费consumer端注册bean
@Bean
public RadarClientConfig radarClientConfig(){
RadarClientConfig radarClientConfig=new RadarClientConfig("http://fat-radar.********.com");
radarClientConfig.setRegisterSelf(false);//如果是纯consumer端,这个必须
return radarClientConfig;
}
默认情况下,radar 提供了开箱即用的功能,但是为了应对用户的一些特殊需求,radar框架本身提供了一些扩展接口,用户可以自行扩展。系统内置提供了三个事件接口。
- PreRegisterListener 开始注册之前事件 如果用户在radar客户端中注册了此事件,则当系统启动后,radar向注册中心发起注册时,用户可以对一些注册项进行修改。
- RegisterCompletedListener 注册完成事件 如果用户注册了此事件,当radar客户端注册成功后,会触发此事件。
- AppChangedListener,应用变更事件 如果用户注册了此事件,当应用配置和实例发生变化时,会触发此事件。注意此事件的接口参数是当前应用的结果值,不是变化值。
如果客户端是sping 接入,radar客户端默认自带了一些用来调试的接口。ip和port 是只客户端实例的ip和端口地址。
- http://ip:port/radar/client/cache 此接口返回的是当前客户端实例,同步到当前实例内存中的应用信息
- http://ip:port/radar/client/instance 此接口返回的是当前注册实例的信息
- http://ip:port/radar/client/trace 此接口返回的是当前实例中的一些内置的追踪信息
- http://ip:port/radar/client/config 此接口返回的是当前实例注册配置信息
canAppId 和 appName 必须唯一,同时必须一一对应,否则注册不成功。如下图
如果此前已经注册了一个应用ID为1000002070
和应用名为soa_rest_test_new_1
的应用实例,如果此时注册一个应用ID为1000002070 但是应用名不是soa_rest_test_new_1
,那么此时注册时,会提示appid和应用不一一对应,需要在portal界面中修改应用名,才能重新注册。