【Eureka】服务端和客户端

转载:https://www.cnblogs.com/yangchongxing/p/10778357.html

Eureka服务端

1、添加依赖

<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>ycx</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties> <dependencies>
<!-- spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> <!-- spring cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- other -->
</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>

2、启用Eureka服务

package ycx.eureka;

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

3、配置Eureka

spring:
application:
name: eureka-server
server:
port:
eureka:
instance:
prefer-ip-address: true
client:
register-with-eureka: false
fetch-registry: false
service-url:
default-zone: http://eureka.ycx.com:8761/eureka

Eureka客户端

1、添加依赖

<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>ycx</groupId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>admin-server</artifactId>
<name>admin-server</name>
<description>sc server</description> <properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties> <dependencies>
<!-- spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- other -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</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>

2、启用服务发现,仅仅 Eureka 使用 @EnableEurekaClient,其他的服务发现代理使用 @EnableDiscoveryClient

package ycx.admin;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient
@SpringBootApplication
public class AdminServerApplication { public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
} }

3、配置服务发现

spring:
application:
name: admin-server
server:
port:
eureka:
instance:
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
default-zone: http://eureka.ycx.com:8761/eureka

配置信息,参考:https://www.cnblogs.com/tiancai/p/9593648.html

Eureka Instance配置信息
全部保存在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean配置类里,实际上它是com.netflix.appinfo.EurekaInstanceConfig的实现类,替代了netflix的com.netflix.appinfo.CloudInstanceConfig的默认实现。

appname = unknown
应用名,首先获取spring.application.name的值,如果取值为空,则取默认unknown。 appGroupName = null
应用组名 instanceEnabledOnit = false
实例注册到Eureka上是,是否立刻开启通讯。有时候应用在准备好服务之前需要一些预处理。 nonSecurePort =
非安全的端口 securePort =
安全端口 nonSecurePortEnabled = true
是否开启非安全端口通讯 securePortEnabled = false
是否开启安全端口通讯 leaseRenewalIntervalInSeconds =
实例续约间隔时间 leaseExpirationDurationInSeconds =
实例超时时间,表示最大leaseExpirationDurationInSeconds秒后没有续约,Server就认为他不可用了,随之就会将其剔除。 virtualHostName = unknown
虚拟主机名,首先获取spring.application.name的值,如果取值为空,则取默认unknown。 instanceId
注册到eureka上的唯一实例ID,不能与相同appname的其他实例重复。 secureVirtualHostName = unknown
安全虚拟主机名,首先获取spring.application.name的值,如果取值为空,则取默认unknown。 metadataMap = new HashMap();
实例元数据,可以供其他实例使用。比如spring-boot-admin在监控时,获取实例的上下文和端口。 dataCenterInfo = new MyDataCenterInfo(DataCenterInfo.Name.MyOwn);
实例部署的数据中心。如AWS、MyOwn。 ipAddress=null
实例的IP地址 statusPageUrlPath = "/actuator/info"
实例状态页相对url statusPageUrl = null
实例状态页绝对URL homePageUrlPath = "/"
实例主页相对URL homePageUrl = null
实例主页绝对URL healthCheckUrlUrlPath = "/actuator/health"
实例健康检查相对URL healthCheckUrl = null
实例健康检查绝对URL secureHealthCheckUrl = null
实例安全的健康检查绝对URL namespace = "eureka"
配置属性的命名空间(Spring Cloud中被忽略) hostname = null
主机名,不配置的时候讲根据操作系统的主机名来获取 preferIpAddress = false
是否优先使用IP地址作为主机名的标识

Eureka Client客户配置信息
配置全部在org.springframework.cloud.netflix.eureka.EurekaClientConfigBean中,实际上它是com.netflix.discovery.EurekaClientConfig的实现类,替代了netxflix的默认实现。

enabled=true
是否启用Eureka client。 registryFetchIntervalSeconds=
定时从Eureka Server拉取服务注册信息的间隔时间 instanceInfoReplicationIntervalSeconds=
定时将实例信息(如果变化了)复制到Eureka Server的间隔时间。(InstanceInfoReplicator线程) initialInstanceInfoReplicationIntervalSeconds=
首次将实例信息复制到Eureka Server的延迟时间。(InstanceInfoReplicator线程) eurekaServiceUrlPollIntervalSeconds=
拉取Eureka Server地址的间隔时间(Eureka Server有可能增减) proxyPort=null
Eureka Server的代理端口 proxyHost=null
Eureka Server的代理主机名 proxyUserName=null
Eureka Server的代理用户名 proxyPassword=null
Eureka Server的代理密码 eurekaServerReadTimeoutSeconds=
从Eureka Server读取信息的超时时间 eurekaServerConnectTimeoutSeconds=
连接Eureka Server的超时时间 backupRegistryImpl=null
Eureka Client第一次启动时获取服务注册信息的调用的回溯实现。Eureka Client启动时首次会检查有没有BackupRegistry的实现类,如果有实现类,则优先从这个实现类里获取服务注册信息。 eurekaServerTotalConnections=
Eureka client连接Eureka Server的链接总数 eurekaServerTotalConnectionsPerHost=
Eureka client连接单台Eureka Server的链接总数 eurekaServerURLContext=null
当Eureka server的列表在DNS中时,Eureka Server的上下文路径。如http://xxxx/eureka。 eurekaServerPort=null
当Eureka server的列表在DNS中时,Eureka Server的端口。 eurekaServerDNSName=null
当Eureka server的列表在DNS中时,且要通过DNSName获取Eureka Server列表时,DNS名字。 region="us-east-1"
实例所属区域。 eurekaConnectionIdleTimeoutSeconds =
Eureka Client和Eureka Server之间的Http连接的空闲超时时间。 heartbeatExecutorThreadPoolSize=
心跳(续约)执行器线程池大小。 heartbeatExecutorExponentialBackOffBound=
心跳执行器在续约过程中超时后的再次执行续约的最大延迟倍数。默认最大延迟时间= * eureka.instance.leaseRenewalIntervalInSeconds cacheRefreshExecutorThreadPoolSize=
cacheRefreshExecutord的线程池大小(获取注册信息) cacheRefreshExecutorExponentialBackOffBound=
cacheRefreshExecutord的再次执行的最大延迟倍数。默认最大延迟时间= *eureka.client.registryFetchIntervalSeconds serviceUrl= new HashMap();serviceUrl.put(DEFAULT_ZONE, DEFAULT_URL);
Eureka Server的分区地址。默认添加了一个defualtZone。也就是最常用的配置eureka.client.service-url.defaultZone=xxx registerWithEureka=true
是否注册到Eureka Server。 preferSameZoneEureka=true
是否使用相同Zone下的Eureka server。 logDeltaDiff=false
是否记录Eureka Server和Eureka Client之间注册信息的差异 disableDelta=false
是否开启增量同步注册信息。 fetchRemoteRegionsRegistry=null
获取注册服务的远程地区,以逗号隔开。 availabilityZones=new HashMap()
可用分区列表。用逗号隔开。 filterOnlyUpInstances = true
是否只拉取UP状态的实例。 fetchRegistry=true
是否拉取注册信息。 shouldUnregisterOnShutdown = true
是否在停止服务的时候向Eureka Server发起Cancel指令。 shouldEnforceRegistrationAtInit = false
是否在初始化过程中注册服务。

Eureka Server注册中心配置信息
Eureka Server注册中心端的配置是对注册中心的特性配置。Eureka Server的配置全部在org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean里,实际上它是com.netflix.eureka.EurekaServerConfig的实现类,替代了netflix的默认实现。

enableSelfPreservation=true
是否开启自我保护 renewalPercentThreshold = 0.85
自我保护续约百分比阀值因子。如果实际续约数小于续约数阀值,则开启自我保护 renewalThresholdUpdateIntervalMs = * *
续约数阀值更新频率。 peerEurekaNodesUpdateIntervalMs = * *
Eureka Server节点更新频率。 enableReplicatedRequestCompression = false
是否启用复制请求压缩。 waitTimeInMsWhenSyncEmpty= * *
当从其他节点同步实例信息为空时等待的时间。 peerNodeConnectTimeoutMs=
节点间连接的超时时间。 peerNodeReadTimeoutMs=
节点间读取信息的超时时间。 peerNodeTotalConnections=
节点间连接总数。 peerNodeTotalConnectionsPerHost = ;
单个节点间连接总数。 peerNodeConnectionIdleTimeoutSeconds = ;
节点间连接空闲超时时间。 retentionTimeInMSInDeltaQueue = * MINUTES;
增量队列的缓存时间。 deltaRetentionTimerIntervalInMs = * ;
清理增量队列中过期的频率。 evictionIntervalTimerInMs = * ;
剔除任务频率。 responseCacheAutoExpirationInSeconds = ;
注册列表缓存超时时间(当注册列表没有变化时) responseCacheUpdateIntervalMs = * ;
注册列表缓存更新频率。 useReadOnlyResponseCache = true;
是否开启注册列表的二级缓存。 disableDelta=false。
是否为client提供增量信息。 maxThreadsForStatusReplication = ;
状态同步的最大线程数。 maxElementsInStatusReplicationPool = ;
状态同步队列的最大容量。 syncWhenTimestampDiffers = true;
当时间差异时是否同步。 registrySyncRetries = ;
注册信息同步重试次数。 registrySyncRetryWaitMs = * ;
注册信息同步重试期间的时间间隔。 maxElementsInPeerReplicationPool = ;
节点间同步事件的最大容量。 minThreadsForPeerReplication = ;
节点间同步的最小线程数。 maxThreadsForPeerReplication = ;
节点间同步的最大线程数。 maxTimeForReplication = ;
节点间同步的最大时间,单位为毫秒。 disableDeltaForRemoteRegions = false;
是否启用远程区域增量。 remoteRegionConnectTimeoutMs = ;
远程区域连接超时时间。 remoteRegionReadTimeoutMs = ;
远程区域读取超时时间。 remoteRegionTotalConnections = ;
远程区域最大连接数 remoteRegionTotalConnectionsPerHost = ;
远程区域单机连接数 remoteRegionConnectionIdleTimeoutSeconds = ;
远程区域连接空闲超时时间。 remoteRegionRegistryFetchInterval = ;
远程区域注册信息拉取频率。 remoteRegionFetchThreadPoolSize = ;
远程区域注册信息线程数。

Eureka Server注册中心仪表盘配置

path="/"
仪表盘访问路径 enabled=true
是否启用仪表盘

【Eureka】服务端和客户端的更多相关文章

  1. eureka服务端和客户端的简单搭建

    本篇博客简单记录一下,eureka 服务端和 客户端的简单搭建. 目标: 1.完成单机 eureka server 和 eureka client 的搭建. 2.完成eureka server 的添加 ...

  2. SpringCloud02 Eureka知识点、Eureka服务端和客户端的创建、Eureka服务端集群、Eureka客户端向集群的Eureka服务端注册

    1 Eureka知识点 按照功能划分: Eureka由Eureka服务端和Eureka客户端组成 按照角色划分: Eureka由Eureka Server.Service Provider.Servi ...

  3. 三、eureka服务端获取服务列表

    所有文章 https://www.cnblogs.com/lay2017/p/11908715.html 正文 eureka服务端维护了一个服务信息的列表,服务端节点之间相互复制服务信息.而作为eur ...

  4. Spring Eureka的使用入门--服务端与客户端

    接上篇: Eureka作为注册中心,连接服务端与客户端: 服务端: 依赖包: apply plugin: 'org.springframework.boot' apply plugin: 'io.sp ...

  5. spring cloud eureka 服务端开启密码认证后,客户端无法接入问题

    Eureka服务端开启密码的认证比较简单 在pom文件中加入: <dependency> <groupId>org.springframework.boot</group ...

  6. Spring Cloud官方文档中文版-服务发现:Eureka服务端

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server 文中例子我做了一些 ...

  7. SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端、Eureka 服务信息、Eureka 发现管理、Eureka 安全配置、Eureka-HA(高可用) 机制、Eureka 服务打包部署)

    1.概念:Eureka 服务发现框架 2.具体内容 对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操 ...

  8. springcloud(三):Eureka服务端

    一. 因为使用一个注册中心服务器端,n个客户端:n个生产者客户端.n消费者客户端....,所有的客户端最好的方式就是通过对象传递参数,因此需要创建一个公共组件项目,为n个客户端传值提供方便 二.创建公 ...

  9. Eureka 客户端连接Eureka服务端时 报Cannot execute request on any known server 解决办法

    报Cannot execute request on any known server 这个错,总的来说就是连接Eureka服务端地址不对. 因为配置eureka.client.serviceUrl. ...

随机推荐

  1. Python3.7.1学习(二)使用schedule模块定时执行任务

    python中有一个轻量级的定时任务调度的库:schedule.他可以完成每分钟,每小时,每天,周几,特定日期的定时任务.因此十分方便我们执行一些轻量级的定时任务. 1 安装  1.1在cmd中输入p ...

  2. Github相关知识

    github的提交流程 mkdir 目录名      :创建一个空文件夹 mkdir webs webs代表创建的新文件名称 cd 目录名   :切换到文件夹 cd webs 切换到当前新建的目录下 ...

  3. CentOS 7安装图形界面步骤和问题解决方法

    CentOS 7图形安装步骤: 首先需要进行必要的图形组件安装--命令为: yum groupinstall "X Window System " yum groupinstall ...

  4. 分析facebook的AsyncDisplayKit框架中的Transaction的工作原理

    在AsyncDisplayKit框架中有一个_ASAsyncTransaction模块,用于AsyncDiplayNode的异步事务,使用了dispatch_group实现. 主要目的是将operat ...

  5. 2019-11-19:xxe漏洞利用,笔记

    xxe,也就是xml,外部实体注入攻击,漏洞是对非安全的外部实体数据进行处理时引发的安全问题,要了解xxe,就必须懂得xml的一些规则xml是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据 ...

  6. Dart Learn Notes 01

    关于Dart的几点重要说明 在Dart中所有变量都是一个对象,所有对象都是一个类的实例.每个数字,方法,甚至是Null都是对象.所有的对吸纳更都是集成自Object这个类.(这个说法其实是很像Java ...

  7. SpringAOP之使用切入点创建通知

    之前已经说过了SpringAOP中的几种通知类型以及如何创建简单的通知见地址 一.什么是切入点 通过之前的例子中,我们可以创建ProxyFactory的方式来创建通知,然后获取目标类中的方法.通过不同 ...

  8. day20191010ClassNotes

    笔记: 1.DAO模式组成部分: 程序 ----> 数据库 实体类 数据库中的表 工具类:公共的数据库连接.关闭.公共的增删改.查询 接口 : 程序提倡的是面向接口编程,从而降低程序的耦合性 实 ...

  9. Spring(Bean)3

    bean的继承<!-- bean 的继承 作为模板来使用. 可以通过abstract="true"来指定把该bean配置为·抽象的. 通过abstract="tru ...

  10. 【Android - 控件】之MD - NavigationView的使用

    NavigationView是Android 5.0新特性——Material Design中的一个布局控件,可以结合DrawerLayout使用,让侧滑菜单变得更加美观(可以添加头部布局). Nav ...