Dubbo、SpringCloud 和 Kubernetes,是当前开发微服务的三个主流开源框架和平台。你随便在 GitHub 或者哪个 IT 技术媒体网站上搜一下,这三者肯定是 Top 关键字,在主流互联网公司的架构师面试中,这三者被问到的频率也极高。那这三个技术到底有何异同,分别适用于什么场景,该如何选择?
杨波,资深架构师,微服务技术专家。曾在拍拍贷担任基础架构研发总监,主导了拍拍贷的微服务升级改造,同时投入了很大资源进行容器云平台的研发,推动云原生技术在拍拍贷的试点和落地。
2012~2015 年,在携程担任框架资深架构师和研发总监,主导微服务核心中间件的研发和 SOA 体系建设,推动了携程微服务架构的升级改造。
更早之前,曾在 eBay 中国研发中心作为核心开发人员参与 eBay 开放 API 平台的研发工作。
作者回复: 弹性和容错,主要是针对服务调用,例如netflix的hystrix是一个典型的弹性容错库,可以保护服务调用和后台服务,流量过载时候,它可以限流,后台服务慢或者大量出错时,它会降级熔断,保护后台服务,同时保障用户体验,这样就给整个微服务系统提供了弹性和容错性。
伸缩(auto-scaling),主要是指服务器资源按需扩容缩容,比如有些业务场景具有明显的季节时间特性(例如饿了吗),有的时候用户访问量大,需要更多服务器资源,有的时候用户访问量小,需要更少的服务器资源,否则会有资源浪费,这个时候k8s这种具有资源自动伸缩的容器云平台就可以派上用场了。
作者回复: 加油!