SpringCloud注册与发现

必要性

服务注册中心(我使用的是Eureka)是指,分布式系统中所有的服务都向注册中心注册,使服务之间可以进行便捷通信。

分布式系统中,服务注册中心是最重要的基础部分。

试想一下,若A服务想调用B服务的接口,单服务情况下,直接调用就可以了。但微服务中,某个服务往往是集群的,即同一个服务有多个。A想要找到诸多B服务中的可用的一个,若在A服务中一一调用是很不靠谱的做法,况且B服务的数量可能也会有所变化。

这时候,将所有启动的B服务注册到注册中心,A请求调用中心寻找B的一个服务就可以了。

两种注册中心

客户端发现

A服务获取所有的B服务,然后通过负载均衡机制(IP哈希,轮询,随机等)获取一个服务,然后调用。

简单直接,A可获得所有B服务信息,但需要自己实现逻辑

--Eureka

服务端发现

介入代理,A请求代理,代理从众多B服务中选择一个服务。

B服务对A不可见,但操作简便

--Nginx

--ZooKeeper

--Kubernetes

Eureka集成

server端

pom文件添加依赖(cloud Greenwich.SR2版本)

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

启动类添加注解

@EnableEurekaServer

application配置文件

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    
#    register-with-eureka: false
  server:
    enable-self-preservation: false
server:
  port: 8761

defaultZone:Eureka服务端地址,服务端也要填写

register-with-eureka:服务端是否显示自身,若为false,项目启动后浏览器不会显示服务端的注册;若为true,则会在列表看到服务端的注册信息

enable-self-preservation:自我保护机制,心跳检测,低于某个数值则注销服务

客户端

pom添加依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

启动类添加注解

@EnableEurekaClient

application配置文件

spring:
  application:
    name: client-name
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

浏览器显示的注册名称是如上配置的client-name

启动项目

启动会报个错误,因为服务端也是客户端,启动时寻找不到服务端所致,无需担心

浏览器输入localhost:8761

Eureka高可用

一般eureka都是布置多个的,若一个挂掉后不会影响正常使用

做法就是eureka的defaultZone写除本身外所有其他的eureka,使用逗号隔开

客户端的defaultZone写所有的eureka

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值