1.1传统的单体应用
随着业务的发展,功能的增加,单体项目将变得越来越臃肿,同时一个bug可能导致整个应用瘫痪。
用户量上升,系统压力增大,单一模块可能使用频率较高,此时需要对模块进行扩展,多部署几个节点,使用Nginx做负载均衡,但是每个子系统前面都要做负载均衡,太麻烦了,因此需要进一步优化
微服务架构演变:小公司——》大集团——》拆分的多个子公司
每个子公司都有自己的独立业务,互不影响,需要时相互扶持
1.2微服务的优缺点
优势:
- 敏捷开发:便于单个服务的修改发布
- 职责单一:专门团队负责专门服务,利于分工
- 独立部署,耦合性低
- 快速启动:代码量少
- 精准扩容:某个服务访问量大时,将这个服务单独扩容即可
- 代码复用:基础服务可进行抽离,通过接口进行支持
开发——》部署——》启动——》扩展
劣势:
- 调用复杂:之前模块调用都是在本地,模块独立部署后需要考虑网络问题,容错问题,调用关系等
- 独立的数据库:分布式事务问题
- 测试难度提升:服务和服务之间通过接口交互,接口修改会影响所有调用方
- 运维成本上升:服务越来越多,部署监控将变得越来越复杂
开发——》运维——》测试
1.3什么是SpringCloud
定义: SpringCloud是用于构建微服务开发和治理的框架集合
Spring Cloud是一系列框架的有序集合。它利用springboot的开发便利,巧妙地简化了分布式系统基础设施的开发,如服务注册,服务发现,配置中心,负载均衡,断路器,网关,数据监控,消息总线等
模块介绍:
- Eureka: 服务注册中心,用于服务管理。
- Ribbon: 基于客户端的负载均衡组件。
- Hystrix: 容错框架,能够防止服务的雪崩效应。
- Feign: Web服务客户端,能够简化HTTP接口的调用。
- GetWay: API网关,提供路由转发、请求过滤等功能。
- Config: 分布式配置管理。
- Sleuth: 服务跟踪。
- Stream: 构建消息驱动的微服务应用程序的框架。
- Bus: 消息代理的集群消息总线。