• SpringCloud


    1. 什么是Eureka

    Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

    Eureka包含两个组件:Eureka Server和Eureka Client

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

    • Eureka Client是一个java客户端,用于简化与Eureka Server的交互。

    来看一个具体的例子,如下图所示:

    • 服务提供者(库存服务、仓储服务、积分服务)都有一个Eureka Client组件,这个组件专门负责将这个服务的信息注册到Eureka Server中。说白了,就是告诉Eureka Server,自己在哪台机器上,监听着哪个端口。而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号
    • 服务消费者(订单服务)也有一个Eureka Client组件,这个Eureka Client组件会找Eureka Server问一下:库存服务在哪台机器啊?监听着哪个端口啊?仓储服务呢?积分服务呢?然后就可以把这些相关信息从Eureka Server的注册表中拉取到自己本地缓存起来。

    参考文章:https://juejin.cn/post/6844903705553174541?utm_source=tuicool&utm_medium=referral%3Futm_source%3Dtuicool&utm_medium=referral

    2. Eureka原理

    C/S架构 (Client/Server)

    在注册中心eureka server注册的各个微服务实例,各个微服务每隔30s就要发送一个heartbeat证明自己还活着。

    如果注册中心eureka server在90s内没有接收到某个微服务实例的heartbeat,就会从注册中心移除。

    如果注册中心短时间内失去过多服务,会进入“自我保护机制”,不再删除服务,详见第6节。

    3. 编写eurake-server注册中心

    3.1 导入spring-cloud-starter-eurake-server依赖

    3.2 在application.yml,配置eureka

    3.3 开启eureka @EnableEurekaServer

    3.4 eureka server UI界面

    ————————————————

    3.4.1 修改eureka服务信息

    “eureka服务提供者”的相关配置,会修改eureka server UI界面

    3.4.2 

     

    4. euraka服务提供者

    4.1 导入spring-cloud-starter-eureka依赖

    4.2 在application.yml,配置eureka

    4.3 开启eureka @EnableEurekaClient

    5. euraka服务消费者

    5.1 导入spring-cloud-starter-netflix-eureka-server依赖

    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

    5.2 在application.yml,配置eureka

    server:
      port: 8082 #服务端口
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:7001/eureka/
    spring:
      application:
        name: user-service-consumer

    5.3 开启eureka @EnableDiscoveryClient

    @EnableDiscoveryClient
    @SpringBootApplication
    public class SpringCloudUserConsumerApplication {
    
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SpringCloudUserConsumerApplication.class, args);
        }
    
    }

    补充:服务调用实战

    1-启动服务中心并注册服务

    代码编写之后,按顺序启动spring-cloud-eureka、spring-cloud-user-service和spring-cloud-user-consumer,先访问注册中心http://localhost:9001/,出现下图说明注册中心和两个服务以及注册成功。以下是注册中心运行截图:

    2-服务调用

    打开postman访问http://localhost:8082/consumer/getUser?id=2,出现下图后说明服务已经调用成功。


    postman调用截图

     到此SpringCloud实现服务间调用功能已经全部实现

    6. euraka自我保护机制

    7. eureka server集群环境配置

    为什么要配置集群?答案:一个eureka server挂了,其他两个能正常使用

    7.1 集群环境配置原理

    7.2 eureka server 互相挂载

     

    7.3 微服务注册到集群

    其实就是三个地方都发布

    效果图: 

    8. CAP原则

      

    CAP原则的核心:

    一个分布式系统,不可能同时很好的满足CAP三个需求。
    由于数据出错是不能忍受的,因此P原则始终包括。Eureka选择了AP,Zookeeper选择了CP

    补充知识:

      

    9. 【重点】Eureka vs ZooKeeper, Eureka好在哪里?

     

     

     

  • 相关阅读:
    WebApi 自定义过滤器实现支持AJAX跨域的请求
    ASP.NET MVC 实现与SQLSERVER的依赖缓存
    MVC4+Springnet+Nhibernate学习系列随笔(一)
    自定义JsonResult处理JSON序列化DateTime类型数据(Ext4.2+ASP.NET MVC 4)
    SqlServer计算周岁的函数
    RabbitMq 使用笔记(winows 64版本)
    解决IDEA下tomcat启动server乱码
    Servlet学习笔记(一)
    解决IDEA使用terminal时 git log 乱码
    Git常用的命令
  • 原文地址:https://www.cnblogs.com/frankcui/p/14118351.html
Copyright © 2020-2023  润新知