springcloud 之服务注册与发现Eureka Server

我们在做分布式服务的时候总免不了听到“注册中心”这些词,那时候的我们总感觉这些东西很神秘很高大上,其实等我们正在去了解的时候发现其实他就是一个用来登记服务实例的一个容器而已,例如学过dubbo的童鞋应该都知道dubbo也有一个服务注册中心,且是通过zookeeper实现的,那么服务注册中心是用来干什么的呢?

如图(我摘抄的):


1.首先简单来说服务注册中心就是用来登记服务的,即:所有的服务都在我这进行注册登记,那么我就知道每个服务的名称实例,以及访问的url了,一旦发生变更,重启服务后会自动重新注册

2.对于调用方,如果我需要调用某个服务,那么我不需要通过http:xxxx的方式去直连某个请求地址,而是直接去服务中心拿到我需要调用的实例,然后定位到我需要调用的服务

3.从图中我们可以看出它包括服务发现组件、服务提供者、服务消费者;服务发现组件就是用来发现并登记服务的(包括服务的地址、端口等);服务提供者即被调用方,服务提供者将自身像注册中心登记,然后被其它消费方调用;服务消费者即服务调用方,他们从注册中心拿到需要调用的服务提供者的实例,然后发起请求;

4.服务注册中会有一个心跳检测功能,定时向已注册的各个服务发送心跳以检测该服务是否宕机


springcloud默认的服务发现机制是通过eureka实现的而不是zookeeper,这个是因为springcloud的理念不同(CAP原则注重点不同);

好了,了解了基本概念后我们通过eureka来搭建一个基本的服务注册发现中心吧!

1.创建一个项目:discover-server

2.打开pom.xml并加入相关依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
</dependency>
重点依赖:spring-cloud-starter-eureka-server

3.然后打开application-dev.properties并加入以下内容:

#端口
server.port=8761
#应用名称
spring.application.name=discover-server

#app name
eureka.instance.hostname=localhost
#通过eureka.client.registerWithEurekafalsefetchRegistryfalse来表明自己是一个eureka server.
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

#log level
logging.level.root=debug

4.关闭eureka自我保护(当存在失效服务节点时会在指定的时间移除,生产环境可以开启)

#-----------------------------------关闭eureka自我保护---------------------------------------
#注意:更改Eureka更新频率将打破服务器的自我保护功能,生产环境下不建议自定义这些配置。
#Eureka Server端:配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔
#设为false,关闭自我保护
eureka.server.enable-self-preservation=false
#清理间隔(单位毫秒,默认是60*1000eureka.server.eviction-interval-timer-in-ms=4000

5.打开启动类加入注解标识该服务为一个eureka服务端

@EnableEurekaServer
@SpringBootApplication
public class Xsignal2DiscoverServerApplication {

   public static void main(String[] args) {
      SpringApplication.run(Xsignal2DiscoverServerApplication.class, args);
   }
}

6.然后启动项目


至此,congratulation,你已经成功搭建了一个服务发现中心!下一篇文章我会教你如何向其中注册服务。

猜你喜欢

转载自blog.csdn.net/zwx19921215/article/details/79800409