微服务架构的优缺点
微服务架构的优点
易于开发和维护
一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对比较简单,整个应用是由若干个微服务构建而成,所以整个应用也会维持在可控状态。
单个微服务启动较快
单个微服务代码量较少,所以启动会比较快。
局部修改容易部署
单体应用只要有修改,就要重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
技术栈不受限
在微服务中,我们可以结合项目业务及团队的特点,合理地选择技术栈。例如某些服务可以使用关系型数据库 Mysql,有些服务可以使用非关系型数据库如 redis;甚至可根据需求,部分微服务使用 Java 开发,部分微服务使用 Node.js 开发。
按需伸缩
可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级 CPU 或者增加节点。
微服务架构的缺点
服务太多
服务太多,导致服务间的依赖错综复杂,运维难度大。
放大了分布式架构的系列问题
- 分布式事务(seata)
- 分布式锁怎么处理(redission)
- 服务注册与发现(nacos)
- 依赖服务不稳定(sentinel)导致服务雪崩
运维复杂度提升
运维复杂度陡增,部署数量多,监控进程多导致整体运维复杂度提升。
分布式固有的复杂性
使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟等都会带来巨大的挑战。
接口调整成本高
微服务之间通过接口进行通信。如果修改某一个微服务 API,可能所有使用该接口的微服务都需要调整。