前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud(一)Eureka2.0

SpringCloud(一)Eureka2.0

作者头像
alexqdjay
发布2018-05-11 13:51:42
1K0
发布2018-05-11 13:51:42
举报
文章被收录于专栏:alexqdjayalexqdjay

SpringCloud简介

微服务是目前比较火热的概念,而SpringCloud又是实现微服务的框架中最热门之一。

严格来讲,SpringCloud是一个生态而不是一个框架,它由很多框架组件组合而成,而整个生态又是基于SpringBoot的基础上建立。

所以,跟SpringBoot一样给人的感觉就是方便、快捷、易用和强劲,非常方便地进行云端部署和容器化,总之好东西全占足了。

Eureka简介

"Eureka"是由于发现某种事物,尤其是问题答案而高兴。" Eureka, I got it!! "

跟它的字面意思很相近,在SpringCloud的生态圈里它担认【服务发现】 和【服务注册管理】

那它跟Zookeeper 有什么异同呢?

  • 相同的是,Zookeeper也是负责这类事务。
  • 不同的是,Zookeeper 初衷并不是要做“服务注册中心”的,它所要解决的问题是分布式存储的一致性,所以高可用并不是它首要关心的问题,因此,当它Leader丢失后重新选举Leader是一件非常耗时的操作,最主要的是在这期间整个Zk集群是停止响应的;Eureka 是专门为“服务发现注册”而生的,所以,它首要关注的是高可用性,至于服务状态的一致性其实并不保证的,“服务发现注册”对于一致性并不是很敏感,假如一个Client获取到的服务状态有延时那会有多大的影响呢?跟长时间无响应比还是九牛一毛的,而且基本上都有策略进行弥补。

Eureka2.0 Vs Eureka1.0

虽然,V2.0还在开发,但是它较V1.0的重大优化项早已放出,主要如下:

  1. 增加“服务关注”功能,V1.0中Client端没有权利选择自己关注的服务或者IP地址,所有的注册内容照单全收,譬如一个老师的Service,它可能只需要关心学生Service,对它来说警察Service跟它没有任何关系,这样的优化可以让服务更新减少很大的流量。
  2. 将poll的模式改为push,因为poll模式最大的缺点就是 “没改变时白拉,改变了有迟拉”,push的方式是一种比较自然的事件通知的方式。
  3. V1.0时使用的是广播全量数据复制的方式,它要求将所有状态数据和心跳都同步到配置的每个Peer上,这样每个Peer上都承担了相同的所有流量,对带宽的压力还是非常大的。V2.0开始将分为写集群和读集群,根据Client的数量和流量来动态扩展读集群(下面详细介绍)。

Eureka2.0

1. 架构

正如上面所述,2.0将根据功能分为读、写集群,读集群充当了一个“缓存层”的作用,写集群跟之前功能差不多,不同的是它负责将状态数据的变更推送给读集群而不是Client,并且它还存储了读集群的地址信息,所以当Client扩充时只需要动态扩充读集群就行了,而且一台读集群中的实例能服务很多Client,对于写集群无疑减少一个数量级的信息推送。多个集群之间可以做相互调用,地位跟Client一样。

2. Client注册

一个客户端Client可以连接多个服务实例, 每个实例维持独立的连接和心跳。

3. 库发现

当Client订阅完关心的服务后,后续的信息更新由读集群负责。

总结

总体来说V2.0做了翻天覆地的变化(架构方面,API应该不变),很容易就可以推测带的性能优化是显著的。

对于具体的实现和优化细节由于还没有看源码,所以描述不是很到位,希望后续能够补上,也欢迎各位留言补充和指正,不甚感谢!

参考

Github上的wiki

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringCloud简介
  • Eureka简介
  • Eureka2.0 Vs Eureka1.0
  • Eureka2.0
    • 1. 架构
      • 2. Client注册
        • 3. 库发现
        • 总结
        • 参考
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档