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

    如下图:

    

 

posted @   欢乐豆123  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示