spring cloud 学习之 服务注册和发现(Eureka)

时间:2023-03-09 02:20:37
spring cloud 学习之 服务注册和发现(Eureka)

一:服务注册和发现(Eureka)

  1:采用Eureka作为服务注册和发现组件

  2:Eureka 项目中 主要在启动类加上 注解@EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication { public static void main(String[] args) {
SpringApplication.run( EurekaServerApplication.class, args );
}
}

  3:eureka 是 一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳

在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件appication.yml

server:
port: 8761 eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring:
application:
name: eurka-server

  通过 eureka。client.registerWithEureka:false 和 fetchRegistry:false 来声明是eureka server

二:服务提供者(Eureka client)

  1:当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。

如果心跳超时,则通常将该实例从注册server中删除

  2:通过注解@EnableEurekaClient 表明自己是一个eurekaclient.

@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceHiApplication { public static void main(String[] args) {
SpringApplication.run( ServiceHiApplication.class, args );
} @Value("${server.port}")
String port; @RequestMapping("/hi")
public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
return "hi " + name + " ,i am from port:" + port;
} }

  3:需要在配置文件中注明自己的服务注册中心地址,application.yml 配置文件

server:
port: 8762 spring:
application:
name: service-hi eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

需要指明 spring.application.name 服务和服务之间的相互调用一般是根据name