《Spring Cloud与Docker微服务架构实战》第二版周立--笔记
1.1 单体应用架构存在的问题
一个war包包含的所以应用程序,称为单体应用,对应着单体架构。单体的UI和若干业务模块被包含在一个war包中,扩展时只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。并且单体应用往往使用统一技术平台解决所有问题,引入新框架或新技术非常困难。
以电影售票系统为例,电影售票系统单体架构示意图:
随着业务需求的发展,功能逐渐增多,单体架构很难满足业务快速变化的需要,为了解决单体架构存在的问题,引入了微服务架构。
1.2 什么是微服务
微服务架构是一种将单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,一个微服务只关注一个特定功能,如订单管理,用户管理等,这些微服务可以进行通信并被集中式管理,服务可用不同语言开发,使用不同数据存储技术。
以电影售票系统为例,电影售票系统微服务架构示意图:
1.3 微服务架构的优点与挑战
微服务架构的优点
易于开发和维护:微服务单一职责
单个微服务启动较快
局部修改容易部署:修改某个微服务,部署某个微服务,不像单体应用,牵一发而动全身。
技术栈不受限
按需伸缩:可根据需求,实现细粒度扩展。
微服务架构的挑战
运维要求高:需要保证所有微服务的正常协作运行。
分布式固有复杂性:使用微服务构建的是分布式系统。
接口调整成本高:微服务之间通过接口进行通信,若修改某一个微服务的API,使用该接口的微服务可能都得做调整。
重复劳动:一些小的功能不足以作为一个微服务,但需要重复使用。
1.4 微服务设计原则
单一职责原则:一个微服务只负责一个功能。
服务自治原则:每个微服务具备独立的业务能力,依赖与运行环境。
轻量级通信机制:微服务之间的交互。
微服务粒度:合理划分微服务。
1.5 如何实现微服务架构
微服务的交付不仅需要开发框架的支持,还需要一些自动化的部署工具。
开发框架:Spring Cloud、Dubbo等。
运行平台:微服务可部署在PC Server、阿里云、AWS等云计算平台
微服务架构图及常用组件
单一职责原则:一个微服务只负责一个功能。
服务自治原则:每个微服务具备独立的业务能力,依赖与运行环境。
轻量级通信机制:微服务之间的交互。
微服务粒度:合理划分微服务。