spring cloud之eureka
来源:互联网 发布:淘宝一心升二心 编辑:程序博客网 时间:2024/06/05 03:32
Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调导致了锅炉板模式,并且使用Spring Cloud开发人员可以快速地站起来实现这些模式的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。
中文文档:https://springcloud.cc/
官方文档:http://projects.spring.io/spring-cloud/#quick-start
首先介绍一下spring cloud的全局服务:
eureka:注册中心(服务发现),给服务调用者提供真实的服务供应者链接,在多台eureka实例的环境下,eureka集群会自动相互同步服务供应者的数据,在同步的时候会带一个isReplica的参数,该参数的作用为防止循环同步,其原理为当服务供应者启动服务的时候默认会去读application.properties(yml)、bootstrap.properties(yml)中的eureka相关的配置,如果只配置一个eureka服务地址,那么只会去这一个eureka地址中注册并暴露自己的坐标,注册时会传4个参数:IP、Port、ServerId、InstanceId,当eureka服务受理以后会对其他的eureka服务注册该服务提供者。在这里小提一下,在eureka服务集群启动的时候会相互注册,每一个eureka服务都是相对独立的也就是无状态的,是对等的关系(p2p),在每一个eureka服务中都会以concurrentMap的方式存储其他的节点用于数据同步。
Configuration center:配置中心,所有服务的配置文件可以由配置中心提供
zuul:spring cloud配套的网关,类似nginx,可以静态路由到某一个页面,如www.baidu.com。也可以动态路由到某一个server
ribbon:客户端负载均衡器
Hystrix:熔断器,主要作为熔断,降级相关操作
全局关系图如下:
今天这一章节主要回顾和整理eureka的相关知识。
Q:springcloud中客户端和服务端是怎么样通过注解生效的?
A:在eureka服务的pom文件里去定义spring-cloud-netflix-eureka-server的引用,在项目启动的时候如果在类上定义了@EnableEurekaServer会自动的去扫描该jar包下是否存在spring.factories,该配置主要的功能为定义初始化配置的类,在server端为EurekaServerAutoConfiguration.class,在客户端pom里定义spring-cloud-netflix-eureka-client,同样在该jar包下会有一个对应的spring.factories的文件,在初始化的时候会去执行EurekaClientAutoConfiguration.class和EurekaDiscoveryClientConfiguration.class从而完成eureka服务端和客户端的初始化工作。
Q:服务提供者怎么注册到服务中心的?
A:在程序加载时会启动一个线程,该线程会将将服务的信息注册到 eurekaserver 服务的信息(IP,端口,service_id,instance_id) 实例化的过程中,定时任务DiscoveryClient.class中的HeartbeatThread做心跳检测,renew方法做刷新实例信息:发送心跳。如果返回404,代表没注册,则进入注册流程调用renew方法里的register方法进行注册。
Q:服务中心怎么接收注册请求?
A:在eureka服务中通过rest接口接收注册请求,其中请求部分是通过jersey这个框架实现的rest接口(其中jersey的path参数就相当于springmvc中的requestmapping,spring cloud 集成eureka server原生包中的Jersey RESTful接口 ),接受注册请求以后通过InstanceRegistry.class中的register方法进行注册操作,在该方法中需要注意到的是文章开始所提到的isReplication参数的作用(解决eureka之间同步时循环复制)。
Q:服务中心怎么存储注册信息?
A:存储在AbstractInstanceRegistry的registry中,该变量是一个ConcurrentHashMap类型的。
Q:服务中心自身是怎么实现高可用的?
A:p2p的方式(peer2peer) 对等(无中心化)eureka server实例
Q:服务集群之间怎么同步信息?如何去重?
A:eurekaserver初始化时,维护了一个PeerEurekaNodes.peerEurekaNodes列表该列表保存的是集群节点信息,
当有更新的时候通过PeerAwareInstanceRegistryImpl中的replicateToPeers方法遍历所有节点,并传播信息防止循环复制
isReplication参数。
- spring cloud之eureka
- spring cloud 之eureka-server
- spring cloud服务发现之Eureka
- Spring Cloud之Eureka集群搭建
- spring cloud放弃系列之--2-eureka
- Spring Cloud Netflix之Eureka Doc Translation
- Spring Cloud Netflix之Eureka Client Configuration
- 集群之 -- spring cloud eureka 集群代码
- spring cloud之Eureka Server环境搭建
- Spring Cloud 之 Spring Cloud Eureka(四)
- spring cloud-eureka
- Spring-cloud Eureka 集群
- spring cloud eureka
- Spring Cloud Eureka
- Spring Cloud Netflix Eureka
- Spring Cloud Eureka详解
- Spring Cloud Eureka
- Spring Cloud Eureka
- 利用JS实现局部刷新验证码(非Ajax)
- 剑指offer之十五---合并两个排序的链表
- Oracle10g中默认用户和密码,以及登陆身份区别
- 面经
- 3分钟了解什么是区块链
- spring cloud之eureka
- Java学习笔记之需要注意的基础知识点
- 第一次作为面试官的感悟
- 线性表的链式存储
- 剑指offer之十四---反转链表
- 单链表是否有环以及环的切点
- SNS是什么?有哪些类型的SNS网站?
- 单链表翻转
- SolrException: Index locked 和 Error opening new searcher 最终解决方案