单体应用架构
在诞⽣之初,拉勾的⽤户量、数据量规模都⽐较⼩,项目所有的功能模块都放在一个工程中编码、编译、打包并且部署在一个Tomcat容器中的架构模式就是单体应用架构。
优点:
- 高效开发:项⽬前期开发节奏快,团队成员少的时候能够快速迭代
- 架构简单:MVC架构,只需要借助IDE开发、调试即可
- 易于测试:只需要通过单元测试或者浏览器完成
- 易于部署:打包成单⼀可执⾏的jar或者打成war包放到容器内启动
缺点: - 可靠性差: 某个应用Bug,例如死循环、内存溢出等, 可能会导致整个应用的崩溃
- 复杂性高: 以一个百万行级别的单体应用为例,整个项目包含的模块多、模块的边界模糊、 依赖关系不清晰、 代码质量参差不齐、 混乱地堆砌在一起。使得整个项目非常复杂。
- 扩展能力受限: 单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。例如,应用中有的模块是计算密集型的,它需要强劲的CPU; 有的模块则是IO密集型的,需要更大的内存。 由于这些模块部署在一起,不得不在硬件的选择上做出妥协。
垂直应用架构
为了避免上⾯提到的那些问题,开始做模块的垂直划分,做垂直划分的原则是基于拉勾现有的业务特性来做,核心目标标第⼀个是为了业务之间互不影响,第⼆个是在研发团队的壮⼤后为了提⾼效率,减少组件之间的依赖。
SOA应用架构
微服务应用架构
核心概念
Spring Cloud是什么
。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。Spring Cloud是一系列框架的有序集合(Spring Cloud是一个规范)
Spring Cloud解决什么问题
Spring Cloud核心组件
Spring Cloud体系结构
Spring Cloud与Dubbo对比
Dubbo效率更高,Spring Cloud生态更完善
案例需求与流程分析