- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringCloud Eureka实现服务注册与发现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
前言 。
eureka是一种基于rest(具像状态传输)的服务,主要用于aws云中定位服务,以实现中间层服务器的负载平衡和故障转移。本文记录一个简单的服务注册与发现实例.
github地址:https://github.com/netflix/eureka 。
官网文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.rc2/single/spring-cloud-netflix.html 。
eureka-server 。
服务注册中心 。
新建一个maven项目,并删除src文件夹,保留pom.xml,作为parent,当然也可以不用 。
在parent里面新建一个springboot项目的module,eureka server 。
项目结构 。
maven引入jar 。
parent的 pom.xml 。
是为了统一版本 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<?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>
<groupid>cn.huanzi.qch</groupid>
<artifactid>parent</artifactid>
<version>
1.0
.
0
</version>
<packaging>pom</packaging>
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>
2.1
.
1
.release</version>
<relativepath/> <!-- lookup parent from repository -->
</parent>
<!-- 保留parent的pom.xml,统一jar的版本 -->
<properties>
<source.encoding>utf-
8
</source.encoding>
<java.version>
1.8
</java.version>
<!-- 文件拷贝时的编码 -->
<project.build.sourceencoding>utf-
8
</project.build.sourceencoding>
<project.reporting.outputencoding>utf-
8
</project.reporting.outputencoding>
<!-- 编译时的编码 -->
<maven.compiler.encoding>utf-
8
</maven.compiler.encoding>
<mysql-connector-java.version>
5.1
.
34
</mysql-connector-java.version>
<!-- activiti -->
<activiti.version>
5.22
</activiti.version>
<spring-boot.version>
1.4
.
7
.release</spring-boot.version>
<!-- jasig cas -->
<cas.server.version>
3.4
.
3.1
</cas.server.version>
<cas.client.version>
3.1
.
12
</cas.client.version>
<!-- maven plugin -->
<maven-source-plugin.version>
2.0
.
3
</maven-source-plugin.version>
<maven-compiler-plugin.version>
2.3
.
2
</maven-compiler-plugin.version>
<maven-assembly-plugin.version>
2.2
.
1
</maven-assembly-plugin.version>
<maven-deploy-plugin.version>
2.4
</maven-deploy-plugin.version>
<maven-war-plugin.version>
2.1
.
1
</maven-war-plugin.version>
<maven-jar-plugin.version>
2.3
.
2
</maven-jar-plugin.version>
<spring-cloud.version>greenwich.rc1</spring-cloud.version>
</properties>
<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>
<repositories>
<repository>
<id>spring-milestones</id>
<name>spring milestones</name>
<url>https:
//repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
|
eureka-server的 pom.xml 。
继承parent 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<?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>
<groupid>cn.huanzi.qch.eureka</groupid>
<artifactid>eureka-server</artifactid>
<version>
0.0
.
1
-snapshot</version>
<name>eureka-server</name>
<description>eureka 注册中心</description>
<!--继承信息-->
<parent>
<groupid>cn.huanzi.qch</groupid>
<artifactid>parent</artifactid>
<version>
1.0
.
0
</version>
</parent>
<dependencies>
<!-- eureka-server -->
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-netflix-eureka-server</artifactid>
</dependency>
<!-- spring boot -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 构建工具 -->
<build>
<plugins>
<plugin>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-maven-plugin</artifactid>
</plugin>
</plugins>
</build>
</project>
|
配置文件 。
1
2
3
4
|
server.port=
1111
eureka.client.register-with-eureka=
false
eureka.client.fetch-registry=
false
eureka.client.serviceurl.defaultzone=http:
//localhost:${server.port}/eureka/
|
启动类 。
1
2
3
4
5
6
7
8
9
10
|
@enableeurekaserver
@springbootapplication
public
class
eurekaserverapplication {
public
static
void
main(string[] args) {
springapplication.run(eurekaserverapplication.
class
, args);
}
}
|
启动应用,访问 http://localhost:1111/,注册中心启动成功,此时有0个服务 。
eureka-client 。
服务发现,可以新建一个springboot项目,我们直接使用之前写的一个myspringboot项目 。
maven中引入相关jar 。
1
2
3
4
5
|
<!-- eureka-client -->
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>
</dependency>
|
如果没有repositories还需要加入 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<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>
<repositories>
<repository>
<id>spring-milestones</id>
<name>spring milestones</name>
<url>https:
//repo.spring.io/milestone</url>
</repository>
</repositories>
|
配置文件加入注册中心的地址,也就是eureka-server的配置文件里面eureka.client.serviceurl.defaultzone 。
1
2
|
#eureka
eureka.client.serviceurl.defaultzone=http:
//localhost:1111/eureka/
|
启动类添加注解 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@enableeurekaclient
@springbootapplication
@restcontroller
public
class
myspringbootapplication{
public
static
void
main(string[] args) {
springapplication.run(myspringbootapplication.
class
, args);
}
/**
* 访问首页
*/
@getmapping
(
"/index"
)
public
string index(){
return
"hello springboot!"
;
}
}
|
启动客户端服务 。
成功在注册中心注册成功,可以对外提供服务 。
健康检查 。
默认情况下,eureka使用客户端心跳来确定客户端是否启动。除非另有说明,否则发现客户机不会根据spring引导执行器传播应用程序的当前健康检查状态。因此,在成功注册后,eureka总是宣布应用程序处于“up”状态。可以通过启用eureka健康检查来更改此行为,比如我现在将myspringboot服务停掉,但注册中心依旧显示为up,这样就会造成我服务已经挂掉了,但注册中心依然会认为这个实例还活着.
eureka-client 。
1
2
3
4
5
6
|
#健康检查(需要spring-boot-starter-actuator依赖)
eureka.client.healthcheck.enabled=
true
# 续约更新时间间隔(单位秒,默认
30
秒)
eureka.instance.lease-renewal-interval-in-seconds=
10
# 续约到期时间(单位秒,默认
90
秒)
eureka.instance.lease-expiration-duration-in-seconds=
10
|
1
2
3
4
5
|
<!-- actuator -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-actuator</artifactid>
</dependency>
|
eureka-server 。
1
2
3
4
|
#设为
false
,关闭自我保护
eureka.server.enable-self-preservation=
false
#清理间隔(单位毫秒,默认是
60
*
1000
)
eureka.server.eviction-interval-timer-in-ms=
10000
|
健康检查,注册中心将死去的服务剔除 。
总结 。
eureka-server 。
1、引入的是spring-cloud-starter-netflix-eureka-server,使用的是@enableeurekaserver 。
eureka-client 。
1、引入的是spring-cloud-starter-netflix-eureka-client,使用的是@enableeurekaclient 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://www.cnblogs.com/huanzi-qch/p/10131985.html 。
最后此篇关于SpringCloud Eureka实现服务注册与发现的文章就讲到这里了,如果你想了解更多关于SpringCloud Eureka实现服务注册与发现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个问题,想知道如何在已经使用常规登录/注册系统的网站上集成第 3 方登录(也进行静默注册)。 基本上当前登录还是比较规律的: 当用户进入网站 session 时类(class)决定他是否需要重新
我在学习 Hyperledger Fabric 并运行示例代码。 我仍在尝试正确了解事情的运作方式,尤其是在使用证书和加密 Material 的用户/管理员注册和注册中。 我想知道以下如何工作。 1)
我正在尝试使用从我的 Android 设备的 PassWallet 应用程序中保存的票证中获取的 token 向我的设备发送消息。 设备发送使用苹果钱包规范更新通行证所需的所有信息。但是,我正在使用
使用 Passport 本地示例,我可以登录工作。没有关于如何注册用户的文档。 我想为用户提供一个“电子邮件”和“密码”字段,他们可以使用它们来注册该网站。我怎样才能做到这一点?有什么原因没有记录下来
在之前的一些 WSO2IS 版本中,有一个默认的 self 注册功能。但是,我在 5.0 版本中找不到它。 阅读 WSO2IS 5.0 文档,我发现有 2 个用于此功能的 API: getUserId
我已将 Airship SDK 集成到 Android 应用程序中。在应用程序启动和飞艇起飞后,我在日志中得到以下调试信息: 07-27 12:46:31.916 XXX - UALib( 1545)
Delphi 中设计时包的可怕错误之一是以下错误,这意味着注册安装新组件到您的 Palette 上的包: Component TSomething can't be registered by pac
我发现的大部分内容都使用 php 或类似的东西。 我有一个 Angular 前端和 Node/express 服务器代码。还没有后端。我不确定如何继续用户注册。 最佳答案 在没有后端的情况下进行注册等
我正在使用 Drupal 6 开发一个网站。我正在使用我自己的主题,并且一切正常。现在我需要使用我的自定义主题在我的网站上创建一个自定义登录/注册表单。我尝试了很多方法,但一切都重定向到我的管理主题,
我在运行此代码时收到 Sip 异常。这是因为 manager.register(me,20,listener)。 下面是我的代码,所以请帮我更正这段代码。我正在使用 SipDemo 代码注册我的帐户。
在过去的几天里,我一直在尝试为基于 VUE 的 excel 制作任务 Pane 插件。 我已按照 link 的指南进行操作我试图为 onSelectionChange 注册一个事件处理程序。它已经有些
我需要在使用 django-registration 应用程序的登录表单中实现一个“记住我”按钮。任何ane可以帮助我向我展示这样做的方法吗? 谢谢 最佳答案 一种方法是更改 session 到期
我发现,如果您使用 Django 1.5 版本,则 django 注册模块会中断,因为在最新的 django 开发版本中,simple.py 类已被删除。 最佳答案 此问题现已修复: hg clone
我正在尝试将 facebook connect 实现到我的网站,但有几个问题。 1:是否可以使用用户当前的 Facebook 电子邮件/密码在我的网站上注册用户。 假设用户点击链接通过 faceboo
我使用 Facebook 注册来允许人们在我的网站上注册。有没有可能,在注册后,他在我的网站注册的成员(member)墙上会张贴? 最佳答案 这可能不是您正在寻找的答案,但我强烈建议您不要这样做。用户
I would like to use a slash (/) for a search during a vimscript, but I don't want to overwrite the "
我正在使用 jqgrid 并且有显示日期的列,但是来自服务器的日期以 json 格式出现,如下所示, "CommentedDate": "\/Date(1304324941000+0530)\/" 如
我希望用户可以直接登录主页,而不是在“../account/login/”页面上登录。我应该做什么才能使它成为可能?如何将主页上的输入字段与 allauth 连接?我不知道这样是否太复杂而无法以这种方
This question already has answers here: Understanding NSString comparison (7个答案) 5年前关闭。 我正在尝试制作注册表。有
我正在使用 Django 注册。它提供了处理 registration_form.html 的 View ,该 html 当前包含用户名、密码 1、密码 2 和电子邮件作为我的应用程序中的用户可输入字
我是一名优秀的程序员,十分优秀!