单体架构:软件设计中的经典三层模型架构,即表示层、业务逻辑层、数据访问层经典架构。
单体架构的缺点:
1、业务复杂,代码量增加,业务扩展代价大;
2、当用户增加,单体应用并发有限;
3、测试难度增加。
单体架构改进措施:使用服务器集群,增加复杂均衡器、缓存服务器、文件服务器、数据库读写分离。
单体架构改进后,仍存在的缺点:
1、大量代码导致可读性和可维护性降低;
2、海量数据导致数据库成为瓶颈;
3、持续交互能力差,代码多,新人熟悉代码时间长。
微服务
程序变成服务,服务根据业务能力划分和构建,服务可以使用不同的语言、不同的数据存储技术,服务使用Restful API 通信,服务可以通过自动化独立部署,服务集中化管理,是分布式架构,并具有熔断机制。
微服务架构的优势:
1、代码可读性增加,不需要了解所有业务代码;
2、具备横向扩展能力,可根据业务在拆分服务,可集群化部署;
3、服务之间没有耦合,微服务可以使用仍和开发语言和技术;
4、易于修改重写服务;
5、微服务之间独立,相互没有影响;
6、系统具备一定负载能力和容错能力。
微服务的不足:
1、复杂度高;
2、分布式系统不能同时满足数据强一致性、服务可用性和分区容错;
3、服务划分困难;
4、服务部署复杂。
微服务与SOA关系
SOA:面向服务的架构。微服务与SOA类似,是SOA的一种实现。
微服务的设计原则:
根据企业需求采用不同的技术。
1、业务单一时LAMP单体架构就可以满足需求;
2、随着业务发展改进单体架构如增加负载均衡服务器、缓存服务器、数据库读写分离、应用程序集群化部署;
3、业务继续扩展,则考虑使用分布式系统,微服务架构。