Spring Cloud学习记录:
大纲:
- Spring Cloud应用场景
- Spring Cloud简介
- Spring Cloud应用
- Spring Cloud限制
一、应用场景
传统的架构使用:单体架构。而分布式架构使用:微服务架构。
1.单体架构说明:
1.1什么是单体架构?
在我们开发一个项目时,一个归档包(例如war包)包含了该项目的所有功能的应用,称为单体应用。架构单体应用的方法论,我们称之为单体应用架构。
1.2单体架构优点和缺点
优点:
1.为人所熟知
现有的大部分工具、应用服务器、框架和脚本都是这种应用程序;
2.IDE友好
像NetBeans、Eclipse、IntelliJ这些开发环境都是针对开发、部署、调试这样的单个应用而设计的;
3.便于共享
单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享;
4.易于测试
单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试过程,因为没有额外的依赖,每项测试都可以在部署完成后立刻开始;
5.容易部署
只需将单个归档文件复制到单个目录下。
缺点:
1. 复杂性高
整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,混乱地堆砌在一起……整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。
2. 技术债务
随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。“不坏不修(Not broken,don’t fix)”,这在软件开发中非常常见,在单体应用中这种思想更甚。已使用的系统设计或代码难以修改,因为应用程序的其他模块可能会以意料之外的方式使用它。
3. 部署频率低
随着代码的增多,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。全量部署的方式耗时长、影响的范围大、风险高,这使得单体应用项目上线部署的频率较低。而部署频率低又导致两次发布之间会有大量的功能变更和缺陷修复,出错概率比较高。
4. 扩展能力受限
单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。例如,应用中有的模块是计算密集型的,它需要强劲的CPU;有的模块则是IO密集型的,需要更大的内存。由于这些模块部署在一起,我们不得不在硬件的选择上做出妥协。
5. 阻碍技术创新
单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和框架,想要引入新的框架或技术平台会非常困难。例如,一个使用Struts 2构建的、100万行代码的单体应用,如果想要换用Spring MVC,切换成本无疑是非常高的。
2.微服务架构说明:
2.1