上一篇主要写了基于Eurake的服务的注册,主要就是创建注册中心,创建服务者,将服务者注册到注册中心,完成服务的暴露。这一篇主要写服务的消费与服务消费的负载均衡。
服务的调用方式有两种,Rest + ribbon ,另一钟是feign,feign集成了ribbon。这一篇主要说前者.
因为服务消费者也是属于client,并且还有对于ribbon的依赖,创建服务消费者工程需要引入jar包
spring-cloud-starter-netflix-eureka-client,spring-cloud-starter-netflix-ribbon。
1.配置文件中要声明注册中心的地址,消费者注册的端口号,消费者的应用名。
2.在主方法上添加@EnableEurakeClient 和 @EnableDiscoverClient
3.通过@Bean RestTemplate 注入容器,并且@LoadBalanced 启动负载均衡功能
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8764 spring: application: name: service-ribbon
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient public class ServiceRibbonApplication { public static void main(String[] args) { SpringApplication.run( ServiceRibbonApplication.class, args ); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } }
@Service public class HelloService { @Autowired RestTemplate restTemplate; public String hiService(String name) { return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class); } }
服务名称的请求在发送请求的时候会替换为对应的具体URL
@RestController public class HelloControler { @Autowired HelloService helloService; @GetMapping(value = "/hi") public String hi(@RequestParam String name) { return helloService.hiService( name ); } }
采用不同的端口号启动两个服务消费者,在页面进行多次请求,会循环采用不同的端口号(负载算法后续补上)。
现在的服务架构我画了个图:很丑,对付着看吧
今天就先写到这吧,睡觉睡觉.