• Spring Cloud Netflix 教程和源码


    本教程目标

    想要系统地学习 Spring Cloud Netflix, 把自己的学习过程记录下来。

    状态

    持续更新中

    微服务架构

    微服务架构是一种将应用程序拆分为一组独立的、可独立部署的服务的架构模式。每个服务都运行在自己的进程中,可以独立地进行开发、测试和部署。微服务架构可以提高应用程序的可扩展性、可维护性和可复用性。

    在微服务架构中,服务之间的通信通常是通过API来进行的。每个服务都有自己的API,客户端可以通过这些API来调用服务,从而实现服务之间的通信。服务之间可以通过RESTful API、gRPC、Thrift等方式来进行通信。

    微服务架构中的服务通常是由小型、自治的团队来开发和管理的。每个服务都有自己的数据库,可以独立地进行扩展和升级。服务之间的依赖关系通常是通过API接口来管理的,而不是通过硬编码的方式来管理的。

    微服务架构的优点包括:

    • 可扩展性:由于每个服务都是独立的,因此可以根据需要对服务进行扩展,而不会影响其他服务的运行。
    • 可维护性:由于每个服务都是独立的,因此可以对服务进行独立的维护和升级,而不会影响其他服务的运行。
    • 可复用性:由于每个服务都是独立的,因此可以将服务复用在其他项目中,从而提高开发效率和代码质量。
    • 可测试性:由于每个服务都是独立的,因此可以对服务进行独立的测试,而不会影响其他服务的运行。

    微服务架构的缺点包括:

    • 部署和管理复杂性:由于每个服务都是独立的,因此需要对每个服务进行单独的部署和管理,这可能会增加部署和管理的复杂性。
    • 故障隔离性:由于每个服务都是独立的,因此如果一个服务出现故障,可能会导致整个应用程序出现故障,这可能会增加故障隔离性的问题。
    • 数据一致性:由于每个服务都是独立的,因此需要对数据一致性进行特殊的处理,这可能会增加数据一致性的问题。
    • 性能问题:由于每个服务都是独立的,因此可能需要增加网络通信的成本,这可能会导致性能问题。

    SpringCloud微服务架构

    在这里插入图片描述

    Eureka 介绍

    Spring Cloud Netflix Eureka是一个Netflix公司开发的服务注册和发现工具。
    在微服务架构中,服务之间需要互相调用和通信,而Eureka可以提供服务注册和发现的功能,使得服务之间可以互相调用和通信。

    Eureka是一个基于REST的服务注册和发现工具,它可以注册和发现Spring Boot应用程序。Eureka服务器存储所有注册的应用程序的元数据,并提供一个简单的REST API来获取这些元数据。服务注册到Eureka时,它们会提供一些元数据,如服务名称、IP地址、端口号、服务健康状况等。服务发现使用这些元数据来找到其他服务,并可以执行一些操作,如心跳检测、服务下线、服务健康检查等。

    Eureka提供了许多配置选项,可以根据具体需求进行配置。例如,可以配置Eureka服务器是否启用JMX监控,Eureka客户端是否在启动时向Eureka服务器注册,Eureka客户端是否从Eureka服务器获取服务实例列表等。

    Spring Cloud Netflix Eureka是一个轻量级、易于使用的服务注册和发现工具,可以简化微服务架构的开发和部署。

    Eureka 配置文件中常见的属性及其作用
    属性名Eureka服务器Eureka客户端作用
    server.port固定动态Eureka服务器监听的端口号,通常为8761。
    eureka.instance.metadata-map.app.instance-id固定动态Eureka客户端发送到Eureka服务器的实例ID,通常为@spring.application.name
    eureka.instance.metadata-map.app.name固定动态Eureka客户端发送到Eureka服务器的实例名,通常为@spring.application.name
    eureka.server.enable-jmx固定false是否启用JMX监控,通常为false
    eureka.server.jmx-port固定falseJMX监控的端口号,通常为0
    eureka.server.healthcheck.port固定false健康检查的端口号,通常为0
    eureka.server.auto-registration.enabled固定false是否自动注册服务到Eureka服务器,通常为false
    eureka.client.register-with-eurekafalsetrue是否注册服务到Eureka服务器,通常为false
    eureka.client.fetch-registryfalsetrue是否从Eureka服务器获取服务实例列表,通常为false
    eureka.client.healthcheck-interval-secondsfalse30健康检查的间隔时间(秒),通常为30
    eureka.client.register-on-startupfalsetrue是否在服务启动时向Eureka服务器注册,通常为true
    eureka.client.renewal-interval-secondsfalse90心跳检测的间隔时间(秒),通常为90
    eureka.client.region默认默认服务所在的区域,通常为空。

    代码

    1. eureka_server
    项目地址

    项目地址

    启动步骤
    • 创建Eureka Server的配置文件,通常使用的是application.properties或application.yml文件。在配置文件中,需要配置Eureka Server的端口号、注册中心的地址等信息。例如:
         
    
        eureka.server.port=8761
        eureka.server.registryURL=http://localhost:8761/eureka/
        eureka.server.metadata-map.application.version=1.0.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 创建Eureka Server的类,通常使用的是EurekaServerApplication类。在类中,需要使用@SpringBootApplication注解来启用Spring Boot的自动配置,并使用main方法来启动Eureka Server。例如:
       
    
        package com.example.eureka.server;
    
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
    
        @SpringBootApplication
        public class EurekaServerApplication {
    
            public static void main(String[] args) {
                SpringApplication.run(EurekaServerApplication.class, args);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 使用IDEA或Maven等工具运行Eureka Server应用程序。在运行过程中,Eureka Server将会启动并监听指定的端口号,等待服务实例的注册和注销。

    注意:在运行Eureka Server之前,需要确保Eureka Server的配置文件中的注册中心地址是正确的,并且已经启动了Eureka Server。

    测试

    访问路径 http://localhost:8761/
    在这里插入图片描述

    2. eureka_client
    项目地址

    项目地址

    https://gitee.com/bseaworkspace/pando_springcloud/tree/master/eureka_client
    
    • 1
    Eureka Client启动步骤
    步骤1:添加依赖

    在pom.xml文件中添加Eureka客户端的依赖:

    
      org.springframework.cloud
      spring-cloud-starter-netflix-eureka-client
    
    
    • 1
    • 2
    • 3
    • 4
    步骤2:配置Eureka Server的地址

    在application.properties或application.yml文件中配置Eureka Server的地址:

    properties

    server.port=8762
    spring.application.name=eureka_client
    spring.cloud.eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
    spring.cloud.eureka.client.registerWithEureka=true
    spring.cloud.eureka.client.fetchRegistry=true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    步骤3:启动Eureka Client

    在主类上添加@EnableEurekaClient注解,启动Eureka Client:

    @SpringBootApplication
    @EnableEurekaClient
    public class EurekaClientApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    步骤4:在服务实例中添加@Component注解

    在服务实例中添加@Component注解:

    @Component
    public class MyService {
    
        @Override
        public String toString() {
            return "MyService{}";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    测试

    访问路径 http://localhost:8761/
    在这里插入图片描述

  • 相关阅读:
    《三体2:黑暗森林》读后感
    未雨绸缪,前端小知识
    西门子机床联网
    笔记本小键盘怎么开?探索笔记本小键盘的奥秘
    鸿蒙HarmonyOS应用开发:多码识别
    猿创征文|为了学习英语,我开发了一个单词对战系统
    Ubuntu20.04 通过nmcli命令查看网卡状态为unmanaged
    死磕面试系列,Java到底是值传递还是引用传递?
    什么是React的虚拟DOM?它如何工作以提高性能?
    HttpClient实现RPC解析(通过Get方式访问)
  • 原文地址:https://blog.csdn.net/h356363/article/details/133386616