Spring Cloud Netflix尤里卡

本教程是关于Spring云Netflix Eureka的。 在这里,我们将创建eureka发现服务器和微服务,这些服务本身将注册到发现服务器和使用netflix客户端API的客户端中,以使用示例示例来发现服务并使用该服务公开的微服务。因此,我们将开发每个发现服务器,服务和客户端的3个不同的spring boot应用程序。此外,我们还将研究默认的eureka仪表板和该仪表板中可用的各种有用信息。

Spring Cloud Netflix使用简单的基于注释的配置为Spring Boot应用程序提供Netflix OSS集成。现在是时候创建微服务而不是批量应用程序并将这些微服务部署到云了。 在这种体系结构中,服务发现是关键原则之一,服务发现可根据需要自动创建多个实例,并提供微服务的高可用性,这里我们将使用Eureka作为Netflix服务发现服务器和客户端。

Spring Cloud Eureka发现服务器

发现服务器是所有可用服务的注册表。不同的服务可以在此服务器上进行注册和注销。使用spring boot实施eureka发现服务器非常简单。 为此,首先我们将创建一个具有start.spring.io以下依赖项的spring boot应用程序,并将其导入我们的IDE中。

这带来了以下Maven依赖关系。启用Spring Cloud所需的依赖关系是spring-cloud-dependencies。

pom.xml

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>pring-boot-starter-actuator</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-starter-test</artifactId><scope>test</scope></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>

并且我们在application.properties定义了以下属性。在这里,spring.application.name提供了此服务的唯一标识符。在启动发现服务器时,它将尝试向其对等发现服务器注册以获得我们没有的高可用性本教程。我们没有发现服务器的多个实例。因此eureka.client.register-with-eureka设置为false。

同样,我们具有eureka.client.fetch-registry属性,该属性指示此客户端是否应从eureka服务器获取eureka注册信息。 并且server.port定义了我们的发现服务器将在其上运行的端口。

spring.application.name=discovery-server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
server.port=8761

现在让我们定义我们的DiscoveryServerApplication。@ EnableEurekaServer将启用eureka服务器配置。 当我们将此类作为Java程序运行时,它将在http:// localhost:8761 / eureka /处添加新的对等节点,并且我们的微服务将调用该URL进行自身注册。

DiscoveryServerApplication.java

package com.devglan.discoveryserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class DiscoveryServerApplication {public static void main(String[] args) {SpringApplication.run(DiscoveryServerApplication.class, args);}
}

发现服务器就是这样。 我们的发现服务器已准备就绪,可以接受来自http:// localhost:8761 / eureka上任何服务的注册请求。

Spring Cloud Eureka服务

发现服务器准备就绪后,现在让我们创建微服务 。 同样,这将是spring boot app,我们将使用spring boot starter下载示例项目。

这是pom文件。

pom.xml

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></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>

该模块将充当微服务,并在启动时将其自身注册到发现服务器。为此注册,我们需要在application.properties配置有关发现服务器的信息。下面是entrys.spring.application.name是唯一标识符对于此服务,eureka.client.service-url.defaultZone是服务光盘服务器的URL。

spring.application.name=eureka-service
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
server.port=8085

要将此应用程序配置为eureka服务和发现服务器的客户端,我们需要使用@EnableDiscoveryClient注释我们的spring boot应用程序

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

以下是控制器类,我们在其中为客户端应用程序公开了微服务。

GreetingController.java

package com.devglan.eurekaservice.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class GreetingController {@GetMapping("/")public String greeting(){return "Hello from" ;}}

Spring Cloud Eureka客户端

现在是时候定义我们的客户了,为此,我们将再次使用spring starter生成以下项目。

该客户端将与eureka服务发现服务器进行交互,并使用eureka客户端发现服务,然后使用上面我们的服务实现公开的微服务。以下是示例pom.xml文件。

pom.xml

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></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>

application.properties文件中需要以下条目。 由于这是一个客户项目,因此我们不希望它注册到发现服务器。 但是在某些情况下,应用程序既可以是客户端又可以是服务器。在这种情况下,eureka.client.register-with-eureka将为真。

application.properties

spring.application.name=eureka-client
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
eureka.client.register-with-eureka=false

以下是我们的Application类。 它带有@EnableDiscoveryClient注释,以将该应用程序注册为发现客户端。

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

现在,我们将定义控制器,它将在根级别公开一个API。 这个API将从发现服务器发现服务并调用服务。在这里,我们已经自动连接了eureka客户端,并且getNextServerFromEureka()接受两个参数。 第一个参数是微服务应用程序的服务标识符。 我们上面的服务实现已使用名称为eureka-service的发现客户端注册了自己,并且eureka客户端应用程序将使用相同的名称来发现服务。

一旦发现该服务,客户端将调用微服务。记住,我们在上面的服务实现中公开了一个greeting API,并且客户端将调用相同的API。

ClientController.java

package com.devglan.eurekaclient.controller;import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.EurekaClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class ClientController {@Autowiredprivate EurekaClient eurekaClient;@Autowiredprivate RestTemplateBuilder restTemplateBuilder;@GetMapping("/")public String invokeService(){RestTemplate restTemplate = restTemplateBuilder.build();InstanceInfo instanceInfo = eurekaClient.getNextServerFromEureka("eureka-service", false);String serviceBaseUrl = instanceInfo.getHomePageUrl();return restTemplate.getForObject(serviceBaseUrl, String.class);}
}

测试应用

要测试应用程序,请首先启动发现服务器。 为此,我们需要将DiscoveryServerApplication.java作为Java应用程序运行。 您可以检查控制台并找到类似的日志,如下所示。 您还可以在发现服务器公开的控制台中看到URL http:// localhost:8761 / eureka / ,以注册服务。

现在,启动服务,将EurekaServiceApplication.java作为Java应用程序运行。 您还可以运行该服务的多个实例。所有实例都将在发现服务器中注册。成功注册该服务后,您将从发现客户端获得204响应。

现在,以类似的方式通过将EurekaClientApplication.java作为Java应用程序运行EurekaClientApplication.java启动客户端。

现在从URL上输入URL http:// localhost:8080 ,从eureka服务应用程序中以Hello的形式检查字符串响应。

Spring Cloud Eureka仪表板

您可能已经在发现服务器实现中的application.properties文件中注意到我们配置的端口为8761。在该端口上,Spring cloud eureka提供了一个默认启用的仪表板,该仪表板显示有用的元数据和服务状态。在这里我们可以检查关于发现服务器副本的信息(在本例中为1,该副本在localhost上运行)。类似地,我们还具有关于发现服务器的注册服务的信息以及当前状态。

结论

在本教程中,我们了解了Spring Cloud netflix eureka的实现。 我们实现了发现服务器,应用程序服务和应用程序客户端。可以从此处下载源。如果您有任何要添加或共享的内容,请在下面的评论部分中共享。

翻译自: https://www.javacodegeeks.com/2018/03/spring-cloud-netflix-eureka.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掘进循环作业图表_Word版本。煤矿安全生产标准化评分方法(2020)8.4 掘进

注&#xff1a;以下内容来自于网络,若有侵权请联系QQ3609400292进行删除。煤矿安全生产标准化管理体系基本要求及评分方法(试行)8.4 掘 进一、工作要求(风险管控)1.生产组织(1)煤巷、半煤岩巷宜采用综合机械化掘进&#xff0c;综合机械化程度不低于50%&#xff0c;并持续提…

vc++调用jni_通过JNI使用C ++尖叫快速进行Lucene搜索

vc调用jni最终&#xff0c;当Lucene执行查询时&#xff0c;在初始设置后&#xff0c;真正的热点通常是相当基本的代码&#xff0c;该代码对整数docID&#xff0c;术语频率和位置的顺序块进行解码&#xff0c;并将它们匹配&#xff08;例如&#xff0c;对BooleanQuery并集或交集…

hide show vue 动画_jQuery动画效果

-------------------------------------------------------------------------------------------------------1. 隐藏和显示show()方法和hide()方法是jQuery中最基本的动画方法。在HTML文档里&#xff0c;为一个元素调用hide()方法&#xff0c;会将该元素的display样式改为“n…

使用Java的Selenium:Google搜索

1.概述 在本教程中&#xff0c;我们将探讨如何将Selenium与Java结合使用。 我们将使用Selenium打开Goog​​le&#xff0c;进行搜索&#xff0c;然后单击URL。 该代码在Github上可用。 2.什么是硒&#xff1f; Selenium使Web浏览器自动化。 就是这样 Selenium使我们能够模拟…

润乾报表分组求和_一招搞定各种报表合计需求

一、常用合计方案在有专业报表工具之前&#xff0c;常用的实现方案有&#xff1a;1&#xff09; SQL“select sum(字段) from 表 group by 字段 order by 字段“可以实现简单的分组数据合计、条件合计&#xff0c;这种方式有一个很明显的缺点&#xff0c;就是随着合计需求复杂度…

Spring Security 6.x 系列(12)—— Form表单认证登录注销自定义配置

一、前言 在本系列文章中介绍了 Form 表单认证和注销流程&#xff0c;对部分源码也进行详细分析。 本章主要学习 Spring Security 中表单认证登录注销的相关自定义配置。 二、自定义登录页面 Spring Security 表单认证默认规则中对未认证的请求会重定向到默认登录页面&…

中奖名单模板_春分纪中奖名单出炉~才艺主公用“树叶阵法”致敬率土!

在上周发起的“率土春分纪”活动里小率每天都能在后台中收获主公们的“春天故事”今天小率将优质投稿整理出来分享给各位主公1春分诗词春赋雨水以将兮&#xff0c;天微微复日暖&#xff1b;春分之临兮&#xff0c;地脉脉而野苏。美好触手可及&#xff0c;万事恰逢转机。且看柳嫩…

JDK 10的摘要Javadoc标签

JDK 10通过发行JDK-8173425 引入了Javadoc标签{summary} &#xff08;“ Javadoc需要一个新标签来指定摘要。”&#xff09;。 这个新标签允许开发人员显式指定Javadoc注释的哪些部分出现在“摘要”中&#xff0c;而不是依靠Javadoc的默认处理来寻找一个时间和空间来划定注释的…

用c语言写代码_如何避免用动态语言的思维写Go代码

由于招聘市场上Go工程师的供给量不足&#xff0c;所以在招人的时候我们招了不少愿意转型用Go语言进行开发的PHP工程师&#xff0c;不过虽说换了个语言&#xff0c;在他们代码的时候还是能发现很多PHP的影子。if语句后面非要带括号这种问题就不说了&#xff0c;这属于不懂事&…

java ee cdi_Java EE CDI依赖关系消歧示例

java ee cdi在本教程中&#xff0c;我们将向您展示如何避免CDI bean中的依赖关系消除歧义。 在CDI中&#xff0c;我们可以为应用程序中不同客户端的接口的多个实现实现依赖项注入。 依赖性消除歧义的问题是客户端如何在不同的实现中调用特定的实现&#xff0c;而不会发生任何错…

tfw文件如何导入cad_教你三维家3d设计软件如何导入cad文件

一、导入CAD户型图的&#xff0c;注意点&#xff1a;CAD图要求&#xff1a;除墙体外&#xff0c;其它线段不可出现&#xff0c;(如&#xff1a;门、柱子、窗、阳台、标注、家具、植物、摆件等)且墙体线条要闭合&#xff0c;保存DXF格式。第一步:点击户型图--本地上传CAD图。第二…

用EnumMaps映射枚举键

这是一种在JDK中存在很长时间的类型&#xff0c;当我们要定义以枚举类型作为键的映射时会派上用场&#xff1a; EnumMap是一种特殊的Map 。 我们将为给定的枚举创建一个映射&#xff1a; public enum CoffeeType {ESPRESSO, POUR_OVER, FRENCH_PRESS }EnumMap在创建时需要注意…

同级选择器_10-CSS3选择器详解

CSS3在CSS2基础上&#xff0c;增强或新增了许多特性&#xff0c; 弥补了CSS2的众多不足之处&#xff0c;使得Web开发变得更为高效和便捷。CSS3的现状浏览器支持程度不够好&#xff0c;有些需要添加私有前缀移动端支持优于PC端不断改进中应用相对广泛应对的策略&#xff1a;渐进…

机器人庄园作文_十年后的家乡作文精选8篇

十年后的家乡作文精选8篇十年后的家乡作文&#xff1a;十年后的家乡十年前我的家乡美丽富饶&#xff0c;家前的小溪清澈见底&#xff0c;小溪妹妹还&#xff1a;“哗啦啦”的唱起了欢乐的歌谣。树木葱葱茏茏&#xff0c;花朵都露出了美丽可爱的笑脸&#xff0c;蝴蝶、蜜蜂、小鸟…

java heroku_Heroku和Java –从新手到初学者,第2部分

java heroku问题 所以过了几天&#xff0c;我可以回到我的Recaps小项目。 我从检查日志开始&#xff0c;发现了以下内容&#xff1a; 2012-03-04T01:52:5100:00 heroku[web.1]: Idling 2012-03-04T01:52:5300:00 heroku[web.1]: Stopping process with SIGTERM 2012-03-04T01:…

存储限制_明年6月份开始,谷歌相册将终止免费无限存储服务

站长之家(ChinaZ.com)11月12日 消息:在提供免费服务5年后&#xff0c;谷歌对外宣布将终止提供无限容量免费照片存储服务&#xff0c;转而只提供的15GB免费存储空间&#xff0c;超过部分就需要向谷歌付费。这一变化将于2021年6月1日生效&#xff0c;这意味着如果用户上传的照片超…

下载 沙耶之歌Android_沙耶之歌安卓版apk-沙耶之歌下载手机版v1.2-飘荡下载

一款超经典的日式ADV游戏&#xff0c;游戏中有着精致的动漫风格画风&#xff0c;并且讲述了一个非常重口味但又异常纯洁的恋爱故事&#xff0c;玩家将会扮演男主进行游戏&#xff0c;超级丰富精彩的剧情等你来体验&#xff0c;并且还有着不同的剧情选项可以选择&#xff0c;能否…

Maven,Eclipse和Java 9

任何在eclipse中使用M2E&#xff08;maven-to-eclipse&#xff09;插件的人都知道您在哪里运行构建的问题&#xff0c;然后在项目上更新maven只是让它重置JRE并抛出一堆项目错误&#xff01; 我在使用Open Liberty与Java 9一起运行Java EE 8的帖子中注意到了这个问题 解决方案…

python变量持久化_Python 数据持久化:JSON

Python 数据持久化&#xff1a;JSON编程派微信号&#xff1a;codingpy淡蓝色字体可以直接点击查看上周更新的《Think Python 2e》第14章讲述了几种数据持久化的方式&#xff0c;包括dbm、pickle等&#xff0c;但是考虑到篇幅和读者等因素&#xff0c;并没有将各种方式都列全。本…

jwt配置 restful_SpringBoot实现JWT保护前后端分离RESTful API

本文将用不到100行Java代码, 教你如何在Spring Boot里面用JWT保护RESTful api.登录前登录之后即可得到正确结果登陆后1. 什么是JWT了解JWT的同学可以跳过这一部分废话少说, 我们先看看什么是JWT. JSON Web Token其实就是一个包含认证数据的JSON, 大概长这样子分三个部分,第一部…