Eureka 服务注册与发现组件, 采用分布式AP理论,服务端监控注册服务的心跳,服务客户端。
用订单支付场景模拟。
1.创建maven聚合项目 具体步骤省略。。。
2.创建maven项目 cloud-eureka-server7001 作为eureka服务端
创建项目必要的套路如下:
- 建module
- 改pom
- 写yaml(提倡)或写properties
- 主启动
- 业务类
添加必要的依赖 版本父模块已经提供
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
主启动类添加必要注解
@EnableEurekaServer //开始eureka注册中心
配置文件
server:
port: 7001
eureka:
instance:
hostname: localhost # eureka服务端的实例名称
client:
register-with-eureka: false # false 表示不向注册中心注册自己
fetch-registry: false # false 表示注册中心
service-url:
# 集群
# defaultZone: http://eureka7002.com:7002/eureka/
# 单机
defaultZone: http://eureka7001.com:7001/eureka/
server:
# 关闭自我保护机制 默认true 开启
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
启动项目 访问:http:localhost:7001/
3.创建订单模块作为服务提供者 cloud-provider-payment8001 按照套路建模块
添加必要依赖 版本父模块已经提供
<!--引入eureka 客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
编写配置文件
server:
port: 8001
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2019?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
password: ****
username: ****
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.atguigu.springcloud.entities
eureka:
instance:
hostname: localhost
instance-id: payment8001
prefer-ip-address: true
# Eureka 服务端在收到最后一次心跳后等待时间上限,单位秒默认90,秒,超时将剔除服务
lease-expiration-duration-in-seconds: 2
# Eureka 客户端向服务端发送心跳的时间间隔,单位秒 默认30秒
lease-renewal-interval-in-seconds: 1
client:
fetch-registry: true
register-with-eureka: true
service-url:
# 集群
# defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
defaultZone: http://eureka7001.com:7001/eureka # 单机版
启动类添加注解
@EnableEurekaClient // 开启eureka 客户端
订单服务已经注册eureka服务端中
同理订单消费者模块 跟支付生产者步骤一样
支付消费者已经注册到Eureka 服务端