大型分布式系统具有复杂性、隐匿性、配合性和易变性四大难题,不会存在任何单一软件工程上的突破,能让开发生产力得到一个数量级上的提升。
1、单体架构应用的困境
一个典型的单体架构应用就是将一个应用中所有的功能都打包在一个WAR文件中,并部署在应用服务器(Tomcat)中运行。
单体架构应用会逐渐变得不稳定,一方面是系统不管增长的复杂性造成的,另一方面是由于系统本身牵一发而动全身的特性造成的,可能一不注意,不常用的模块因为存在内存泄露而造成整个服务无法正常提供服务,甚至引起服务崩溃。
在数据管理上单体架构应用容易产生漏洞,最常见的就是数据管理,在数据层通过写SQL语句操纵数据库表。这种做法相当于埋下不定时炸弹。当数据相关团队修改了数据库结构,由于之前的团队之间使用SQL语句进行处理,在系统编译、打包和测试时都有可能通过,但当在真实的生产环境使用时就有可能造成服务的崩溃(我自己本身已经经历过很多次)。
单体架构的应用在开发时要求我们必须使用同一个技术栈,使得单体架构的应用很难接受或切换到其他框架、语言。
单体架构应用开发对于开发者来说,需要了解更多的东西,如系统架构、统一的开发模式、与之交互的相关模块等,造成了一个新加入的开发者需要更长的时间才能够进行开发状