pursue wind pursue wind
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
  • mybatis

  • mybatis-plus

  • Spring

  • SpringBoot

  • SpringSecurity

  • SpringCloud

    • 文档

      • SpringCloud-广告系统实战(七)----广告检索系统(加载全量索引)
      • SpringCloud-广告系统实战(三)---通用模块的开发
      • SpringCloud-广告系统实战(二)---搭建脚手架
      • SpringCloud-广告系统实战(五)---广告检索系统(微服务调用)
      • SpringCloud-广告系统实战(六)----广告检索系统(广告数据索引的设计与实现)
      • SpringCloud-广告系统实战(四)---投放系统的开发
      • SpringCloud-广告系统设计与实现(一)---概述
      • SpringCloud微服务实战(一)-简介
      • SpringCloud微服务实战(七)-异步和消息
      • SpringCloud微服务实战(七)-消息服务在电商中的实践
      • SpringCloud微服务实战(三)-服务注册与发现
        • 3.3 Eureka Client的使用
        • 3.4 Eureka的高可用
        • 3.5 Eureka总结
        • 3.6 分布式下服务注册的地位和原理
      • SpringCloud微服务实战(二)-微服务介绍
      • SpringCloud微服务实战(六)-统一配置中心
      • SpringCloud微服务实战(十)-Hystrix
      • SpringCloud微服务实战(四)-微服务中的服务拆分
    • Gateway

    • Spring Cloud Stream

    • Alibaba Sentinel 规则参数总结
    • Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】
    • Feign常见问题总结
    • SentinelResource注解 属性总结
    • Spring Cloud Alibaba Sentienl相关配置项
    • SpringCloudAlibaba
    • SpringCloud入门
    • 使用Spring Cloud Feign上传文件
    • 如何使用Feign构造多参数的请求
    • 实用技巧:Hystrix传播ThreadLocal对象(两种方案)
    • 扩展Ribbon支持Nacos权重的三种方式
    • 扩展Ribbon支持基于元数据的版本管理
    • 搭建生产可用的Nacos集群
  • 单元测试框架Mockito
  • 框架
  • SpringCloud
  • 文档
pursuewind
2020-11-23
目录

SpringCloud微服务实战(三)-服务注册与发现

  • 订单服务源码 https://github.com/Wasabi1234/SpringCloud_OrderDemo
  • 商品服务源码 https://github.com/Wasabi1234/SpringCloud_ProductDemo ##注册中心Eureka Server 新建项目 使用@EnableEurekaServer 就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka Server,让你可以嵌入到应用中直接使用 直接运行成功如下 但是不断报异常,why? 这是因为该应用虽然是 Server 端,但也同时是 Client 端,也需要一个注册中心将自己注册进去 为消除其异常,修改下配置 配置需要注册的地址,也就是往自己身上注册 通过观察源码,知道其实是一个 map, 所以配置如下 启动仍旧报错,其实正常问题,因为服务端自己又是 Server, 又是 Client, 服务端未启动完成时,客户端肯定是无法找到服务端的 但是 eureka 的服务端/客户端采用心跳通信方式 可看到地址已随配置被改变

接下来配置实例名 实例名被修改成功 但是该应用本身就是个注册中心,不需要将其显示在注册实例中,通过以下配置 为防止冲突,将端口号回改为默认 ##服务中心 为避免每次手动启动,将应用打成 war 包(jar) 通过 java 命令启动 启动成功效果 Mac 下 Ctrl+C 退出服务 后台执行 查看其相关进程信息 如此该应用就方便了我们,不需要每次都去手动启动应用,在后台会重启,若想杀死进程直接 kill

# 3.3 Eureka Client的使用

  • @EnableDiscoveryClient注解 这通过META-INF/spring.factories查找DiscoveryClient接口的实现 Discovery Client的实现将在org.springframework.cloud.client.discovery.EnableDiscoveryClient键下的spring.factories中添加一个配置类。 DiscoveryClient实现的示例是Spring Cloud Netflix Eureka (opens new window),Spring Cloud Consul发现 (opens new window)和Spring Cloud Zookeeper发现 (opens new window)。

默认情况下,DiscoveryClient的实现将使用远程发现服务器自动注册本地Spring Boot服务器。可以通过在@EnableDiscoveryClient中设置autoRegister=false来禁用此功能。

启动Server, 再启动 Client 发现并没有注册成功实例 因为没有配置注册目标地址信息 之后再次重启,依旧无法注册成功,几经勘察,添加以下依赖后,成功运行,注册到服务器 再指定 client 名字 发现成功注册 此为 client 应用ip 地址 但其实可以自定义 接着点击进入那个链接,URL如下

  • Eureka保证AP 有时会发现如下红色警戒! Eureka看明白了这一点,因此在设计时就优先保证可用性。我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。 如果Eureka服务节点在短时间里丢失了大量的心跳连接(注:可能发生了网络故障),那么这个 Eureka节点会进入“自我保护模式”,同时保留那些“心跳死亡”的服务注册信息不过期。此时,这个Eureka节点对于新的服务还能提供注册服务,对于“死亡”的仍然保留,以防还有客户端向其发起请求。当网络故障恢复后,这个Eureka节点会退出“自我保护模式”。Eureka的哲学是,同时保留“好数据”与“坏数据”总比丢掉任何数据要更好。 在开发模式,最好关闭该模式(默认是开启的),仅能在开发环境关闭!,生产环境禁止关闭!!!

# 3.4 Eureka的高可用

如果一台 eureka宕机了咋办呢,为了实现高可用,如果直接加一台服务器并无任何卵用,考虑将两台 eureka 互相注册 复制得到两份 eureka,并以端口区分 将 eureka1注册到 eureka2上并启动 将 eureka2注册到 eureka1上并启动 发现 client 在1,2同时都注册成功了! 假如此时 eureka1宕机了,会发生什么呢? 我们来将1给关闭 发现2依旧存活,并且 client 还在连接

若此时再 client 端重启又会发生什么呢? 因为无法注册,自然报错了,E2上也没有 client 端再连接了 那么问题来了,怎么才能保证 E1宕机后, client 仍能注册在 E2上呢?只要保持每次都同时往两个 E 注册 同理可得,当有3个 E 时,如此相互注册 新建 E3 对于我们的开发环境,部署一个 E 即可,不再集群

# 3.5 Eureka总结

# 3.6 分布式下服务注册的地位和原理

A 类比青楼中的嫖客, B 类比青楼女子,注册中心呢就相当于青楼中的妈咪 一般 嫖客服务一来,就肯定直接点名春花还是秋月呀,直接问妈咪要花魁就行

Last Updated: 2023/02/14, 18:02:00
SpringCloud微服务实战(七)-消息服务在电商中的实践
SpringCloud微服务实战(二)-微服务介绍

← SpringCloud微服务实战(七)-消息服务在电商中的实践 SpringCloud微服务实战(二)-微服务介绍→

Theme by Vdoing | Copyright © 2019-2023 pursue-wind | 粤ICP备2022093130号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜
  • 网络DJ