对 springcloud 中服务注册与发现(调用)的总结!
注册中心
Eureka
搭建注册中心
-
引入依赖
spring-cloud-starter-netflix-eureka-server
。 -
在application.yml中配置Eureka Server,比如下面的配置。
#配置Eureka Server
eureka:
instance:
# 主机地址名称
# hostname: localhost # 单机版的主机地址名称
hostname: eureka7003.com
client:
register-with-eureka: false # 是否将自己注册到注册中心
fetch-registry: false # 是否从Eureka中获取服务列表
service-url: # 配置暴露给Eureka Client的请求地址
# 单机版
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 集群版
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
server:
enable-self-preservation: false #关闭自我保护
eviction-interval-timer-in-ms: 4000 #剔除时间间隔,单位:毫秒
- 在启动类上标注
@EnableEurekaServer
注解。
服务注册
-
提供提供者引入
spring-cloud-starter-netflix-eureka-client
依赖。 -
在application.yml中通过
eureka.client.service-url.defaultZone
配置注册中心地址。
# 配置 eureka
eureka:
instance:
# 主机名称:服务名称修改,其实就是向eureka server中注册的实例id
instance-id: service-product:9001
# 显示IP信息
prefer-ip-address: true
client:
service-url: # 此处修改为 Eureka Server的集群地址
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
Consul
搭建注册中心
-
下载安装Consul,一般建议3~5台机器。
-
启动consul。
consul agent -server -bootstrap-expect 3 -data-dir=/etc/consul.d -node=server-1 -bind=192.168.237.100 -ui -client 0.0.0.0 &
consul agent -server -bootstrap-expect 3 -data-dir=/etc/consul.d -node=server-2 -bind=192.168.237.101 -ui -client 0.0.0.0 &
consul join 192.168.237.100
consul agent -server -bootstrap-expect 3 -data-dir=/etc/consul.d -node=server-3 -bind=192.168.237.102 -ui -client 0.0.0.0 &
consul join 192.168.237.100
服务注册
-
服务提供者引入
spring-cloud-starter-consul-discovery
依赖。 -
通过
spring.cloud..consul.host
和spring.cloud.consul.port
指定Consul Client(如果是集群)的请求地址。
服务调用
Ribbon
-
通过Ribbon结合RestTemplate的方式进行服务调用只需要声明RestTemplate的方法上添加注解
@LoadBalanced
注解即可。 -
可以通过
服务名称.ribbon.NFLoadBalancerRuleClassName
配置负载均衡策略。
Feign
-
服务消费者引入
spring-cloud-starter-openfeign
依赖。 -
通过
@FeignClient
声明一个调用远程微服务的接口。 -
启动类上标注解
@EnableFeignClients
激活Feign。
参考:https://www.yuque.com/sunxiaping/yg511q/tqiv41