springcloud环境搭建——eureka

2023-11-10

springcloud环境搭建——eureka

新建IDEA项目

初始化父工程

初始化名称,这是父工程。

  • 父服务的作用:
    (1)为所有的子module提供公共的jar包依赖
    (2)具体功能由每个module完成,即每个微服务

不选择任何jar包,单独添加。

  • 项目目录结构

    springcloud-eureka-clientEureka 服务注册中心
    Springcloud-ms-eureka 是服务端

父工程的pom文件
<?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 https://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.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springcloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!-- 注意 最后打包 最外层的pom 需要更改为 pom而不是jar   -->
    <packaging>pom</packaging>
<!--    <packaging>pom</packaging>-->

    <name>springcloud</name>
    <description>Demo project for Spring Boot</description>

    <modules>
        <module>springcloud-ms-eureka</module>
        <module>springcloud-eureka-client</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
<!--        <spring-cloud.version>2.0.0.RELEASE</spring-cloud.version>-->
        <spring.cloud-version>Finchley.RELEASE</spring.cloud-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--最外层 主项目 添加spring cloud依赖 https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.5.0</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE</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>

需要注意的是springboot和springcloud版本之间需要对应,本文springboot使用2.0.3.RELEASE,springcloud使用Finchley.RELEASE。

具体对照需要官网查看https://start.spring.io/actuator/info(firefox查看是json格式)。

或者官网查看最新版本https://spring.io/projects/spring-cloud#learn

大版本对应:

使用中具体版本对应:

初始化服务一/Eureka服务注册中心

创建Eureka,也就是创建本项目的子模块

  • Eureka服务注册中心的作用:
    • 让本项目的其他微服务在服务注册中心进行注册
    • 服务启动后,注册中心可以查询所有可用服务的实例库,并缓存到本地
    • 内置轮询负载均衡算法,默认发送心跳检测是30s,一个微服务停止了,需要3个心跳才能让服务器和客户端的元数据相同
子module的pom
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>springcloud-ms-eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-ms-eureka</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>springcloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-eureka-server</artifactId>-->
<!--            <version>1.3.5.RELEASE</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>
微服务eureka的配置步骤
  • (1)完善eureka微服务的完整的pom.xml文【注意spring boot2.0版本 eureka的jar包名字已经改变】

    eureka的pom.xml

  • (2)在eureka微服务的启动类中添加注解@EnableEurekaServer

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @EnableEurekaServer
    @SpringBootApplication
    public class SpringcloudMsEurekaApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringcloudMsEurekaApplication.class, args);
        }
    }
    
  • (3)完善eureka的配置文件properties文件

    #声明本服务在注册中心展示的名字、也是在网关访问时定位服务的名字
    spring.application.name=spring-cloud-ms-eureka
    eureka.instance.hostname=127.0.0.1
    server.port=8000
    
    #是否将自己作为服务注册到注册中心,默认为true,false不能将自己注册到自己,
    #如果有多个服务注册中心的微服务的话,可以将这个设置为true,表示可以将注册中心1注册到注册中心2中
    #eureka.client.register-with-eureka=false
    #表示是否从eureka注册中心中获取注册信息,默认为true
    #eureka.client.fetch-registry=false
    eureka.client.registerWithEureka=false
      #是否将自己注册到 Eureka-Server 中,默认的为 true   registerWithEureka等同于register_with_eureka
    eureka.client.fetchRegistry=false
      #是否需要拉取服务信息,默认未true fetchRegistry等同于 fetch-registry
    
    #注册中心的交互地址,设置多个地址可以用,分隔  查询服务和注册服务都需要依赖这个地址
    #关于设置注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。
    #在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案
    #所以 在一个分布式系统中,设置最少两个服务注册中心是最基本的
    eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
    #eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
    
  • (4)启动服务中心
    访问http:localhost:8000
    可以看到现在,注册中心中,没有服务注册。

建立父子项目的关系

  • 在外层的父项目中的pom.xml文件中进行声明
    声明的子级项目的名字 对应的是项目的pom.xml文件中子级项目的名字
    <!--父 pom.xml-->
    <artifactId>springcloud</artifactId>
    ...
    <modules>
        <module>springcloud-ms-eureka</module>
        <module>springcloud-eureka-client</module>
    </modules>
    
  • 在子项目中<parent>中声明父级名称
    <!--子 pom.xml-->
    <modelVersion>4.0.0</modelVersion>
    <artifactId>springcloud-ms-eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-ms-eureka</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>springcloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    

初始化服务二/客户端

客户端client,提供真正的服务的配置,此服务在注册中心注册

  • client的pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--    <groupId>com.example</groupId>-->
    <artifactId>springcloud-eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-eureka-client</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>springcloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

  • 完善配置文件properties文件
#声明本服务在注册中心展示的名字、也是在网关访问时定位服务的名字
spring.application.name=spring-cloud-eureka-client
eureka.instance.hostname=127.0.0.1
server.port=8001

eureka.client.registerWithEureka=true
#是否将自己注册到 Eureka-Server 中,默认的为 true   registerWithEureka等同于register_with_eureka
eureka.client.fetchRegistry=true

eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8000/eureka/

  • 提供服务

在client的启动类添加@EnableDiscoveryClient,代表自己是一个服务注册方。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient  //代表自己是服务提供方
public class SpringcloudEurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudEurekaClientApplication.class, args);
    }

}
  • 编写一个所提供的测试服务
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class TestController {

    @RequestMapping("/world")
    public String HelloWorld(String s){
        return "传入的值为" + s;
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springcloud环境搭建——eureka 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后

随机推荐

  • IntelliJ IDEA或goland没有 Go SDK选项 显示 no version

    1 首先 保证安装正常 环境变量正常配置 参考 Go语言环境安装及配置 ThrAvicii的博客 CSDN博客 go语言安装 2 在IDEA中安装Go语言支持插件 使用GOLand请忽略此步骤 3 重点 配置SDK 找不到 显示no ver
  • 2023美国大学生数学建模竞赛中文题目发布

    2023年美国大学生数学建模竞赛竞赛将于北京时间 2023年2月17日 早晨6 00点 至 北京时间 2023年2月21日 上午9 00 举行 赛题已发布 请同学们按照要求参赛 预祝同学们获得理想的成绩 Problem A Problem
  • Docker安装与简单操作

    文章目录 Docker安装 1 Docker离线安装 第一步 下载离线安装包 第二步 下载离线安装工具 第三步 将下载好的文件放在一个目录 如 第四步 在linux环境下 创建 docker文件夹 然后拷贝下载好的资源到此目录 如 第五步
  • 程序员由于天天和逻辑打交道,所以在世故的人眼里往往显得过于简单。

    程序员由于天天和逻辑打交道 所以在世故的人眼里往往显得过于简单 近来看组织行为学 发现其中一节列了很多特别的技能 考虑到也许他们对程序员群体很有启示意义 就追加了一点说明 把它放在博客里 相信这对想成为管理者的程序员是有意义的 我个人的观点
  • Go RSA的使用样例

    GenerateRSAKey 是生成公钥和密钥对 RSA Encrypt 是加密方法 RSA Decrypt 是解密方法 运行示例 代码 package main import crypto rand crypto rsa crypto x
  • R语言中将数据框(data.frame)中字符型数据转化为数值型

    as data frame lapply data as numeric
  • 矩阵乘法(C++)

    题目描述 Alice在学线性代数 她觉得线代的计算特别麻烦 于是就来找你 希望你可以给她写一个程序计算两个矩阵的乘积 矩阵乘法介绍 矩阵A是一个N行P列的矩阵 矩阵B是一个K行M列的矩阵 当P K时 A和B可以相乘 仅限于AB BA不一定可
  • JavaWeb笔记---html/css基础学习1

    1 B S软件的结构 JavaSE是属于C S Client Server 结构 B S软件的结构 客户端与服务器端交互 2 网页的组成 内容 表现 行为 1 内容 页面中可以看到的数据 2 表现 内容的展现形式 3 行为 页面中的元素与输
  • Linux查看进程、端口号的各种用法

    1 根据进程名称查看进程号 ps ef grep redis 结果如下 root instance xfl1djr7 ps ef grep redis root 23297 1 0 Jun12 00 01 33 usr bin redis
  • maven仓库快速镜像

    国内连接maven官方的仓库更新依赖库 网速一般很慢 收集一些国内快速的maven仓库镜像以备用 国内OSChina提供的镜像 非常不错
  • 网络编程_常用的基本函数介绍——htonl、ntohl、htons、ntohs

    1 htonl函数 将主机的unsigned long值转换成网络字节顺序 32位 一般主机跟网络上传输的字节顺序是不通的 分大小端 函数返回一个网络字节顺序的数字 include stdafx h include
  • uni-app如何配置隐私政策

    uni app如何配置隐私政策 在manifest json中 的privacy中可以配置 注意点 隐私政策可以使用http 地址 如果隐私政策需要使用本地文件 可以把html放在hybrid文件夹中 注意a链接的地址 正确写法如下图
  • React 好用的工具库

    俗话说的好 工欲善其事 必先利其器 笔者在开发 React 项目的时候 总结出一些很不错的 React 库 可以提高开发效率 满足业务需求 接下来将一一介绍它们 UI组件库 Ant Design 要说 React 最受欢迎的 UI 组件库
  • elasticsearch7新特性_Elasticsearch 7.0 已经发布,盘他!

    Elastic ON 北京分享了Elasticsearch7 0在Speed Scale Relevance等方面的很多新特性 比快更快 有传说中的那么牛逼吗 盘他 通过本文 你能了解到 Elasticsearch Kibana 7 部署体
  • Linux中Docker入门知识基础

    Linux中Docker入门知识docker基础 1 Docker概述 我们开发的代码会接触到不同环境 开发环境 测试环境以及生产环境 1 1 Docker概述 Docker 是一个开源的应用容器引擎 Docker 可以让开发者打包他们的应
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络 低功耗 低功耗蓝牙 低功耗蓝牙 Bluetooth Low Energy 是一项相当成功的无线技术 如今已经很难找到不支持低功耗蓝牙的智能手机或平板电脑了 可以说它是可穿戴技术兴起的关键因素 在医疗设
  • wifi名称可以有空格吗_公司刚成立不久,公司名称可以变更吗?

    最近有很多老板在问 想要把公司的名字改一改 可以吗 所以今天护航财税的小编来告诉大家 已经注册好的公司能不能变更名字 1 公司名称可以更改吗 其实公司名称是可以更改的 当企业在经营的过程中由于发展或其他原因需要 想要更改公司的 可以向工商局
  • git:回滚某次修改,revert某个commit的操作但不生成提交

    说明 在使用小乌龟进行回滚时 我们发现通常是不会提交的 而在gitbash里 我们使用git revert时 却发现会自动生成一次提交 原因是命令不对 通常我们需要使用git revert n sha 1 某次提交的sha 1值 这样就不会
  • 解决setBackgroundResource出现oom的问题

    setBackgroundResource加载图片的额时候 会出现错误 private final int imageIds R mipmap a R mipmap b R mipmap c R mipmap d R mipmap e Im
  • springcloud环境搭建——eureka

    springcloud环境搭建 eureka 目录 springcloud环境搭建 eureka 新建IDEA项目 初始化父工程 父工程的pom文件 初始化服务一 Eureka服务注册中心 子module的pom 微服务eureka的配置步