三者关系如图所示:
说明:7001+7002为Eurake服务集群;80为服务调用者summer端;8001+8002为为服务提供者provider端。Eureka服务集群在注册的时候应该相互注册,相互守望。
(一)Eureka服务集群环境构建和注册
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
-
创建模块
cloud-eureka-server7001
-
导包(pom.xml)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
- 写配置(application.yml)
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#集群指向其它eureka
defaultZone: http://eureka7002.com:7002/eureka/
#单机就是7001自己
#defaultZone: http://eureka7001.com:7001/eureka/
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
说明:defaultZone中的url是7002模块的地址,这样写的目的是Eureka中的模块集群应该相互注册,相互守望。
需要配置的东西:
1.端口
2.主机名
3.注册守望7002
- 主启动类(EurekaMain7001)
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7001.class, args);
}
}
说明:一定要在主启动类中添加@EnableEurekaServer
注解,表名该模块是Eureka的注册服务模块
5.测试
输入网址:http://eureka7001.com:7001/
即可查看是否配置成功
eureka7002.com
;第二个箭头表示注册进Eureka的consumer模块和Provider模块。由于此时还没有模块注册进来,因此为空。
注: Eureka中的7002模块注册与上述步骤一致。
(二) consumer中模块注册进Eureka
- 在consumer中创建80模块
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 写配置(application.yml)
server:
port: 80
spring:
application:
name: cloud-order-service
eureka:
client:
#表示是否将自己注册进Eurekaserver默认为true。
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka
需要配置的内容:
1.端口
2.consumer名
3.注册进7001和7002
4. 主启动类(OrderMain80)
@SpringBootApplication
@EnableEurekaClient
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class, args);
}
}
说明:一定要在主启动类中添加@EnableEurekaClient
注解,表明该模块为注册进Eureka中的模块。
(三) provider端注册进Eureka
- 创建模块8001
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 写配置(application.yml)
server:
port: 8001
spring:
application:
name: cloud-payment-service
eureka:
client:
#表示是否将自己注册进Eurekaserver默认为true。
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka
instance:
instance-id: payment8001
prefer-ip-address: true
需要配置的内容:
1.端口
2.provider名
3.注册进7001和7002
- 主程序类(PaymentMain8001)
@SpringBootApplication
@EnableEurekaClient
public class PaymentMain8001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8001.class, args);
}
}
说明:一定要写@EnableEurekaClient
注解,表明该模块是注册进Eureka的模块。
- 测试
eureka7001.com:
eureka7002.com:
说明:provider中的模块均可用以上方式注册进eureka。
总结:
1.Eureka中的模块导包和其他模块导包不同,前者为spring-cloud-starter-netflix-eureka-server
,后者为spring-cloud-starter-netflix-eureka-client
。
2.consumer和provider中模块导入方式基本一致。