SpringCloud微服务系列- 微服务架构进化论
SpringCloud微服务系列-微服务架构进化论
一、微服务架构进化论
1. 单体应用阶段
所有功能模块和组件都在一个单一的代码库中构建和部署。整个应用程序作为一个整体进行开发、测试和部署。
2. 垂直应用阶段(nginx负载均衡)
垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构。
我们以一个简单的电商项目为例,假设我们的业务分为用户、订单、商品、后台4个模块,我们现在要把这4个模块分别剥离出来,各自构成独立的web项目。
单个请求的处理速度上下降了。
现在假设用户模块以集群的方式部署在机器A和机器B,订单模块部署在机器C、D、E,用户如何查询自己的订单?
那么各模块相互调用成了问题。
最后我们简单总结一下垂直拆分的优缺点。
1)优点
- 系统之间的模块相互独立,从业务的角度上降低了耦合度;
- 可以针对不同的业务模块搭建集群,流量大的模块可以多部署几台机器,边缘模块甚至单机部署即可;
- 不同的模块可以由不同的团队负责,协同开发的影响降到最低
2)缺点
- 模块与模块之间相互调用变得复杂
- 模块越来越多,代码冗余
3. 分布式系统阶段
1)特点
分布式系统是指一个系统的不同部分分布在不同的计算节点上,可以是不同的物理机器或虚拟机。
它的目标是通过分布和并行处理来提高系统的性能、可靠性和可扩展性
2)需要处理的问题
- 分布式系统需要处理数据一致性问题,如 CAP 定理中的一致性、可用性和分区容忍性。
- 需要有协调机制来管理不同节点之间的状态和数据一致性。
4. 服务治理阶段
服务与服务之间的调用问题
服务治理(SOA)
服务总线:服务注册、调用、路由、事件框架
5. 微服务阶段
1)什么是微服务
将系统的业务功能划分为极小的独立微服务,每个微服务只关注于完成某个小的任务。系统中的单个微服务可以被独立部署和扩展,且各个微服务之间是高内聚、松耦合的。微服务之间采用轻量化通信机制来实现通信。
服务网关:前台 比如Spring Cloud Gateway
熔断机制:服务都是有限制的
工作效率监督:Sleuth,日志监控ELK
配置中心:应用配置、业务配置、缓存配置
2)微服务的拆分规范和原则
压力模型拆分
压力模型简单来说就是用户访问量,我们要识别出某些超高并发量的业务,尽可能把这部分业务独立拆分出来
压力模型拆解为三个维度:
- 高频高并发场景 (商品详情页)
- 低频突发流量场景(秒杀场景)
- 低频流量场景 (商品图文编辑)
业务模型拆分
业务模型拆分的维度有很多,我们在实际项目中应该总和各个不同维度做考量。这里主要从主链路、领域模型和用户群体三个维度。
1)主链路
在电商领域"主链路"是一个很重要的业务链条,它是指用户完成下单场景所必须经过的场景。比如商品搜索->商品详情页->购物车模块->订单结算->支付业务
核心主链路拆分,有以下几个目的:异常容错、调配资源、服务隔离
领域模型拆分
领域驱动设计DDD(Domain-Driven Design 领域驱动设计)
4. 用户群里拆分
根据用户群体做拆分,我们首先要了解自己的系统业务里有哪些用户,比如说电商领域,有2C的小卖家,也有2B的大客户
三、什么是Spring Cloud
Spring Cloud 是一个基于Spring Boot实现的微服务架构开发工具。
Spring Cloud 和 Netfix
Spring Cloud Alibaba
Springboot和SpringCloud
四、 如何学习Spring Cloud
可以概括为三大功能,两大特性
1. 两大特性:高可用性和高可扩展性
2. 三大功能是指微服务核心组件的功能维度。
具体是指:服务间通信,服务容错、异常排查,分布式能力建设
1)服务间通信: 服务治理、负载均衡、服务间调用
2)服务容错、异常排查: 流量整形、降级熔断、调用链追踪
3)分布式能力建设:微服务网关、分布式事务、消息驱动、配置管理
其中常见的组件包括:
服务注册发现:Eureka、Nacos、Consul、Zookeeper
统一配置管理:SpringCloudConfig、Nacos(阿里)、Apollo(携程)
服务远程调用:OpenFeign、Dubbo
统一网关路由:SpringCloudGateway、Zuul
服务链路监控:Zipkin、Sleuth、SkyWalking
流控、降级、保护:Hystrix、Sentinel、Resilence4j
如下图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)