spring

Eureka With Spring Cloud

2021-08-04  本文已影响0人  ADADACHAN

Spring Gloud

开发分布式系统可能具有挑战性。复杂性从应用层转移到网络层,需要服务之间进行更多的交互。使您的代码成为“云原生”意味着处理 12 个因素的问题,例如外部配置、无状态、日志记录和连接到支持服务。 Spring Cloud 项目套件包含使应用程序在云中运行所需的许多服务。

Spring Cloud 架构亮点

服务发现

在云中,应用程序并不总是知道其他服务的确切位置。服务注册中心(例如 Netflix Eureka)或 Sidecar 解决方案(例如 HashiCorp Consul)可以提供帮助。 Spring Cloud 为 Eureka、Consul、Zookeeper 甚至 Kubernetes 的内置系统等流行注册中心提供了 DiscoveryClient 实现。还有一个 Spring Cloud Load Balancer 可以帮助您在服务实例之间小心地分配负载。

服务注册和发现

需要java1.5,mvn和installj idea 获取代码:git clone https://github.com/spring-guides/gs-service-registration-and-discovery.git

1)从 Spring Initializr 开始

对于所有 Spring 应用程序,您应该从 Spring Initializr 开始。 Initializr 提供了一种快速的方式来拉入应用程序所需的所有依赖项,并为您完成大量设置。本指南需要两个应用程序。第一个应用程序(服务应用程序)只需要 Eureka Server 依赖项

以下清单显示了在您选择 Gradle 时创建的 build.gradle 文件(用于服务应用程序):

plugins {

id'org.springframework.boot' version'2.4.1'

  id'io.spring.dependency-management' version'1.0.10.RELEASE'

  id'java'

}

group ='com.example'

version ='0.0.1-SNAPSHOT'

sourceCompatibility ='11'

repositories {

mavenCentral()

}

ext {

set('springCloudVersion',"2020.0.0")

}

dependencies {

implementation'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'

  testImplementation'org.springframework.boot:spring-boot-starter-test'

}

dependencyManagement {

imports {

mavenBom"org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"

  }

}

test {

useJUnitPlatform()

}

2)第二个应用程序(客户端应用程序)需要 Eureka Server 和 Eureka Discovery Client 依赖项

plugins {

id'org.springframework.boot' version'2.4.1'

  id'io.spring.dependency-management' version'1.0.10.RELEASE'

  id'java'

}

group ='com.example'

version ='0.0.1-SNAPSHOT'

sourceCompatibility ='11'

repositories {

mavenCentral()

maven { url'https://repo.spring.io/milestone' }

}

ext {

set('springCloudVersion',"2020.0.0")

}

dependencies {

implementation'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

  implementation'org.springframework.boot:spring-boot-starter-web'

  testImplementation'org.springframework.boot:spring-boot-starter-test'

}

dependencyManagement {

imports {

mavenBom"org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"

  }

}

test {

useJUnitPlatform()

}

启动 Eureka 服务注册中心

您首先需要一个 Eureka 服务注册中心。您可以使用 Spring Cloud 的 @EnableEurekaServer 来建立一个注册表,其他应用程序可以与之通信。这是一个常规的 Spring Boot 应用程序,添加了一个注释 (@EnableEurekaServer) 以启用服务注册表。以下清单(来自 eureka-service/src/main/java/com.example.serviceregistrationanddiscoveryservice/ServiceRegistrationAndDiscoveryServiceApplication.java)显示了服务应用程序:

package com.example.serviceregistrationanddiscoveryservice;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class ServiceRegistrationAndDiscoveryServiceApplication {

public static void main(String[] args) {

SpringApplication.run(ServiceRegistrationAndDiscoveryServiceApplication.class, args);

  }

}

配置文件

server.port=8761

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false

logging.level.com.netflix.eureka=OFF

logging.level.com.netflix.discovery=OFF

与登记服务通话

现在您已经启动了一个服务注册中心,您可以建立一个客户端,它既向注册中心注册自己,又使用 Spring Cloud DiscoveryClient 抽象来查询注册中心以获取其自己的主机和端口。 @EnableDiscoveryClient 激活 Netflix Eureka DiscoveryClient 实现。 (还有其他服务注册中心的其他实现,例如 Hashicorp 的 Consul 或 Apache Zookeeper)。以下清单

要使用 Gradle 运行 Eureka 服务,请在终端窗口(在 /complete 目录中)运行以下命令:

服务端命令:gradlew :eureka-service:bootRun

客户端命令:gradlew :eureka-client:bootRun

通过浏览器查看 服务端:

查看 客户端的

总结:

刚刚使用 Spring 建立了 Netflix Eureka 服务注册表并在客户端应用程序中使用该注册表。


上一篇 下一篇

猜你喜欢

热点阅读