《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
spring-boot-starter-parent
2.5.1
org.springframework.cloud
spring-cloud-starter-eureka
1.4.7.RELEASE
org.springframework.cloud
spring-cloud-dependencies
2020.0.2
pom
import
接着创建一个接口HelloController
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@RequestMapping(value = “/hello”, method = RequestMethod.GET)
public String index() {
return “Hello SpringCloud”;
}
}
然后,在主类中通过加上@EnableDiscoveryClient 注解,激活 Eureka中的DiscoveryClient实现(自动化配置,创建DiscoveryClient接口针对Eureka客户端的EurekaDiscoveryClient实例),才能实现上述Controller中对服务信息的输出。
@EnableDiscoveryClient
@SpringBootApplication
public class HelloServiceApplication {
public static void main(String[] args) {
SpringApplication.run(HelloServiceApplication.class, args);
}
}
最后,我们需要在 application.properties 配置文件中,通过spring.application.name属性来为服务命名,比如命名为hello-service。
再通过eureka.client.serviceUrl.defaultzone属性来指定服务注册中心的地址,这里我们指定为之前构建的服务注册中心地址,完整配置如下所示:
spring.application.name=hello-service
eureka.instance.prefer-ip-address=true
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
通过访问Eureka的信息面板,在Instances currently registered with Eureka一栏中看到服务的注册信息。
3.5 高可用注册中心
在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务注册中心也一样。但是到本节为止,我们一直都在使用单节点的服务注册中心,这在生产环境中显然并不合适,我们需要构建高可用的服务注册中心以增强系统的可用性。
Eureka Server的设计一开始就考虑了高可用问题,在 Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外。在单节点的配置中,我们设置过下面这两个参数,让服务注册中心不注册自己:
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
Eureka Server 的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。下面我们就来尝试搭建高可用服务注册中心的集群。可以在本章第3.3节中实现的服务注册中心的基础之上进行扩展,构建一个双节点的服务注册中心集群。
server.port=1111
spring.application.name=eureka-server
#