一、微服务特点
1•服务组件化
每个服务独立开发、部署,有效避免一个服务的修改引起整个系统重新部署。
2•技术栈灵活
约定通信方式,使得服务本身功能实现对技术要求不再那么敏感。
3•独立部署
每个微服务独立部署,加快部署速度,方便扩展。
4•扩展性强
每个微服务可以部署多个,并且有负载均衡能力。
5•独立数据
每个微服务有独立的基本组件,例如数据库、缓存等。
微服务架构图:
二、微服务的不足
- 沟通成本:每个组件不同的人或者不同的团队开发,需要一定的沟通成本
- 数据一致性:每个独立组件的数据,多个副本的数据一致性
- 运维成本:相比传统的单体应用只部署一个,微服务得部署几十个,涉及大量的配置,监控等
- 内部架构复杂性:分布式,每个组件间的通信问题,不同的数据库
三、单体架构优势和不足
1、优势
- 易于部署:部署只需部署一个包即可
- 易于测试:编写测试用例只需要一份即可
2、不足
- 代码膨胀,难以维护:随着业务的增长,代码量越来越多,可扩展、可维护性会很差
- 构建、部署成本大:每次构建都是全量的包,部署多套也不会提高并发性
- 新人上手难:业务越来越复杂,可读性、可维护性会大幅度下降,新手接手代码时间会很长