云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

这篇具有很好参考价值的文章主要介绍了云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

第一章 Java线程池技术应用
第二章 CountDownLatch和Semaphone的应用
第三章 Spring Cloud 简介
第四章 Spring Cloud Netflix 之 Eureka
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划


前言

今天我们讲解Spring Cloud微服务的第一代实现:Spring Cloud Netflix
Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。
Spring Cloud 使用 Spring Boot 思想为 Eureka 增加了自动化配置,开发人员只需要引入相关依赖和注解,就能将 Spring Boot 构建的微服务轻松地与 Eureka 进行整合。

附简单的Netflix微服务架构图(Zuul太麻烦直接由Gateway替代):
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
Alibaba微服务架构图:
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
想在Netflix、Alibaba之间切换的,可以看下图,替换掉相关组件,核心业务代码基本没有太大变化。
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

1、Eureka 两大组件

Eureka 采用 CS(Client/Server,客户端/服务器) 架构,它包括以下两大组件:Eureka Server、Eureka Client

组件 介绍
Eureka Server Eureka 服务注册中心,主要用于提供服务注册功能
Eureka Client Eureka 客户端,通常指的是微服务系统中各个微服务

2、Eureka 服务注册与发现

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

功能 介绍
服务注册中心(Register Service) 它是一个 Eureka Server,用于提供服务注册和发现功能。
服务提供者(Provider Service) 它是一个 Eureka Client,用于提供服务。它将自己提供的服务注册到服务注册中心,以供服务消费者发现。
服务消费者(Consumer Service) 它是一个 Eureka Client,用于消费服务。它可以从服务注册中心获取服务列表,调用所需的服务。

3、案例

3.1、创建主工程

名称:SpringCloud
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

3.1.1、主工程pom.xml配置

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

<?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>
   <packaging>pom</packaging>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.6.13</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.hqyj</groupId>
   <artifactId>drp</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>drp-parent</name>
   <description>Demo project for Spring Boot</description>
   <properties>
      <maven.compiler.source>8</maven.compiler.source>
      <maven.compiler.target>8</maven.compiler.target>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
      <junit.version>4.12</junit.version>
      <log4j.version>1.2.17</log4j.version>
      <lombok.version>1.16.18</lombok.version>
   </properties>
   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.5</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                </configuration>
            </plugin>
        </plugins>

    </build>

</project>

3.2、创建子公共模块common-api

3.2.1、添加module

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

3.2.2、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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hqyj</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>common-api</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

</project>

3.2.3、maven非springboot项目,增加main入口

添加Main.java,指定main入口,防止Maven package / install打包失败

public class Main {
    public static void main(String[] args) {
        System.out.println("common-api");
    }

}

3.3、创建Eureka注册中心模块eureka-server

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

3.3.1、配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hqyj</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>eureka-server</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <skip-tests>true</skip-tests>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.github.enesusta</groupId>
            <artifactId>spring-devtools</artifactId>
            <version>1.0.1</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

    </dependencies>
    
</project>

3.3.2、配置application.yml

在resource目录下,新建application.yml文件
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

编辑application.yml文件,添加eureka配置

server:
  port: 7001

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称,
  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版服务注册中心

3.3.3、启动eureka-server

创建EurekaServerApplication.java启动文件


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}
3.3.3.1、编译eureka-server

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

3.3.3.2、运行EurekaServerApplication.java文件

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
启动:http://localhost:7001/

3.4、创建用户服务模块user-service

3.4.1、配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hqyj</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>user-service</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--devtools 开发工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--Spring Boot 测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--junit 测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!-- 修改后立即生效,热部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
            <version>1.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.hqyj</groupId>
            <artifactId>common-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

3.4.2、配置application.yml

server:
  port: 8001
spring:
  application:
    name: user-service  #微服务名称
eureka:
  client: #将客户端注册到 eureka 服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka  #这个地址是 7001注册中心在 application.yml 中暴露出来额注册地址 (单机版)

3.4.3、启动user-service

创建UserApplication.java启动文件

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

@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class,args);
    }
}
3.4.3.1、编译user-service

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

3.4.3.2、运行UserApplication.java文件

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划

3.4.3.3、测试

http://localhost:8001/user/userInfoList

3.5、查看编译后的包

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划
云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka,Java微服务,云原生,微服务,eureka,源代码,原力计划


小结

Eureka 作为Netflix 公司开发的一款开源的服务注册与发现组件,还是十分经典的。在服务注册与发现这一块,也是十分优秀,有兴趣的同学可以去下载Eureka的源码研究一下,看看Eureka是如何实现服务注册,调用端是如何发现服务并调用,最后再看看Eureka里同一个服务多台机器实例是如何实现负载均衡调用的。文章来源地址https://www.toymoban.com/news/detail-712794.html

到了这里,关于云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生进阶之PaaS中间件】第四章RabbitMQ-1-简介及工作模式

            RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP(Advanced Message Queue:高级消息队列协议)它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。RabbitMQ 最初起源于

    2024年02月21日
    浏览(85)
  • 【重识云原生】第四章云网络4.7.8节——SR-IOV方案

            SR-IOV是Single Root I/O Virtualization的缩写。SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性

    2024年02月11日
    浏览(45)
  • 【云原生进阶之PaaS中间件】第四章RabbitMQ-4.1-原理机制与进阶特性

    1.客户端连接到消息队列服务器,打开一个Channel。 2.客户端声明一个Exchange,并设置相关属性。 3.客户端声明一个Queue,并设置相关属性。 4.客户端使用Routing key,在Exchange和Queue之间建立好绑定关系。 5.客户端投递消息到Exchange。 6.Exchange接收到消息后,就根据消息的key和已经

    2024年02月21日
    浏览(51)
  • 小黑子—spring:第四章 事务控制与整合web环境

    事务是开发中必不可少的东西,使用JDBC开发时,我们使用connnection对事务进行控制,使用MyBatis时,我们使用SqlSession对事务进行控制,缺点显而易见,当我们切换数据库访问技术时,事务控制的方式总会变化,Spring 就将这些技术基础上,提供了统一的控制事务的接口。Spring的

    2024年02月06日
    浏览(42)
  • 【孙哥说Spring5】第四章 Spring中的事务属性(Transaction Attribute)

    什么是事务属性 如何添加事务属性 事务属性详解 (1)隔离属性(isolation) 隔离属性的概念 脏读 不可重复读 幻影读 总结 默认的隔离属性 sd sd sd

    2024年02月06日
    浏览(38)
  • 云原生微服务治理经典套件之Spring Cloud Alibaba核心技术与实战案例

    送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 文章末尾有送书须知 ^ o ^,欢迎各位老板们! 云原生的微服务治理可以从以下几个方面进行: 服务注册与

    2024年02月08日
    浏览(141)
  • 【云原生进阶之PaaS中间件】第四章RabbitMQ-4.3-如何保证消息的可靠性投递与消费

            根据RabbitMQ的工作模式,一条消息从生产者发出,到消费者消费,需要经历以下4个步骤: 生产者将消息发送给RabbitMQ的Exchange交换机; Exchange交换机根据Routing key将消息路由到指定的Queue队列; 消息在Queue中暂存,等待消费者消费消息; 消费者从Queue中取出消息消费

    2024年03月11日
    浏览(66)
  • Web服务端实验(第四章)1、2题

    代码: four_1.jsp Square.jsp 效果: 打印数字平方 代码: four_2.jsp four_2_result.jsp errorpage.jsp 效果: 异常页面--正常输入 异常页面--异常输入

    2024年02月07日
    浏览(46)
  • Spring Cloud Netflix微服务组件-Eureka

    目录 CAP理论 注册中心对比 为什么注册中心更适合用AP? 分布式系统AP和CP如何取舍? Eureka核心功能点 Euraka server启动的主线流程 总体流程图 @EnableEurekaServer 流程图 EurekaServerAutoConfiguration EurekaServerInitializerConfiguration Euraka client启动的主线流程 总体流程图 EurekaClientAutoConfigurat

    2024年02月01日
    浏览(299)
  • 【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?

    注册中心:Eureka 负载均衡:Ribbon、Feign 服务熔断:Hystrix 服务降级:Hystrix 服务监控:Hystrix Dashboard 路由网关:Zuul 配置中心:Config git资源仓库:Spring Cloud Netflix 参考文章:https://zhuanlan.zhihu.com/p/353806201 坑:依赖版本对应问题 不断学习补充中,如理解有偏差的点,烦请指教!

    2024年02月08日
    浏览(97)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包