Spring Cloud 框架 -- Eureka 服务的注册与消费

服务注册

服务注册就是把一个微服务注册到 Eureka Server 上,这样,当其他服务需要调用该服务时,只需要从 Eureka Server 上查询该服务的信息即可。

这里创建一个 provider ,作为服务提供者,创建项目时,选择 Eureka Client 依赖,这样,当服务创建完成后,简单配置一下,就可以被注册到 Eureka Server 上了:

项目创建好了后,在 application.properties 中配置一下:

# 设置当前服务的名称
spring.application.name=provider   
# 设置当前服务的端口号
server.port=1113
# 设置当前服务的注册地址
eureka.client.service-url.defaultZone = http://localhost:1111/eureka

然后,先启动 Eureka Server (Eureka 的搭建参考文章https://www.cnblogs.com/youcoding/p/13238058.html),待服务注册中心启动成功后,再启动 provider 。

随后,再在浏览器中输入 http://localhost:1111,就可以查看 provider 的注册信息,如下图:

服务消费

首先在 provider 中提供一个接口,然后创建一个新的 consumer 项目,消费这个接口;

在 provider 中,提供一个 hello 接口,如下:

@RestController
public class HelloController {
    @Value("${server.port}")
    Integer port;
    @GetMapping("/hello")
    public String hello(){
        return "hello you!" + port;
    }
}

创建一个 consumer 项目,添加 web 和 eureka client 依赖:

创建完成后,我们首先在 application.properties 中配置一下注册信息:

spring.application.name=consumer
# 应用服务 WEB 访问端口
server.port=1116
eureka.client.service-url.defaultZone = http://localhost:1111/eureka

消费者 consumer 的主函数如下:

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient

public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

    // 创建一个 RestTemplate 实例
    // 并开启客户端负载均衡
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

再新建 HelloController 类,定义一个 hello 接口:

@RestController
public class HelloController {
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/hello")
    public String hello(){
        return restTemplate.getForObject("http://PROVIDER/hello", String.class);
        //return "hello haha";
    }
}

启动 consumer,打开 eureka 后台,查看注册情况:

忽略掉 Hystrix ,可以看到,provider 和 consumer 成功注册到 eureka 之中。

再访问 http://localhost:1116/hello, 如下图:

如上,就是 eureka 的服务注册与消费。

每天学习一点点,每天进步一点点。

posted @ 2020-08-08 14:11  爱吃西瓜的番茄酱  阅读(202)  评论(0编辑  收藏  举报