微服务架构的思想,从互联网行业的技术圈子,逐渐蔓延到了传统行业,热度是越来越高。在它之前,流行的架构是‘一体化架构’。一体化,就意味着要将所有的软件组件统统装配起来,并且紧紧的打包在一个大容器里。
这样的架构,会有哪些问题呢?
- 首先,也是最需考虑的,就是,由于这是一个机械式的结构,无论哪一个功能不工作了,都会影响到整体,进而造成系统性故障,本质上看,不够可靠。
- 其二,无法灵活的扩展,因为是一体化应用,所有无法采纳多种技术进行构建,若是想扩展或升级,总是需要重新构建整个系统。
- 其三,持续集成会受到严重阻碍,若想让几个新功能同时构建和部署,几乎不可能。
以上三点原因,决定了一体化架构无法满足新时代的要求,也就是无法应对外部环境的快速变化,而让自身快速迭代、跟上时代的步伐。
机械式的结构,终将被自然选择所淘汰,有机式结构的新物种,登上舞台,必会壮大成为市场的主流。
微服务架构,就是一个有机式结构。它将应用打散,成为一系列小小的、按业务领域划分模块的自治服务。在这样的一个架构中,每个自治服务,都能实现自身单一的业务功能,而且自我包含(self-contained)。
微服务与微服务之间,在结构上呈现‘松耦合’的状态,宏观上看来,它们是一个‘统一’的整体,有着统一的权限管理、统一的安全策略、统一的上线过程、统一的日志和审计方法、统一的调度方式、统一的访问入口。
由此,经过有效的应用拆分,敏捷开发和部署得以实现。
开启微服务架构,我们首先需要一个基础的框架。
主流的框架有Dubbo和Spring Cloud,应该如何选择呢?
- 对比一:看在开源社区的活跃度
当我们碰到问题的时候,在社区寻求答案。社区越活跃,解决问题的速度,就会越快。这样在不断的积累下,框架会越来越完善。这是一个特别重要的点,可以为团队减少很多负担。在社区活跃度上,Spring Cloud要优于Dubbo。 - 对比二:再看文档质量
从背景上看,Dubbo是来自阿里巴巴的贡献,而不少科技公司的架构师来自阿里,所以它得以广泛应用。自然,Dubbo的中文文档尤其完善。Spring Cloud是Spring Source的产物,Netflix使其强大的后盾与背书。对于文档语言上,Dubbo对国内开发团队更友好。从体量上看,Spring Cloud由于整合了大量组件,体量比Dubbo大的多。Spring Cloud由于跌代快的原因,难免会出现不一致的情况。 - 对比三:看架构完整性
Dubbo自身实现了服务治理的基础,其他关键组件,需要找第三方开源来实现,比如:保证集群安全、可维护、可测试等等特性。而Spring Cloud下的子项目覆盖了微服务架构下的方方面面,它发扬了Spring Source整合一切的作风,也继承了Spring Boot简单配置、快速开发、轻松部署的特性,总之,解决方案的整体性会更强。
微服务的设计思想会影响越来越多的组织和团队。技术的进步,永无止境。孰优孰劣,时间会给出答案。