-
Notifications
You must be signed in to change notification settings - Fork 4.1k
2019 11 01 Spring Cloud(一)《服务集群注册与发现 Eureka》
作者:小傅哥
博客:https://bugstack.cn - 原创系列专题
沉淀、分享、成长,让自己和他人都能有所收获!
-
对于能提供完整领域服务接口功能的RPC而言,例如;gRPC、Thrift、Dubbo等,服务的注册与发现都是核心功能中非常重要的一环,使得微服务得到统一管理。
-
在分布式领域中有个著名的CAP理论;一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素在分布式系统中,最多满足两个,不可能三者兼顾。
-
通常我们在使用dubbo时zookeeper作为注册中心以选主配置为核心,保证CP特性,即任何时刻对 Zookeeper 的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是它不能保证每次服务请求的可用性。
-
而 Spring Cloud Netflix 在设计 Eureka 时遵守的就是 AP 原则,因为对于服务发现而言,可用性比数据一致性显得尤为重要。
-
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现。
-
另外Eureka服务集群有自我保护模式,在每分钟收到心跳低于阀值时,就会触发自我保护;
阈值 = instance的数量 × (60 / instance的心跳间隔秒数) × 自我保护系数 {实际计算为;this.expectedNumberOfRenewsPerMin + 2}
采用 Eureka Server 运行3个实例{node01、node02、node03}构建服务发现集群,解决单点问题(zookeeper也是至少部署三组以上构建一个集群)。但Eureka Server 采用的是去中心化的架构的 Peer to Peer 对等通信,没有 master/slave 区分,每一个 Peer 都是对等的。在这种架构中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。每个节点都可被视为其他节点的副本。
- jdk 1.8
- Spring Boot 2.0.6.RELEASE
- Spring Cloud Finchley.SR2
itstack-demo-springcloud-01
├── itstack-demo-node01
│ └── src
│ └── main
│ ├── java
│ │ └── org.itstack.demo
│ │ └── EurekaServerApplication.java
│ └── resources
│ └── application.yml
├── itstack-demo-node02
│ └── src
│ └── main
│ ├── java
│ │ └── org.itstack.demo
│ │ └── EurekaServerApplication.java
│ └── resources
│ └── application.yml
└── itstack-demo-node03
└── src
└── main
├── java
│ └── org.itstack.demo
│ └── EurekaServerApplication.java
└── resources
└── application.yml完整代码欢迎关注公众号:bugstack虫洞栈 | 回复“SpringCloud专题”进行下载
EurekaServerApplication.java | 三组node代码一致,只需要一个普通的springboot添加@EnableEurekaServer即可启动
/**
* 微信公众号:bugstack虫洞栈 | 沉淀、分享、成长,专注于原创专题案例
* 论坛:http://bugstack.cn
* Create by 付政委 on @2019
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run( EurekaServerApplication.class, args );
}
}itstack-demo-node01/application.yml | node1 指向另外两台服务,registerWithEureka、fetchRegistry和单实例不同需要配置为true
spring:
application:
name: itstack-demo-eureka-server
server:
port: 8081
eureka:
instance:
hostname: node01
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://node02:8082/eureka/,http://node03:8083/eureka/itstack-demo-node02/application.yml | node2 指向另外两台服务
spring:
application:
name: itstack-demo-eureka-server
server:
port: 8082
eureka:
instance:
hostname: node02
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://node03:8083/eureka/,http://node01:8081/eureka/itstack-demo-node03/application.yml | node3 指向另外两台服务
spring:
application:
name: itstack-demo-eureka-server
server:
port: 8083
eureka:
instance:
hostname: node03
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://node01:8081/eureka/,http://node02:8082/eureka/- 配置host;127.0.0.1 node1 node2 node3
- 分别启动node1、node2、node3
- 访问;http://localhost:8081/
上一篇:Spring Cloud(零)《总有一偏概述告诉你SpringCloud是什么》
下一篇:Spring Cloud(二)《服务提供与负载均衡调用 Eureka》
微信搜索「bugstack虫洞栈」公众号,关注后回复「SpringCloud专题」获取本文源码&更多原创专题案例!
小傅哥(微信:fustack),公众号:bugstack虫洞栈 | bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获!
🌏 知识星球:码农会锁
实战项目:「DDD+RPC分布式抽奖系统」、专属小册、问题解答、简历指导、架构图稿、视频课程
🐲 头条
-
💥
🎁 Lottery 抽奖系统- 基于领域驱动设计的四层架构的互联网分布式开发实践 -
小傅哥的《重学 Java 设计模式》- 全书彩印、重绘类图、添加内容 -
⭐小傅哥的《Java 面经手册》- 全书5章29节,417页11.5万字,完稿&发版 -
小傅哥的《手撸 Spring》- 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理 -
🌈小傅哥的《SpringBoot 中间件设计和开发》- 小册16个中间件开发30个代码库
⛳ 目录
💋 精选
🐾 友链
建立本开源项目的初衷是基于个人学习与工作中对 Java 相关技术栈的总结记录,在这里也希望能帮助一些在学习 Java 过程中遇到问题的小伙伴,如果您需要转载本仓库的一些文章到自己的博客,请按照以下格式注明出处,谢谢合作。
作者:小傅哥
链接:https://bugstack.cn
来源:bugstack虫洞栈2021年10月24日,小傅哥 的文章全部开源到代码库 CodeGuide 中,与同好同行,一起进步,共同维护。
这里我提供 3 种方式:
-
提出
Issue:在 Issue 中指出你觉得需要改进/完善的地方(能够独立解决的话,可以在提出 Issue 后再提交PR)。 -
处理
Issue: 帮忙处理一些待处理的Issue。 -
提交
PR: 对于错别字/笔误这类问题可以直接提交PR,无需提交Issue确认。
详细参考:CodeGuide 贡献指南 - 非常感谢你的支持,这里会留下你的足迹
- 加群交流 本群的宗旨是给大家提供一个良好的技术学习交流平台,所以杜绝一切广告!由于微信群人满 100 之后无法加入,请扫描下方二维码先添加作者 “小傅哥” 微信(fustack),备注:加群。
- 公众号(bugstack虫洞栈) - 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。
感谢以下人员对本仓库做出的贡献或者对小傅哥的赞赏,当然不仅仅只有这些贡献者,这里就不一一列举了。如果你希望被添加到这个名单中,并且提交过 Issue 或者 PR,请与我联系。
