eureka 其它语言_SpringCloud之Eureka-Go语言中文社区

一、使用方法:

1、添加maven依赖

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

版本一般交由spring-cloud-dependencies管理。注意这个依赖的artifactId在Edgware以前是spring-cloud-starter-eureka-server,而在之后变成了spring-cloud-starter-netflix-eureka-server。其他组件也是类似。

2、在启动类中加入注解@EnableEurekaServer

@SpringBootApplication

@EnableEurekaServer

public class EurekaCenter {

public static void main(String[] args) {

SpringApplication.run(EurekaCenter.class, args);

}

}

二、属性优化:

1. 关于eureka的配置

大致分为eureka.instance, eureka.clinet,eureka.server三大类。大部分的参数都可以不管,有默认值。需要时查一下就可以了。下面列出几个比较有用的参数

eureka.client.registerWithEureka

表示是否将自己注册到Eureka Server,默认为true。由于当前应用就是Eureka Server,所以不需要注册,修改为false。

eureka.client.fetchRegistry

表示是否从Eureak Server获取注册信息,默认为true。由于示例中是单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,所以修改为false。

eureka.client.serviceUrl.defaultZone

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

另外,可以给eureka的监控页面增加简单的权限验证security.basic.enabled=true

security.user.name=admin

security.user.password=123

Eureka的其他配置属性可在spring-cloud-netflix-eureka-client的jar包中META-INF目录下寻找spring-configuration-metadata.json文件中有详细描述。这是starter组件的开发流程,其他组件的配置信息也有类似的描述文件。

2. 关于eureka注册中心的自我保护模式

关于自我保护模式,最直观的体现是进入eureka的监控页面时,页面上出现红色的警告信息

默认情况下,Eureka Server在一定时间内没有接收到某个微服务的心跳,Eureka Server就会注销该实例(默认90秒,可以通过参数自行配置)。这本是正常的微服务治理机制,但是如果问题的原因只是因为网络分区故障而发生时,就会出现比较不好的结果。即服务本身其实是健康的,但是Eureka Server却把他注销掉了。

为了防止这种情况,Eureka Server采用了自我保护模式。即当服务失联后,会继续保存该服务的注册信息-不会分配请求。而当网络故障恢复后,该服务就会退出自我保护模式,重新分配请求。

而在SpringCloud中,可以通过配置参数

eureka.server.enable-self-preservation= false

来禁用自我保护模式

另外,对于自我保护模式下的服务,可以通过手动访问接口方式进行管理,即手动下线已经失效的微服务。具体方式可以访问Eureka Server的REST接口,例如下线服务只需要给如下地址发送DELETE请求(可以用POSTMAN等工具发送)

http://${Eureka_URL}:${Eureka_port}/eureka/apps/${AppName}/${instance}

其中,AppName和{AppName}和AppName和{instance}就是在页面上看到的服务节点。

3. Eureka的高可用配置

Eureka通过多个节点相互注册的方式来实现集群高可用。

为了在单机模拟HA配置方式,可以采用在单机监听两个不同端口的方式启动更多个实例。

使用yml文件配置方式如下:

---

server:

port: 8001

spring:

profiles: server1

application:

name: eureka-ha

eureka:

instance:

hostname: server1

client:

serviceUrl:

defaultZone: http://server2:8002/eureka/

---

server:

port: 8002

spring:

profiles: server2

application:

name: eureka-ha

eureka:

instance:

hostname: server2

client:

serviceUrl:

defaultZone: http://server1:8001/eureka/

然后使用指令启动两个实例:

java -jar ./eurekaCenter-0.0.1-SNAPSHOT.jar --spring.profiles.active=server1

java -jar ./eurekaCenter-0.0.1-SNAPSHOT.jar --spring.profiles.active=server2

启动两个实例后可以访问server1:8001和server2:8002页面,可以看到两个实例完成了相互注册。

4.Eureka跨机房灾备

Eureka通过增加region和zone的定义可以快速时间跨机房灾备(region和zone的概念均来自于亚马逊的AWS)

一般region概念指代区域,如亚洲地区、华北地区、北京等。而zone概念指代具体机房。

灾备原则是一个机房内的Consumer优先调用同机房的Service,当同一机房的service或者eureka不可用时,再去调用其他机房的服务。

1、Eureka分区服务配置

eureka.client.prefer-same-zone-eureka=true

eureka.client.region=beijing

eureka.client.availability-zones.beijing=zone1,zone2

eureka.client.serviceUrl.zone1=http://localhost:9002/eureka

eureka.client.serviceUrl.zone2=http://localhost:9003/eureka

注册中心选择逻辑:

如果prefer-same-zone-eureka为false,按照service-url下的 list取第一个注册中心来注册,并和其维持心跳检测。不会再向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的情况下,才会依次向其它的注册中心注册,总共重试3次,如果3个service-url都没有注册成功,则注册失败。每隔一个心跳时间,会再次尝试。

如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,然后通过这个zone取service-url下的list,并向list内的第一个注册中心进行注册和维持心跳,不会再向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的情况下,才会依次向其它的注册中心注册,总共重试3次,如果3个service-url都没有注册成功,则注册失败。每隔一个心跳时间,会再次尝试。

所以说,为了保证服务注册到同一个zone的注册中心,一定要注意availability-zones的顺序,必须把同一zone写在前面

2、对于服务调用者和服务提供者,都是通过eureka.instance.metadata-map.zone来设置属于哪个zone

服务消费者会先通过ribbon去注册中心拉取一份服务提供者的列表,然后通过eureka.instance.metadata-map.zone指定的zone进行过滤,过滤之后如果同一个zone内的服务提供者有多个实例,则会轮流调用。

只有在同一个zone内的所有服务提供者都不可用时,才会调用其它zone内的服务提供者。

3、扩展配置

eureka.instance.lease-renewal-interval-in-seconds: 30

服务和注册中心的心跳间隔时间,默认为30s

eureka.instance.lease-expiration-duration-in-seconds: 90

服务和注册中心的心跳超时时间,默认为90s

三、Eureka与Zookeeper

Dubbo使用Zookeeper作为注册中心,而SpringCloud使用Eureka作为注册中心。两者作为服务中心,在单点使用时差别不大,但是在作为集群服务时有些区别。

1、以CAP理论,zookeeper是保证CP的,而Eureka是保证AP的。即在集群面临各种宕机、网络波动等分布式问题时,前者更偏向保证数据一致,而后者更偏向保证服务可用。

2、集群方式:zookeeper集群需要以选举算法保证集群中有一个唯一的leader,这样,集群在选举过程中,容易导致短暂服务不可用。而Eureka集群的方式则是简单的互相注册,即把当前Eureka节点也作为一个服务,向其他Eureka节点进行注册。这样当有节点宕机后,直接用另外一些节点提供服务即可。但是这时,就存在节点之间数据同步没有完成的问题。这个集群方式也是两者CP与AP之争的根本。

3、Eureka的自我保护机制也是别人说Eureka更适合做服务中心的特点之一。

个人观点,如果不是云环境,用哪个随缘把。

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

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

相关文章

操作系统:Win10系统下LocalNow和Roaming文件夹介绍

Win10操作系统下AppData文件夹包括以下子文件夹 - 漫游,本地和本地。 几乎每个在Win10 PC上安装的程序都会在AppData文件夹中创建自己的文件夹,并将其所有相关信息存储在其中。AppData或应用程序数据是Windows 10中的一个隐藏文件夹,可帮助保…

c语言des算法实验报告,C语言实现DES算法实验报告解析.doc

C语言实现DES算法实验报告解析xx工程大学实验报告(2015-2016学年第一学期)报告题目: DES加密算法课程名称: 密码学B任课教员:专 业:学 号:姓 名:二O一六年一月十八日一、课程概述目的:培养学员的…

[noip2010]关押罪犯 并查集

第一次看的时候想到了并查集&#xff0c;但是不知道怎么实现&#xff1b; 标解&#xff0c;f[i]表示i所属的集合&#xff0c;用f[in]表示i所属集合的补集&#xff0c;实现的很巧妙&#xff0c;可以当成一个使用并查集的巧妙应用&#xff1b; 1 #include<iostream>2 #incl…

jvm什么是本地方法

一&#xff1a;什么是本地方法 二&#xff1a;举例 三&#xff1a;为什么要使用Native Method

SQLServer:用户自定义数据类型用法

今天给大家梳理一下SQLServer:用户自定义数据类型用法&#xff0c;希望对大家能有所帮助&#xff01;1、基于基本数据类型创建的别名数据类型-- 创建生日的数据类型 CREATE TYPE birthday FROM datetime NULL; -- 创建用户表 CREATE TABLE userInfo (id varchar(32), userNam…

python fsolve说明_Python fsolve()抱怨形状.为什么?

具有函数f(x,y,z),我需要解决限制f(x,y,z) 0然后绘制它.我试图为每对(y,z)找到f(x,y,z) 0的值x&#xff1a;from numpy import *from scipy.optimize import fsolvedef func(x,y,z):return xyzy linspace(0,1,100)z linspace(0,1,100)x0 zeros((y.size,z.size)) 0.5 # the …

C语言实现与功能的程序,用C语言实现Ping程序功能

2001 年 10 月 01 日大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中&#xff0c;作者将介绍如何用C语言编写一个模拟ping命令功能的程序。ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理…

数据库知识:SQLServer变量相关知识介绍

今天给大家分享SQLServer变量相关介绍&#xff0c;希望对大家能有所帮助&#xff01;1、概述SQLServer变量对应内存中的一个存储空间。它和常量不同&#xff0c;变量的值可以在执行过程中改变。2、分类SQLServer变量根据作用范围不同主要分为局部变量和全局变量。2.1.局部变量局…

oauth基本流程和原理

组装loginurl-》去第三方登录验证-》回调callbackurlcode&#xff08;票据&#xff09;-》本地根据codeappidappkey组装url隐式curl获取用户信息-》完成登录。 之所以要用callbackurl的形式是因为不能让用户在你本地输入账号密码防止被盗号。 之所以不在callbackurl的时候&…

halcon轮廓擦除_halcon第十二讲,毛刺去除

在视觉测量中我们很会被毛刺问题困扰&#xff0c;产生干扰的因素很多&#xff0c;有打光问题和产品本生带毛刺&#xff0c;接下来给兄弟们带来两种去毛刺的方法。第一种read_image (Image1323153Ba0b96cf52f88f1, 1)rgb1_to_gray (Image1323153Ba0b96cf52f88f1, GrayImage)lapl…

c语言双循环计算n的阶乘,用C语言用循环实现N的阶乘

匿名用户1级2014-03-04 回答不要用数组&#xff0c;用vector来实现相应的功能&#xff0c;我给你写个大概的框架&#xff0c;你向里面添加就好了1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include …

存储知识:U盘的实际容量要比标注容量小,你知道原因吗?

用过U盘的朋友一定都会知道&#xff0c;U盘的实际容量往往是达不到它标注的容量。比如一个16G的U盘&#xff0c;其实际容量一般只有14.7G左右。今天本文会给大家解释其中的原因。 原因一&#xff1a;计算容量方法不同 存储设备制造商为了计算方便&#xff0c;采用十进制计算方法…

CentOS 7 防止端口自动关闭

tl;dr firewall-cmd --permanent --zonepublic --add-port2888/tcp firewall-cmd --reload #重新载入服务 永久配置firewalld开启端口。 之前的一些坑 之前的一篇文章CentOS 7部署Node.jsMongoDB&#xff1a;在VPS上从安装到Hello world中&#xff0c;讲到了CentOS开启端口用这…

jio文件 久其_功能强大的Windows文件管理器工具

Windows文件管理功能体验只能说中规中矩&#xff0c;批量处理文件时非常的慢&#xff0c;而且在模糊搜索文件时的速度以及资源占用实在是感人&#xff0c;再加上功能较少&#xff0c;只能实现重命名、复制、粘贴、剪切这些基础功能&#xff0c;因此想要提高文件之间处理效果通常…

C语言补丁原理,C语言可变长參数实现原理

(1) C语言可变參数我们能够从C语言的printf得出可变參数的作用。printf函数的原型例如以下&#xff1a;int printf ( const char * format, ... );通过使用可变个数參数&#xff0c;就是传入的參数个数是可变的&#xff0c;如printf须要依据format实參传入多个实參。(2) …

办公技巧:各类特殊符号输入快捷键,瞬间提高你的办公效率

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

前端构建工具的用法—grunt、gulp、browserify、webpack

随着前端项目的飞速发展&#xff0c;项目越来越大、文件越来越多&#xff0c;前端工程化的工具也越来越多。下面介绍目前最流行的四种构建工具——grunt、gulp、browserify、webpack 所有的构建工具都是基于NodeJs和Npm&#xff0c;所以使用下面任何工具都需要安装Node 一、gru…

adb命令刷机vivox20_vivo手机变砖 刷机手机端口连上显示adb

展开全部vivo的刷机解账户锁方法如下 有了这个方法 以后不管手机出现啥毛病 只要是软件系统引32313133353236313431303231363533e4b893e5b19e31333365643535起的故障 都能一招搞定提示&#xff1a;刷机有风险 刷机需谨慎 对于刷机造成的一切后果均与本处无关 而避免风险的最好…