SpringCloud之Eureka注册中心解读

这篇具有很好参考价值的文章主要介绍了SpringCloud之Eureka注册中心解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Eureka基础概念

概述

Eureka Serve

Eureka Client

@EnableEurekaServer

 @EnableEurekaClient

java代码实战

实战架构

父工程pom文件 

eureka-server服务

student-service服务

teacher-service服务

 测试


Eureka基础概念

概述

​ Eureka 又称 服务注册中心,全部服务都需要进行注册才能使用,也是微服务架构中必不可少的一个组件。

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理       在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。 ​

 Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用框架,核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))

Eureka Serve

Eureka Server提供服务注册服务 各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。 

注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端   

Eureka Client

EurekaClient通过注册中心进行访问,是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。

如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒) 

@EnableEurekaServer

在项目启动类上使用@EnableEurekaServer,可以将项目作为SpringCloud中的注册中心。

在SpringCloud中当你需要使用Eureka
Eureka注册中心的时候你在配置Eureka的服务端的时候需要在启动类上添加@EnableEurekaServer注解

 @EnableEurekaClient

在项目启动类上添加@EnableEurekaClient,本服务启动后会自动注册进eureka服务中。

没使用注解的时候,他们还是经过一个注册的方法,(注册到服务中心) 他们应该是根据配置文件来的。

java代码实战

实战架构

SpringCloud之Eureka注册中心解读,SpringCloud体系解读,spring cloud,eureka,java,分布式,spring,spring boot,后端

建立三个springboot工程,其中一个作为Eureka Server注册中心,其他俩个为俩个不同的端口的service端,客户端向8082端口的studentservice发送一个请求(/getInfo)以后,8082端口的studentservice需要往teacherservice发送一个请求(/getTeacher)返回数据。

父工程pom文件 

    <groupId>org.example</groupId>
    <artifactId>eurek-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>eurek-serve</module>
        <module>student-service</module>
        <module>teacher-service</module>
    </modules>


    <packaging>pom</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/>
    </parent>
    <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>Hoxton.SR10</spring-cloud.version>
        <mysql.version>5.1.47</mysql.version>
        <mybatis.version>2.1.1</mybatis.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--nacos的管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

eureka-server服务

pom文件

   <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

Application 程序 

@SpringBootApplication
@EnableEurekaServer
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

yml配置文件 

server:
  port: 8001 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:8081/eureka

浏览器访问http://127.0.0.1:8001/ 可以看到web端

SpringCloud之Eureka注册中心解读,SpringCloud体系解读,spring cloud,eureka,java,分布式,spring,spring boot,后端

student-service服务

pom文件


    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </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>

Application 程序 

@SpringBootApplication
@EnableEurekaClient
public class StudentApplication {

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

    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 

使用restTemplate访问restful接口非常的简单粗暴无脑。
(url, requestMap, ResponseBean.class)这三个参数分别代表 
REST请求地址、请求参数、HTTP响应转换被转换成的对象类型。

yml配置文件 

server:
  port: 8082
spring:
  application:
    name: studentservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8081/eureka

 Teacher类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher implements Serializable {
    private  String name;
    private  String sex;
}

 StudentController

@RestController
public class StudentController implements Serializable {
    @Resource
    RestTemplate restTemplate;

    @GetMapping("/getInfo")
    public Teacher getInfo(){
        String url="http://teacherservice/getTeacher";
        Teacher teacher = restTemplate.getForObject(url, Teacher.class);

        return teacher;
    }
}

teacher-service服务

 pom文件

   <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </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>

Application 程序 

@SpringBootApplication
public class TeacherApplication {

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

    }

}

yml配置文件 

server:
  port: 8083
spring:
  application:
    name: teacherservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8081/eureka

 Teacher类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher implements Serializable {
    private  String name;
    private  String sex;
}

 StudentController

@RestController
public class TeacherController {


    @GetMapping("/getTeacher")
    public Teacher getInfo(){
        return new Teacher("张三","男");
    }
}

 测试

浏览器访问:http://localhost:8082/getInfo

SpringCloud之Eureka注册中心解读,SpringCloud体系解读,spring cloud,eureka,java,分布式,spring,spring boot,后端文章来源地址https://www.toymoban.com/news/detail-792274.html

到了这里,关于SpringCloud之Eureka注册中心解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

    Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中,搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。  我们引入spring cloud的依赖和eureka的依赖。 注意spring cloud和springboot的版本要对应,不然容易出现各种奇怪的错误。 不知道spr

    2024年04月08日
    浏览(76)
  • 客快物流大数据项目(一百一十三):注册中心 Spring Cloud Eureka

    文章目录 注册中心 Spring Cloud Eureka 一、Eureka 简介 二、架构图

    2023年04月25日
    浏览(67)
  • SpringCloud--Eureka注册中心

              Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就

    2024年01月17日
    浏览(39)
  • SpringCloud --- Eureka注册中心

    假如我们的服务提供者user-service部署了多个实例,如图 思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口? 有多个user-service实例地址,order-service调用时该如何选择? order-service如何得知某个user-service实例是否依然健康,是不是已经宕

    2023年04月24日
    浏览(41)
  • 【SpringCloud-1】注册中心-Eureka

    springcloud微服务,相对于dubbo这种SOA架构,提供了一站式的全套解决方案,什么意思呢?就是说springcloud不需要依赖其他组件,自己提供了全套的  常规项目需要使用的技术和解决问题的方案。  比如dubbo需要依赖zk作为注册中心,springcloud有自己的注册中心,对于其他如链路追

    2024年02月09日
    浏览(40)
  • SpringCloud:Eureka服务注册中心

    Eureka是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心。 在搭建微服务项目时遇到的三个问题: 服务消费者该如何获取服务提供者的地址信息? 如果有多个服务提供者,消费者该如何选择? 消费者如何得知服务提供者的健康状态? Eureka的作

    2024年01月20日
    浏览(44)
  • 注册中心 —— SpringCloud Netflix Eureka

    Eureka 是一个基于 REST 的服务发现组件,SpringCloud 将它集成在其子项目 spring-cloud-netflix 中,以实现 SpringCloud 的服务注册与发现,同时提供了负载均衡、故障转移等能力,目前 Eureka2.0 已经不再维护,故不推荐使用 Eureka 有两种角色组件: Eureka Server:服务注册中心组件,提供了

    2024年02月13日
    浏览(35)
  • SpringCloud之Eureka 服务注册中心

    5 Eureka 服务注册中心 5.1什么是 Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发

    2024年02月04日
    浏览(49)
  • Springcloud1--->Eureka注册中心

    Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址 提供者:启动后向Eureka注册自己信息(地址,提供什么服务) 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新 心跳(续约):提供者定期通过http方式向Eureka刷

    2024年02月05日
    浏览(41)
  • springCloud Eureka注册中心配置详解

    1、创建一个springBoot项目 2、在springBoot项目中添加SpringCloud依赖 3、在springBoot项目中创新建一个子模块eureka-server: 4、搭建Eureka 添加依赖:在新建一个子模块的pom.xml中添加依赖 创建配置文件:在resources文件下创建一个名为 application.yml (或 application.properties )的配置文件,并

    2024年02月15日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包