Spring-Cloud(一)服务注册与发现(eureka

在微服务的使用中,我们会面临线上运行几十个甚至更多的服务。这时候,需要一个提供服务注册与发现的的机制。

在spring-cloud 家族中,提供了 eureka,供我们实现。

Eureka由 server 与 client 组成:

Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名等),Eureka Server会存储这些信息。

Eureka Client是一个Java客户端,用于简化与Eureka Server的交互。

微服务启动后,会周期性(默认30s)向Eureka Server发送心跳以续约自己的“租期”。

如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90s)。

默认情况下,Eureka Server同时也是Eureka Client。多个Eureka Server实例,互相之间通过复制的方式,来实现服务注册表中数据的同步。

Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势 —— 首先,微服务无须每次都查询Eureka Server,从而降低了Eureka Server的压力;其次,即时Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。

综上,Eureka通过心跳检查、客户端缓存等机制,提供了系统的灵活性、可伸缩性和可用性(摘自网络)。

SERVER:

下面实现单节点Eureka Server ,注:单节点不能保证服务的高可用,实际生产环境中,需要构建集群环境。

利用spring 提供的在线工程构建器,填写Group 与 Artifact,随后点击generate-project,下载下来,

https://start.spring.io/

在ide 中打开:

在pom.xml中,添加依赖:

1.8

1.8

Finchley.M8

spring-cloud-starter-netflix-eureka-server

spring-boot-starter-test

test

spring-cloud-dependencies

$

pom

import

spring-boot-maven-plugin

spring-milestones

Spring Milestones

https://repo.spring.io/milestone

false

随后在 TangyuanEurekaDemoApplication类中,添加@EnableEurekaServer注解,声明这是一个Eureka Server。

增加配置:

application.properties

server.port=8761

#表示是否将自己注册到Eureka Server,默认为true。

#表示是否从Eureka Server获取注册信息,默认为true。

#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。

随后访问:

http://localhost:8761/

可以看到,Eureka 服务已经启动了,但是现在还没有服务注册进来。

CLIENT

再使用https://start.spring.io/构建一个用户管理服务:

tangyuan-micrservice-client-usermanage

随后在pom.xml中添加依赖,完整的pom.xml如下:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

tangyuan-micrservice-client-usermanage

0.0.1-SNAPSHOT

jar

tangyuan-micrservice-client-usermanage

Demo project for Spring Boot

spring-boot-starter-parent

2.0.2.RELEASE

1.8

Finchley.M8

spring-boot-starter

spring-boot-starter-test

test

spring-boot-starter-web

spring-boot-starter-actuator

spring-cloud-starter-netflix-eureka-client

spring-cloud-dependencies

$

pom

import

spring-boot-maven-plugin

spring-milestones

Spring Milestones

https://repo.spring.io/milestone

false

application.properties

中添加:

spring.application.name=ms-usermanage #实例名称

Spring boot 启动类中,添加注解;@EnableDiscoveryClient,表示这是一个服务注册发现的客户端

完整类如下:

@SpringBootApplication

@EnableDiscoveryClient

public classTangyuanMicrserviceClientUsermanageApplication{

public static voidmain(String[]args) {

SpringApplication.run(TangyuanMicrserviceClientUsermanageApplication.class,args);

}

}

启动用户管理服务,

随后可以看到,http://localhost:8761/监测中:刚刚添加的userManage 实例,已经注册进去了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180610G0VUMG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券