赞
踩
由于传统RPC框架随着微服务数目不断增加,体系的复杂度不断提高,尝试手动配置每个服务就很难做到,同时有更高的概率出错。Eureka就是用于服务发现(Service Discovery Server)和注册(Service )的,并且可将服务器配置为高可用性。
新建模块eurekaServer1
pom.xml添加依赖
<dependencies>
<!--eureka-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
在yaml配置文件中修改配置
server:
port: 8761
eureka:
instance:
hostname: eurekaServer1
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eurekaServer1:8761/eureka/
这里逐行解释一下yaml配置文件中的意思
server.port
:表示端口号eureka.instance.hostname
:表示创建eureka服务端的实例名称eureka.client.register-with-eureka
:表示是否在注册中心注册自己eureka.client.fetch-registry
:表示自己就是服务注册中心,不需要才从服务中心获取服务信息eureka.client.service-url.defaultZone
:表示Eureka Server的地址
新建启动类
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer1 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer1.class,args);
}
}
@SpringBootApplication
不需多说,就是标注主启动类的注解重要的是
@EnableEurekaServer
这个注解,表示将该启动类作为Eureka Server
为了方便后面构建集群式,使用上述方法构建模块eurekaServer2
端口号为8762
测试
在浏览器中输入地址http://eurekaServer1:8761/eureka/
显示下图页面,即为成功
serviceProvider1
<dependencies>
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
server:
port: 8080
spring:
application:
name: service-provider1
eureka:
client:
register-with-eureka: true
fetchRegistry: true
service-url:
defaultZone: http://localhost:8761/eureka
此时需要将服务注册进eureka,所以将属性
eureka.client.register-with-eureka
改为true
,需要注册中心获取信息,将属性eureka.client.fetch-registry
改为true
@SpringBootApplication
@EnableEurekaClient
public class ServiceProvider1 {
public static void main(String[] args) {
SpringApplication.run(ServiceProvider1.class,args);
}
}
@EnableEurekaClient
即将服务作为Eureka客户端注册进服务注册中心
eurekaServer1
,再启动serviceProvider1
,浏览器中输入地址http://localhost:8761/eureka
,可以看到serviceProvider1
已经注册进去了为实现高可用性,假设注册中心只有一个,如果出故障就会使整个服务环境不可用,所以需要构建Eureka集群提高容灾能力
即将两个Eureka Server互相注册进对方的服务中,互相注册,互相守望
eurekaServer1
和eurekaServer2
的yaml配置文件# eurekaServer1 server: port: 8761 eureka: instance: hostname: eurekaServer1.com client: register-with-eureka: false #false表示不向注册中心注册自己。 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 service-url: defaultZone: http://eurekaServer2.com:8762/eureka/ # eurekaServer2 server: port: 8762 eureka: instance: hostname: eurekaServer2.com #eureka服务端的实例名称 client: register-with-eureka: false #false表示不向注册中心注册自己。 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 service-url: defaultZone: http://eurekaServer1.com:8761/eureka/
这里
defaultZone
指向另一个Eureka Server实现相互注册
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
即同时注册进两个Eureka Server
按上述方法新建serviceProvider2
在服务消费者创建ApplicationContextConfig
配置类
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
@LoadBalanced
给RestTemplate
赋予负载均衡的能力,后续会在Ribbon(浅浅的挖一个坑 本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/955773
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。