springcloud授权服务:Cloud快速上手之Eureka-注册中心

时间:2024-03-19 03:49:33/人气:365 ℃

Eureka在spring cloud中的作用是服务发现。

当我们采用微服务开发,项目中的服务特别多,就需要一个机制来发现应用中所有的服务,方便调用,Erueka就是起到了服务发现的作用。

所有服务启动后,都向Eureka注册自己(除了Eureka自己),这样,在Eureka中就有了当前应用中所有的服务列表,这样每个服务都可以向Eureka询问,自己需要的服务在哪。

总结Eureka的核心作用就是两个,服务的注册与发现。

服务注册与发现,就涉及到了两个角色,一个是Server,一个是Client。我们来演示一下,如何搭建一个Eureka服务端,并建立一个客户端向服务端注册服务。

Eureka注册中心Server实现

1、新建一个maven项目,名叫registry,继承自spring boot,pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>registry</artifactId> <groupId>com.itzhimei</groupId> <version>1.0-SNAPSHOT</version> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR5</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

pom里最重要的一个配置就是:

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

引入了一个Eureka Server的依赖

2、新建配置

在resource下新建4个文件(spring boot相关知识):

bootstrap.yml

bootstrap-dev.yml

bootstrap-prod.yml

bootstrap-test.yml

bootstrap.yml配置如下,相当于使用dev环境配置

spring: profiles: active: dev

bootstrap-dev.yml配置如下:

spring: application: name: registryserver: port: 1111 eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false serviceUrl: defaultZone: http://localhost:${server.port}/eureka/ server: # 设为false,关闭自我保护 enable-self-preservation: true # 清理间隔(单位毫秒,默认是60*1000) eviction-interval-timer-in-ms: 4000

我们来讲解一下上面的配置:

这是声明当前的服务的名称

spring: application: name: registry

声明服务所用端口

server: port: 1234

不向Eureka注册,因为自己就是注册中心

register-with-eureka: false

不获取注册信息

fetch-registry: false

服务识别地址

defaultZone: http://localhost:${server.port}/eureka/

3、启动入口类

package com.itzhimei.registry;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublic class RegistryApplication { private static final Logger LOGGER = LoggerFactory.getLogger(RegistryApplication.class); public static void main(String[] args) { SpringApplication.run(RegistryApplication.class, args); LOGGER.info("注册中心启动完成..."); }}

这里有一个重要的注解@EnableEurekaServer,使用了这个注解,就表示当前项目是一个注册中心服务。(spring cloud的微服务开发就是这样简单,并不需要我们做过多的代码开发,只需要一个注解,对应功能微服务就有了。)

完成以上操作,就可以启动Eureka服务了,启动即可以i在IDE中启动,也可以把项目打成jar包启动,我这里使用的IDE,启动后访问本地1111端口:http://localhost:1111/

这里能看到所有注册到当前Eureka的所有服务,当前还没有服务注册,我们来写一个测试项目,注册到Eureka。

至此Eureka的服务端就完成了,接下来我们配置一个客户端,向服务端注册自己。

1、配置一个名叫service-a的项目,pom文件如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>service-a</artifactId> <groupId>com.itzhimei</groupId> <version>1.0-SNAPSHOT</version> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR5</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

这里pom文件中引入了一个Eureka的client依赖:

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

2、客户端位置文件

bootstrap.yml

spring: application: name: service-a profiles: active: devserver: port: 1110eureka: instance: prefer-ip-address: true #注册时使用ip地址

bootstrap-dev.yml

eureka: client: serviceUrl: defaultZone: http://localhost:1111/eureka/

这里就指定了Eureka服务的地址,当这个客户端服务启动时,会向这个服务中心注册自己。

3、启动入口类

package com.itzhimei.servicea;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient@SpringBootApplicationpublic class ServiceAApplication { public static void main(String[] args) { SpringApplication.run(ServiceAApplication.class, args); }}

这里使用了@EnableDiscoveryClient注解,表示当前服务就是一个Eureka的客户端,会向服务端注册自己。

service-a启动后,向Eureka注册

我们随便写一个测试方法,访问测试项目service-a地址:http://localhost:1110/getName

页面输出:名字是:张三

到这里Eureka的入门课程已经完成,动手试一试。

当然,这里讲解的还只是最简单的内容,你还可以试一试启动多个Eureka注册中心,让你的微服务同时向多个Eureka注册中心注册。多个Eureka注册中心的目的就是保证服务的高可用。

推荐

  • 1儿童过敏性疾病234
  • 2夏天穿皮鞋好吗223
  • 3合规经营心得体会汇总15篇212
  • 4中国大学就业薪酬怎么样466
  • 5小学班主任经验交流两篇496
  • 6自由可投还有希望吗自由可投怎么办424
  • 7属羊的人跟什么属相相冲319
  • 8医生的工作推荐信范文481
  • 9不可仿制的古瓷开片:古瓷的神秘美颜---开片141
  • 10紫金泥是什么泥?水浸不烂火烧留痕世界上最贵的泥420
  • 首页/电脑版/地图
    © 2024 OONiu.Com All Rights Reserved.