云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka
作者:mmseoamin日期:2023-12-13

系列文章目录

第一章 Java线程池技术应用

第二章 CountDownLatch和Semaphone的应用

第三章 Spring Cloud 简介

第四章 Spring Cloud Netflix 之 Eureka

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第1张


文章目录

  • 系列文章目录
    • @[TOC](文章目录)
    • 前言
    • 1、Eureka 两大组件
    • 2、Eureka 服务注册与发现
    • 3、案例
      • 3.1、创建主工程
        • 3.1.1、主工程pom.xml配置
        • 3.2、创建子公共模块common-api
          • 3.2.1、添加module
          • 3.2.2、pom.xml配置
          • 3.2.3、maven非springboot项目,增加main入口
          • 3.3、创建Eureka注册中心模块eureka-server
            • 3.3.1、配置pom.xml
            • 3.3.2、配置application.yml
            • 3.3.3、启动eureka-server
              • 3.3.3.1、编译eureka-server
              • 3.3.3.2、运行EurekaServerApplication.java文件
              • 3.4、创建用户服务模块user-service![在这里插入图片描述](upload/website_attach/202312/1_GTX796WM7W4VPN7M.jpeg)
                • 3.4.1、配置pom.xml
                • 3.4.2、配置application.yml
                • 3.4.3、启动user-service
                  • 3.4.3.1、编译user-service
                  • 3.4.3.2、运行UserApplication.java文件
                  • 3.4.3.3、测试
                  • 3.5、查看编译后的包
                  • 小结

                    前言

                    今天我们讲解Spring Cloud微服务的第一代实现:Spring Cloud Netflix

                    Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。

                    Spring Cloud 使用 Spring Boot 思想为 Eureka 增加了自动化配置,开发人员只需要引入相关依赖和注解,就能将 Spring Boot 构建的微服务轻松地与 Eureka 进行整合。

                    附简单的Netflix微服务架构图(Zuul太麻烦直接由Gateway替代):

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第1张

                    Alibaba微服务架构图:

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第3张

                    想在Netflix、Alibaba之间切换的,可以看下图,替换掉相关组件,核心业务代码基本没有太大变化。

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第4张

                    1、Eureka 两大组件

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

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

                    2、Eureka 服务注册与发现

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第5张

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

                    3、案例

                    3.1、创建主工程

                    名称:SpringCloud

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第6张

                    3.1.1、主工程pom.xml配置

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第7张

                    
                    
                       4.0.0
                       pom
                       
                          org.springframework.boot
                          spring-boot-starter-parent
                          2.6.13
                           
                       
                       com.hqyj
                       drp
                       0.0.1-SNAPSHOT
                       drp-parent
                       Demo project for Spring Boot
                       
                          8
                          8
                          UTF-8
                          1.8
                          1.8
                          4.12
                          1.2.17
                          1.16.18
                       
                       
                          
                             
                                org.springframework.cloud
                                spring-cloud-dependencies
                                2021.0.5
                                pom
                                import
                             
                          
                       
                       
                            
                                
                                    org.apache.maven.plugins
                                    maven-compiler-plugin
                                    3.5.1
                                    
                                        ${maven.compiler.source}
                                        ${maven.compiler.target}
                                    
                                
                            
                        
                    
                    

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

                    3.2.1、添加module

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第8张

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第9张

                    3.2.2、pom.xml配置

                    
                    
                        4.0.0
                        
                            com.hqyj
                            SpringCloud
                            0.0.1-SNAPSHOT
                        
                        common-api
                        
                            8
                            8
                            UTF-8
                        
                        
                            
                                org.projectlombok
                                lombok
                            
                        
                    
                    

                    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,在这里插入图片描述,第10张

                    3.3.1、配置pom.xml

                    
                    
                        4.0.0
                        
                            com.hqyj
                            SpringCloud
                            0.0.1-SNAPSHOT
                        
                        eureka-server
                        
                            8
                            8
                            UTF-8
                            true
                        
                        
                            
                                org.springframework.boot
                                spring-boot-starter-web
                            
                            
                                org.springframework.boot
                                spring-boot-starter-test
                                test
                            
                            
                                org.projectlombok
                                lombok
                                true
                            
                            
                                com.github.enesusta
                                spring-devtools
                                1.0.1
                                true
                            
                            
                                org.springframework.cloud
                                spring-cloud-starter-netflix-eureka-server
                            
                        
                        
                    
                    

                    3.3.2、配置application.yml

                    在resource目录下,新建application.yml文件

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第11张

                    编辑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,在这里插入图片描述,第12张

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第13张

                    3.3.3.2、运行EurekaServerApplication.java文件

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第14张

                    启动:http://localhost:7001/

                    3.4、创建用户服务模块user-service云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第15张

                    3.4.1、配置pom.xml

                    
                    
                        4.0.0
                        
                            com.hqyj
                            SpringCloud
                            0.0.1-SNAPSHOT
                        
                        user-service
                        
                            8
                            8
                            UTF-8
                        
                        
                            
                                org.springframework.boot
                                spring-boot-starter-web
                            
                            
                            
                                org.springframework.boot
                                spring-boot-devtools
                                runtime
                                true
                            
                            
                            
                                org.springframework.boot
                                spring-boot-starter-test
                                test
                            
                            
                            
                                junit
                                junit
                                4.12
                            
                            
                            
                                org.springframework
                                springloaded
                                1.2.8.RELEASE
                            
                            
                                org.springframework.cloud
                                spring-cloud-starter-netflix-eureka-client
                            
                            
                                com.hqyj
                                common-api
                                0.0.1-SNAPSHOT
                            
                        
                    
                    

                    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,在这里插入图片描述,第16张

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第17张

                    3.4.3.2、运行UserApplication.java文件

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第18张

                    3.4.3.3、测试

                    http://localhost:8001/user/userInfoList

                    3.5、查看编译后的包

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第19张

                    云原生微服务治理 第四章 Spring Cloud Netflix 服务注册发现组件Eureka,在这里插入图片描述,第20张


                    小结

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