已有Consumer Service 服务
------------------------------
添加新的模块
1.导包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.在启动类上加@EnableEurekaServer注解,表示这是eureka的服务端
3.配置yaml文件
--------------------
server:
port: 10086
spring:
application:
# 服务名
name: eureka-server
eureka:
client:
service-url:
#服务地址,如果是集群,需要指定其他eureka地址
defaultZone: http://127.0.0.1:10086/eureka
#eureka 自身不提供服务,默认不注册自己
register-with-eureka: false
#不拉取服务
fetch-registry: false
---------------------------------
服务注册:在服务提供user-service添加Eureka客户端依赖;自动将服务注册到Eureka服务地址
- 添加依赖
- 改造启动类;添加开启Eureka客户端发现的注解
- 修改配置文件;设置Eureka服务地址
服务发现: 在服务提供consumer-demo添加Eureka客户端依赖; 可以使用工具类根据服务名称获取对应的服务地址列表。
- 添加依赖
- 改造启动类;添加开启Eureka客户端发现的注解
- 修改配置文件;设置Eureka服务地址
- 改造处理器类ConsumerController,可以使用工具类DiscoveryClient根据服务名称获取对应的服务地址列表
使用RestTemplate获取服务
-------------------------------------------------
1>服务端添加依赖
<!-- eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2>启动类上添加eureka客户端注解@EnableDiscoveryClient,开启服务发现功能
3>在配置文件中配置服务名称,并配置服务资质(rewrite)
server:
port: 9091
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springcloud
username: root
password: songhang
application:
name: user-service
mybatis:
type-aliases-package: com.song.user.pojo
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
---------------------------------
1>Consumenr端添加依赖
<!-- eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2>启动类上添加eureka客户端注解@EnableDiscoveryClient,开启服务发现功能
3>在配置文件中配置服务名称,并配置服务资质(rewrite)
--------------------
spring:
application:
name: consumer-demo
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
-----------------------------------
4>修改处理器
-------------------
@Autowired0 private DiscoveryClient //spring
//获取eureka中注册的实例
List<ServiceInstance> instances = discoveryClient.getInstances("user-service");
ServiceInstance serviceInstance = instances.get(0);
url="http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/user/"+id;
return restTemplate.getForObject(url, User.class);
------------------------------------------------------------------------------
测试访问controller
-------------------------
eureka 高可用配置
-------------------------
server:
port: ${port:10086}
spring:
application:
# 服务名
name: eureka-server
eureka:
client:
service-url:
#服务地址,如果是集群,需要指定其他eureka地址
defaultZone: ${defaultZone:http://127.0.0.1:10086/eureka}
#eureka 自身不提供服务,默认不注册自己
# register-with-eureka: false
#不拉取服务
# fetch-registry: false
-------------------------------------
edit => VM options ==> -D:port=10087 -DdefaultZone=http://127.0.0.1:10086/eureka
复制一个服务 ,互相注册
edit => VM options ==> -D:port=10086 -DdefaultZone=http://127.0.0.1:10087/eureka
在服务提供方配置
----------------------------
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
------------------------------------
Eureka客户端与服务端的配置
Eureka客户端user-service的注册、续约等配置项,配置eureka客户端consumer-demo的获取服务间隔时间;了解失效剔除和自我保护
Eureka客户端工程
user-service服务提供
- 服务地址使用ip方式
- 续约
consumer-deno服务消费
- 获取服务地址的频率
Eureka服务端工程eureka-server
- 失效剔除
- 自我保护
-------------------------------
配置:服务地址使用ip方式
在user-service中配置
--------------
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
instance:
#更倾向于ip,
prefer-ip-address: true
ip-address: 127.0.0.1
----------------
配置:续约(在服务注册完成以后,服务提供者会维持一个心跳,定时向EurekaServer发起一个心跳)
在user-service中配置
--------------
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
instance:
#更倾向于ip,
prefer-ip-address: true
ip-address: 127.0.0.1
#续约间隔
lease-renewal-interval-in-seconds: 20
#服务失效时间
lease-expiration-duration-in-seconds: 40
---------------------------------
配置:获取服务地址的频率(拉取间隔时间)
在consumer-demo中配置
------------------------
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
#服务拉取时间间隔
registry-fetch-interval-seconds: 10
---------------------------
配置:失效剔除,关闭自我保护模式
在eureka-server中配置
-----------------------
eureka:
client:
service-url:
#服务地址,如果是集群,需要指定其他eureka地址
defaultZone: ${defaultZone:http://127.0.0.1:10086/eureka}
#eureka 自身不提供服务,默认不注册自己
register-with-eureka: false
#不拉取服务
fetch-registry: false
server:
#服务失效剔除时间
eviction-interval-timer-in-ms: 60
#关闭自我保护模式,关闭后页面不会显示警告信息
enable-self-preservation: false
-----------------------------