创建eureka注册中心_微服务注册中心和网关

创建eureka注册中心_微服务注册中心和网关目录关于SpringCloud版本单机模式Eureka注册中心搭建引入Eureka-Server依赖创建启动类添加配置高可用Eureka注册中心搭建双节点注册中心修改配置文件修改hosts文件启动测试多节点注册中心修改配置文件启动测试常见问题参考文章SpringCloud是一系列框架的集合,它利用SpringBoot的开发便利性巧…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

关于SpringCloud版本

单机模式Eureka注册中心搭建

引入Eureka-Server依赖

创建启动类

添加配置

高可用Eureka注册中心搭建

双节点注册中心

修改配置文件

修改hosts文件

启动测试

多节点注册中心

修改配置文件

启动测试

常见问题

参考文章


Spring Cloud是一系列框架的集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,构建了服务治理(服务注册与发现)、配置中心、消息总线、负载均衡、断路器、数据监控、分布式会话和集群状态管理等功能,为我们提供一整套企业级分布式云应用的完美解决方案。

Spring Cloud的服务治理等核心功能主要是通过Spring Cloud Netflix的相关产品来实现,包括:服务发现(Eureka)、断路器(Hystrix)、智能路由(Zuul)和客户端负载均衡(Ribbon)。

本文主要对如何使用Eureka搭建服务注册中心进行介绍,我们先从最简单的单机模式Eureka服务器搭建开始。

关于SpringCloud版本

由于Spring Cloud是诸多子项目集合的综合项目,原则上由其子项目维护自己的发布版本号,也就是我们常用的版本号,如:1.2.3.RELEASE、1.1.4.RELEASE等。因此Spring Cloud为了避免版本号与其子项目的版本号混淆,所以没有采用版本号的方式,而是采用命名的方式。这些版本名称采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序。比如,最早的Release版本名称为Angel,第二个Release版本的名称为Brixton,以此类推……。而我们在本系列文章所使用的版本名称为:Finchley.SR2,也就是目前的最新版本,其中的SR是service releases的简写,而1则是该版本名称中的第1个版本。其对应的Springboot版本为2.0.6.RELEASE。

关于更多版本的介绍,请参考官网:http://spring.io/projects/spring-cloud

单机模式Eureka注册中心搭建

引入Eureka-Server依赖

新建一个 Maven 工程,并在其 pom.xml 文件中引入依赖,内容如下:

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.6.RELEASE</version>
	</parent>

	<properties>
		<spring-cloud.version>Finchley.SR2</spring-cloud.version>
	</properties>

	<dependencies>
		<!-- Eureka-Server 依赖 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<!-- SpringCloud 版本控制依赖 -->
			<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>

创建启动类

import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

	public static void main(String[] args) {
		new SpringApplicationBuilder(EurekaServerApplication.class).web(WebApplicationType.SERVLET).run(args);
	}
}

添加配置

默认情况下,每一个Eureka服务端同时也是Eureka客户端,你需要为它提供(至少一个)service-url 让它用来定位它的同类(其他Eureka服务端),如果你一个service-url 都不提供,服务虽然能够运行并且正常工作,但是它会在你的日志文件中插入很多由于它不能成功注册到同类而生成的噪音日志。 在集群模式下,两个Eureka(一个服务端和一个客户端)通过注册表合并和心跳监控能够让一个独立的Eureka服务端从故障中完美复活(只要还有监控或者弹性运行环境使它保持存活)。在单机模式,我们需要关闭Eureka的这些客户端行为,这样的话它就不会再不停地去尝试连接它的同类并不停地失败了。

在 Springboot的核心配置文件 application.yml 中加入如下配置来关闭Eureka的客户端行为:

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

 其中fetch-registry和register-with-eureka两个配置用来关闭Eureka的客户端行为。

fetch-registry:表示是否从eureka server获取注册表信息,如果是单一节点,不需要同步其他eureka server节点,则可以设置为false;若是集群,则设置为true,默认为true。

register-with-eureka:表示是否将自己注册到eureka server,默认为true。

高可用Eureka注册中心搭建

由于Eureka服务端没有后台存储,但是所有的服务实例都需要不断地向Eureka服务端发送心跳来更新它们在注册表中的状态,所以,这一系列的功能只能在内存中完成的。同时,每一个Eureka客户端都有一个内存缓存存储了Eureka的注册表信息,对服务的请求可以直接从缓存的注册表中获取,并不需要每一次都到Eureka注册表中去获取。

你可以添加多个同类Eureka实例到你的系统中,只要它们彼此之间能够相互连接,它们就能够在彼此之间进行注册表同步,这能够让Eureka具有更高的弹性和可用性。事实上,这也是Eureka的默认行为,所以你唯一要做的就是配置一个有效的同类serviceUrl 来使它生效。

双节点注册中心

修改配置文件

修改上例中的application.yml文件,内容如下:

---
server:
  port: 8761
spring:
  profiles: peer1
  application:
    name: eureka-server
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/
  
---
server:
  port: 8762
spring:
  profiles: peer2
  application:
    name: eureka-server
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/

有了这个YAML文件,我们就能够在一台服务器上通过在启动时指定不同的Spring profile来模拟启动两个主机(peer1和peer2)了。事实上,如果你是在一个知晓自己主机名(默认主机是通过java.net.InetAddress 进行查找)的服务器上运行程序,eureka.instance.hostname 配置项并不是必须的。

修改hosts文件

在hosts文件中加入如下配置:

# Windows:C:\Windows\System32\drivers\etc\hosts
# Linux:/etc/hosts

127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3

启动测试

右键–>Run As –> Run Configurations…,分别以peer1和peeer2 配置信息启动EurekaServerApplication。

--spring.profiles.active=peer1
--spring.profiles.active=peer2

创建eureka注册中心_微服务注册中心和网关

 依次启动完成后,浏览器输入:http://peer1:8761/ 效果图如下:

创建eureka注册中心_微服务注册中心和网关

多节点注册中心

修改配置文件

在生产中我们可能需要三台或者大于三台的注册中心来保证服务的稳定性,配置的原理其实都一样,将注册中心分别指向其它的注册中心。这里只介绍三台集群的配置情况,其实和双节点的注册中心类似,修改上例中的application.yml文件,再添加一个 profiles 配置,内容如下:

---
server:
  port: 8761
spring:
  profiles: peer1
  application:
    name: eureka-server
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/,http://peer3:8763/eureka/
  
---
server:
  port: 8762
spring:
  profiles: peer2
  application:
    name: eureka-server
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer3:8763/eureka/
          
---
server:
  port: 8763
spring:
  profiles: peer3
  application:
    name: eureka-server
eureka:
  instance:
    hostname: peer3
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/

启动测试

分别加载三个profiles的配置启动EurekaServerApplication。

创建eureka注册中心_微服务注册中心和网关

常见问题

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

出现原因:默认情况下,为了防止由于网络问题而造成的已经正常启动的Eureka实例无法成功注册,Eureka会开启自我保护模式,这样即使Eureka实例续约失败也不会从可用列表中被剔除,可继续从注册表中返回并对外提供服务。

解决办法:关闭自我保护模式,将配置 eureka.server.enable-self-preservation 设置为 false 。关闭自我保护之后,提示信息将变为如下内容:

THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.

参考文章

https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.0.2.RELEASE/single/spring-cloud-netflix.html

https://www.jianshu.com/p/d32ae141f680

http://spring.io/projects/spring-cloud

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171875.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 211高校导师解散微信群直言:和你们没感情,江湖不见!校方回应

    211高校导师解散微信群直言:和你们没感情,江湖不见!校方回应来源丨爆炸吧知识近日,哈尔滨工程大学一教授把他指导的63名学生的微信群就地解散了,解散群之前,他还在群里表示“和你们没有感情,永远不想和你们打交道,也不要找我问学科问题,江湖不见”。随后,…

    2022年5月19日
    63
  • windows update error 0x8024401c

    windows update error 0x8024401cError0x8024401c以系統管理員身分執行命令提示字元,然後執行下列三行指令:netstopwuauservregdeleteHKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdatenetstartwuauserv操作如下:C:\Windows\system32&gt;netstop…

    2022年4月27日
    56
  • 利用HashSet给list去重[通俗易懂]

    利用HashSet给list去重[通俗易懂]如果有一个string的list要去重,那么可以用以下代码:List<String>orgIds=……..//orgIds即可能存在重复数据的String的集合//利用HashSet去重Set<String>set=newHashSet<String>(orgIds);orgIds=newArrayList<String…

    2022年5月25日
    73
  • Hadoop之hdfs体系结构

    Hadoop之hdfs体系结构4.HDFS的体系结构4.1体系结构解析HDFS采用的是hostname01/slaves这种主从的结构模型来管理数据,这种结构模型主要由四个部分组成,分别是Client(客户端)、Namenode(名称节点)、Datanode(数据节点)和SecondaryNameNode。真正的一个HDFS集群包括一个Namenode和若干数目的Datanode。Namenode是一个中心服务器,…

    2022年5月28日
    37
  • pagecontext request session_pagecontent

    pagecontext request session_pagecontent ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于&lt;%=request.getContextPath()%&gt; 。 也就是取出部署的应用程序名或者是当前的项目名称 比如我的项目名称是demo1在浏览器中输入为http://localhost:8080/demo1/a.jsp${pageContext.request.co…

    2025年12月14日
    6
  • pycharm使用远程python虚拟环境_pycharm自带python吗

    pycharm使用远程python虚拟环境_pycharm自带python吗虽然pycharm很耗内存,但这依然阻挡不了它灰常好用的优势,电脑配置不够的话建议选择19年的pycharm版本,16G的内存带2021.2.1运行起来是这样:首先确定pycharm用的是专业版,社区版不提供远程服务的功能。1.配置远程服务器信息并测试菜单栏Tools—->Deployment—->Configuration显示如下界面:新建一个连接,协议类型选择SFTP,不要选其他两种,其他两种实现的功能不一样,并且一般服务器上也不会开放21端口,SFTP使用的是

    2022年8月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号