Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念、优缺点和适用场景,想要深入的了解,还需要投入更多的时间。
分布式架构和单体应用架构相比,可以充分利用多机器的性能优势,提高了系统的高可用性,越来越多的企业选择转向分布式架构,但是从单体架构转向分布式架构,会有哪些难点呢?
标准化难度高
大部分企业的系统很多,比如我们单位目前就有七百多个系统,首先就是标准化的问题。开发语言、中间件、数据库、通讯协议、数据格式都不统一,不同的语言就会有不同开发、测试、运维的流程标准,增加了开发、运维各个环节的复杂度。
比如老系统大多数都采用WebService+XML的接口,新系统大多都是Restful+JSON,这种就很难统一,那么也就增加了监控、服务调度的难度。
服务依赖性问题
单体应用架构中,机器挂了整个系统就挂了,在分布式架构下,也会有类似的问题,因为我们的系统,大多数时候都是有依赖的;A->B,C->B,如果B挂了,A和C实际上也是不能工作的。
如果非关键业务被关键业务依赖,那么非关键业务也就变成了关键业务。
很多企业做分布式改造的时候,只对服务进行了拆分,但是并没有拆分数据库,这也是很危险的,因为非关键业务把库拖垮了,依赖这台数据的关键业务同样也Down掉了。
故障概率更大、运维复杂
因为分布式架构下,应用更多,机器更多,所以故障率一定会比单体架构要高。
而且在分布式架构中,一次线上问题的排查,会涉及N多个应用,所以问题的排查和解决时间会比较长。
故障无法避免,好的分布式架构,都需要考虑减轻故障影响面,有自动化的方式监控、甚至恢复故障。