8.Spring Could Ribbon 集成 - SpringCloud/spring-cloud-radar GitHub Wiki

在此开源项目中,提供了一个基于radar客户端的ribbon集成组件,叫radar-client-springboot-ribbon,下面就演示一下如何开发一个简单的基于radar ribbon的样例。

1、准备工作

本模块假设你已经知道如何部署radar了,不熟悉可以参考前面章节。下载好代码后,执行mvn clean install -DskipTests 将jar 编译到本地仓库中。

2、启动注册中心和portal 界面

按照前面wiki中,快速部署的方式,启动注册中心和portal界面。具体启动方式参考前面快速部署

3、新建契约(radar-demo-dto)

需要准备一个纯契约项目,方便provider 和Consumer端引用同样的契约jar。 可以参考代码库中 如样例项目:\radar-demo\radar-demo-dto

4、新建服务端 (radar-demo-provider)

新建一个springboot web 项目,在pom文件中添加 契约radar-demo-dto和 radar 客户端radar-client-springboot 引用。 具体可以参考 \radar-demo\radar-demo-provider

<dependency>
	<groupId>com.ppdai.infrastructure</groupId>
	<artifactId>radar-demo-dto</artifactId>
	<version>0.0.8-SNAPSHOT</version>
</dependency>

<dependency>
	<groupId>com.ppdai.infrastructure</groupId>
	<artifactId>radar-client-springboot</artifactId>
	<version>0.0.8-SNAPSHOT</version>
</dependency>

新建一个restcontroller如下:

@RestController
public class RadarProviderController {
	@Autowired
	private Environment env;
	
	@PostMapping(value = "/demo")
	public RadarDemoResponse demo(@RequestBody RadarDemoRequest request) {
		RadarDemoResponse response = new RadarDemoResponse();
		response.setResult(IPUtil.getLocalIP()+":"+env.getProperty("server.port"));
		return response;
	}	
}

上面是一个demo 接口,返回当前ip地址和端口,也可以返回自己定义的内容。 然后在application.properties 文件中配置radar注册中心的地址,参考如下

radar.register.url=http://localhost:8080
radar.instance.appId=1010111
radar.instance.clusterName=default
server.port=8085
spring.application.name=radar-demo-provider
radar.instance.candInstanceId=${spring.cloud.client.ipAddress}.${server.port}

radar.register.url 为注册中心地址。 radar.instance.clusterName 为集群名称默认default spring.application.name 为应用名称与radar.instance.appId 一一对应,必须唯一,不能为空 radar.instance.appId 为应用id

然后运行启动,注意端口不能冲突。

5、拉入实例

在chrome浏览器中打开portal 管理界面,用radar和admin账号登录,然后在实例中可以看到上面注册的实例,然后拉入

6、新建消费端 (radar-demo-consumer-ribbon)

新建一个radar ribbon消费客户端。具体也可以参考 \radar-demo\radar-demo-consumer-ribbon

新建一个restcontroller,demo如下:

@RestController
public class RadarConsumerController {	
	@Autowired
	private RestTemplate restTemplate;

	@GetMapping(value = "/demo")
	public RadarDemoResponse demo() {
		RadarDemoRequest radarDemoRequest = new RadarDemoRequest();
		radarDemoRequest.setTest("hello-world");
		//1010111 为provider的appid
		return restTemplate.postForEntity("http://1010111/demo", radarDemoRequest, RadarDemoResponse.class).getBody();
	}
}

然后在application.properties 文件中配置radar注册中心的地址,参考如下

radar.register.url=http://localhost:8080
server.port=8081
spring.application.name=radar-demo-consumer
radar.instance.registerSelf=false
radar.instance.clusterName=default

注意 radar.instance.registerSelf的意思是,当前应用是纯消费端,不对外提供服务。默认是服务端。如果是纯消费端不会注册到注册中心上去。

然后启动当前消费端,在chrome 浏览器中输入 http://localhost:8081/demo 会显示调用的服务端的ip和端口信息,如果服务端有多个,显示不同的ip和端口。

至此一个典型的radar 应用项目完成了,可以参考此demo 构建自己的应用。

7、附加

除了提供spring cloud ribbon 接入以外,也提供传统的proxy接入,对于对spring cloud 不是很熟悉的用户,可以参考\radar-demo\radar-demo-consumer项目,此项目依赖的是 \radar-client\radar-client-spring-http 项目,此项目代码比较简单,方便用户自行修改,在此不在描述。

⚠️ **GitHub.com Fallback** ⚠️