欢迎关注我的公众号:石杉的架构笔记(ID:shishan100)程序员
周一至周五早8点半!精品技术文章准时送上!面试
精品学习资料获取通道,参见文末算法
一、Eureka官宣2.x版本再也不开源数据库
二、互联网大厂的基础架构:自研服务注册中心缓存
三、中小公司的其余选择:Consul安全
以前写过一篇文章:拜托!面试请不要再问我Spring Cloud底层原理!,文章介绍了Spring Cloud微服务技术体系的一些基础知识和架构原理。性能优化
若是对Spring Cloud微服务技术体系有必定了解了以后,确定就知道Spring Cloud最开始原生支持和推荐的服务注册中心是国外的一个视频网站Netflix开源的Eureka。网络
这个Eureka呢,又分红了所谓的1.x版本和2.x版本,以前在国内比较经常使用在生产环境中的都是Eureka的1.x版本。架构
而后Netflix这个公司自己一直在作Eureka 2.x版本,结果作着作着,你们万众瞩目很期待的时候。。。并发
2018年7月,人家官方就忽然宣布Eureka 2.x中止开源计划了,具体以下:
用中文给你们翻译一下,这里的意思就是说:Eureka 2.0的开源工做已经中止了,若是你要用Eureka 2.x版本的代码来部署到生产环境的话,一切后果请自负。
大概就是这个意思,就是不打算把这个事儿作大作强下去了。
固然如今其实Eureka 1.x的版本也有很多公司在生产环境用,并且基本也还算能用的状态,基本功能还算正常,应付不少常规的场景也足够了。
可是现实就是这个声明发出来,让大伙都内心一凉,怎么感受这个这个Eureka有点不太靠谱了呢,咱还敢继续用么,没错,不少小伙伴就是这感受。
这里给你们说一句题外话,BAT、TMD等一线互联网公司,包括一些有必定研发实力的中大型互联网公司,都是自研了微服务技术架构中的服务注册中心。或者是基于开源的Eureka之类的项目来作二次开发,自行优化里面的架构,解决遇到的问题。
因此对于有基础架构团队的公司而言,这个问题相对来讲还没那么严重。
由于大厂的基础架构团队,彻底能够把常见的开源服务注册中心的源码都深刻看一遍,而后通过大量严谨的测试找到各个开源技术的优势和缺点。最后决定是从0开始自研一个服务注册中心,仍是说基于某个开源的技术来进行二次开发和优化。
好比说Eureka 1.x做为一个服务注册中心,有一个很是典型的架构问题。
虽然他能够部署集群架构,可是集群中每一个Eureka实例都是对等的。每一个Eureka实例都包含了所有的服务注册表,每一个Eureka实例接收到了服务注册/下线等请求的时候,会同步转发给集群中其余的Eureka实例,实现集群数据同步。
你们看下面的图,大概就是一个示意。
那么这里就有一个问题了:若是是支持超大规模的服务集群,这样的模式能行么?
每台机器的内存是有限的,集群里的服务数量愈来愈多,可能有几十万个服务实例在运行,那么服务注册表愈来愈大,最后超过单机内存支撑的极限怎么办?
这个时候若是本身研发服务注册中心,就能够参考大数据领域的Hadoop的架构思想。
Hadoop的设计思想是把注册表分片存储,分布式存储在多台机器上,每台机器存储部分注册表数据。
而后每一个Server能够加上一个从节点作热备份,避免单机挂掉致使注册 表数据丢失。
咱们来看看架构图,以下所示:
实际在生产环境使用Eureka的时候,你还会碰到不少现实的问题。
好比说上面讲了,Eureka自己是基于简单的同步机制实现集群架构的,可是这里在集群之间进行同步的时候,实际上是异步进行的,采用的是最终一致性的协议。
这就可能会致使说,你某个服务注册到了一个Eureka Server实例上去,可是他须要异步复制到其余的Eureka Server,这中间是须要时间的。
因此可能致使其余的Eureka Server是看不到那个刚新注册的服务实例的。
你们看下面的图,就示意了这个问题:
可是若是是采起了相似Hadoop的那种数据分片思想的话,一个注册表数据分片就在一台机器上,由这台机器负责提供服务的注册和发现,那么此时就能够实现强一致的效果。
也就是说,只要你注册了,立马就会被别人发现,以下图。
这里只是说其中几个例子罢了,改造开源系统的思路是不少的,实际上大厂彻底能够对开源技术作不少的自研、定制和改造,解决线上的生产问题,让服务注册中心朝着他们内心指望的效果去发展,因此对他们来讲其实问题并不大。
只是对于不少中小型公司而言,可能自己没有基础架构团队的支撑,或者是没有过多的人力物力投入到自研中间件、开源系统二次开发中去。
那么此时就能够考虑选择其余的开源服务注册中心的技术了,好比Spring Cloud一样支持的Consul就是目前不少公司的选择。
这儿我们简单介绍一下Consul,后面能够考虑再写文章介绍介绍Consul的架构原理和使用什么的,你们看一下,能够做为一个服务注册中心技术选型的参考:
其实说实话,在作技术选型的时候,很是关键的一点,就是看社区是否活跃。
因此虽然上面说了不少,可是其实你们彻底能够看一眼下面的Eureka Github和Consul Github的更新活跃度的对比。
咱们明显会发现,Eureka 1.x版本最近的更新都在几个月前甚至几年前,可是Consul最近的更新不少都是几天前的。
因此自己Spring Cloud官方技术栈也是支持Consul的,Eureka开源社区慢慢再也不活跃以后,天然不少中小公司开始选择使用功能更增强大,并且社区更新也更加活跃的Consul做为服务注册中心了,这也是一个不错的选择。
End
(封面图源网络,侵权删除)
扫描下方二维码,备注:“资料”,获取更多“秘制” 精品学习资料
若有收获,请帮忙转发,您的鼓励是做者最大的动力,谢谢!
一大波微服务、分布式、高并发、高可用的原创系列文章正在路上
欢迎扫描下方二维码,持续关注:
石杉的架构笔记(id:shishan100)
十余年BAT架构经验倾囊相授
推荐阅读:
二、【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
三、【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
六、大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问
七、【性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍
九、【坑爹呀!】最终一致性分布式事务如何保障实际生产中99.99%高可用?
十一、【眼前一亮!】看Hadoop底层算法如何优雅的将大规模集群性能提高10倍以上?
1六、亿级流量系统架构之如何设计全链路99.99%高可用架构
1八、大白话聊聊Java并发面试问题之volatile究竟是什么?
1九、大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?
20、大白话聊聊Java并发面试问题之谈谈你对AQS的理解?
2一、大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?
2二、大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化
2三、互联网公司的面试官是如何360°无死角考察候选人的?(上篇)
2四、互联网公司面试官是如何360°无死角考察候选人的?(下篇)
2五、Java进阶面试系列之一:哥们,大家的系统架构中为何要引入消息中间件?
2六、【Java进阶面试系列之二】:哥们,那你说说系统架构引入消息中间件有什么缺点?
2七、【行走的Offer收割机】记一位朋友斩获BAT技术专家Offer的面试经历
2八、【Java进阶面试系列之三】哥们,消息中间件在大家项目里是如何落地的?
2九、【Java进阶面试系列之四】扎心!线上服务宕机时,如何保证数据100%不丢失?
30、一次JVM FullGC的背后,竟隐藏着惊心动魄的线上生产事故!
3一、【高并发优化实践】10倍请求压力来袭,你的系统会被击垮吗?
3二、【Java进阶面试系列之五】消息中间件集群崩溃,如何保证百万生产数据不丢失?
3三、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?
3四、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?
3五、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?
3七、亿级流量系统架构之如何保证百亿流量下的数据一致性(上)
3八、亿级流量系统架构之如何保证百亿流量下的数据一致性(中)?
3九、亿级流量系统架构之如何保证百亿流量下的数据一致性(下)?
40、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(1)
4一、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(2)
4三、高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?
4五、从团队自研的百万并发中间件系统的内核设计看Java并发性能优化
4六、【非广告,纯干货】英语差的程序员如何才能无障碍阅读官方文档?
4七、若是20万用户同时访问一个热点缓存,如何优化你的缓存架构?
4八、【非广告,纯干货】中小公司的Java工程师应该如何逆袭冲进BAT?
50、【金三银四跳槽季】Java工程师如何在1个月内作好面试准备?
5一、【offer收割机必备】我简历上的Java项目都好low,怎么办?
5二、【offer去哪了】我一连面试了十个Java岗,通通石沉大海!