SpringCould 服务提供者与消费者
服务调用方式
- 第一种方式:ribbon+restTemplate
- 第二种方式:feign(默认集成ribbon)
ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。
建立服务提供者
在
eurekaclient
添加一个HelloControl
接口类1
2
3
4
5
6
7
8
9
10
11
public class HelloControl {
String port;
public String home( { String name)
return "hi "+name+",i am from port:" +port;
}
}启动两个
eurekaclient
配置vm启动参数-Dserver.port=8098
端口分布为8099和8098。
建立服务消费者
新建springboot项目勾选如下
- web->web
- Could discovery-> eureka server
- Could routing->ribbon
在
RibbonrestApplication
启动类添加注解@EnableEurekaClient
在
Application.yml
配置文件添加内容:1
2
3
4
5
6
7
8
9server:
port: 8093
spring:
application:
name: ribbon-client
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8091/eureka/ #注意要加eureka,不然找不到在
RibbonrestApplication
启动类添加负载均衡1
2
3
4
5//spring ioc bean 依赖注入知识点(待补充)
//负载均衡
RestTemplate restTemplate(){
return new RestTemplate();
}新建
HelloService
类消费服务1
2
3
4
5
6
7
8
9
10
public class HelloService {
RestTemplate restTemplate;
public String hiService(String name){
//eureka-client为服务提供者的spring.application.name=eureka-client
return restTemplate.getForObject("http://eureka-client/hi?name="+name,String.class); //该url为服务提供者提供的接口
}
}调用
HelloService
的服务,新建一个HelloControler
类1
2
3
4
5
6
7
8
9
public class HelloControler {
HelloService helloService;
//访问入口
public String hi({ String name)
return helloService.hiService(name); //调用消费服务
}
}访问http://127.0.0.1:8093/resthi?name=32这个服务消费者提供的接口,不停刷新可以看到端口的变化,就说明了负载均衡起作用了。
总结图示
1 | Note left of eurekaClient8099/8098: 服务提供者(n个) |