64 基于Spring Cloud的微服务架构
你好,我是周志明。
直到现在,由不同编程语言、不同技术框架所开发的微服务系统中,基于Spring Cloud的解决方案仍然是最主流的选择。这个结果既是Java在服务端应用所积累的深厚根基的体现,也是Spring在Java生态系统中统治地位的体现。
而且,从Spring Boot到Spring Cloud的过渡,让现存数量非常庞大的、基于Spring和Spring Boot的单体系统可以平滑地迁移到微服务架构中,让这些系统的大部分代码都能够无需修改,或少量修改即可保留重用。
在微服务时代的早期,Spring Cloud就集成了Netflix OSS(以及Spring Cloud Netflix进入维护期后对应的替代组件)这种成体系的微服务套件,基本上也能算“半透明地”满足了在微服务环境中,必然会面临的服务发现、远程调用、负载均衡、集中配置等非功能性的需求。
不过,我个人是一直不太倾向于Spring Cloud Netflix这种,以应用代码去解决基础设施功能问题的“解题思路”。因为以自顶向下的视角来看,这既是虚拟化的微服务基础设施完全成熟之前,必然会出现的应用形态,也是微服务进化过程中必然会被替代的过渡形态。
不过,我的看法如何并不重要,基于Spring Cloud Netflix的微服务在当前就是主流,甚至直到未来不算短的一段时间内仍然都会是主流。而且从应用的视角来看,能自底向上地观察基础设施在微服务中面临的需求和挑战,能用我们最熟悉的Java代码来解释分析问题,也有利于深入理解微服务的整体思想。所以,把它作为我们了解的第一种微服务架构的实现,我认为是十分适合的。