Spring Cloud - Spring Cloud 微服务概述 (微服务的产生与特点、微服务的优缺点、微服务设计原则、微服务架构的核心组件)

一、微服务的产生与特点

  • 单体应用存在的问题

    • 随着业务的发展,开发变得越来越复杂

    • 修改、新增某个功能,需要对整个系统进行测试,重新部署

    • 一个模块出现问题,很可能导致整个系统的崩溃

    • 多个团队同时对数据进行管理,容易产生安全漏洞

    • 各个模块使用同一种技术框架,局限性太大,很难根据业务选择最适合的技术架构

    • 模块内容太复杂,如果员工离职,可能需要很⻓时间才能完成任务交接

  • 为了解决上述问题,微服务架构应运而生,简单来说,微服务就是将一个单体应用拆分成若干个小型服务,是协同完成系统功能的一种架构模式,在系统架构层面进行解耦合,将一个复杂问题拆分成若干个简单问题

  • 这样的好处是对于每一个简单问题,开发、维护、部署的难度就降低了很多,可以实现自治,可以自主选择最适合的技术框架,提高了项目开发的灵活性

  • 微服务架构不仅是简单的拆分,拆分之后的各个微服务之间还要进行通信,否则就无法协同完成需求

  • 微服务之间只需要制定统一的协议即可,至于每个微服务使用什么技术框架来完成,统统不需要关心

  • 这种松耦合的方式使得开发、部署都变得更加灵活,同时系统更容易扩展,降低了开发、运维的难度


二、微服务的优点

  • 各个服务之间实现了松耦合,彼此之间不需要关注对方是用什么语言,什么技术开发,只需要保证自己的接口可以正常访问,并能通过标准协议访问其他接口即可

  • 各个微服务之间独立自治,只需要专注于做好自己的业务,开发和维护不会影响到其他的微服务

  • 微服务是一种去中心化的架构方式,相当于用零件拼接一台机器,如果某个零件出现问题,可以随时进行替换从而保证机器的正常运行


三、微服务的缺点

  • 如果某个系统的远程调用出现问题,导致微服务不可用,就有可能产生级联反应,造成整个系统的崩溃

  • 如果某个需求需要调用多个微服务,如何来保证数据的一致性是一个问题

  • 相比较于单体应用,微服务的学习难度会增加,对于新加入团队的员工来讲,如何快速掌握上手微服务架构是一个问题


四、微服务设计原则

  • 从大到小,提炼出核心需求,搞清楚服务间的交互关系,先拆分成粒度较大的服务,然后再根据具体的业务需求逐步细化服务粒度,最终形成一套合理的微服务系统架构

  • 服务粒度不能太小也不能太大,需要根据服务间的交互关系找到最合理的服务粒度

  • 各个微服务的功能职责尽量单一,避免出现多个服务处理同一个需求

  • 各个微服务之间要相互独立、自治(自主开发、自主测试、自主部署、自主维护)

  • 需要保证数据的独立性,各个微服务独立管理其业务模型下的数据

  • 使用 RESTful 协议完成微服务之间的协作任务,数据交互采用 JSON 格式,方便调用与整合


五、微服务架构的核心组件

核心组件 说明
服务治理 服务注册:针对提供服务的服务提供者 服务发现:调用服务的叫做服务消费者
服务负载均衡 处理高并发
服务网关 为客户端提供统一的入口
微服务容错机制 防止级联反应
分布式配置 统一管理配置文件
服务监控 -

六、Spring Cloud 概述

  • Spring Cloud 基于 Spring Boot 使得整体的开发、配置、部署都非常方便,可以
    快速搭建基于微服务的分布式应用

七、Spring Boot 和 Spring Cloud 的关系

  • Spring Boot 可以快速搭建基础系统

  • Spring Cloud 在此基础上实现分布式系统中的公共组件,如服务注册、服务发现、配置管理、熔断器、控制总线等

  • 服务调用方式基于 REST API

相关推荐
それども3 小时前
忽略Lombok构建警告
java·开发语言·jvm
用户68545375977693 小时前
🎮 Java设计模式:从青铜到王者的代码修炼手册
java·后端
纪卓志George3 小时前
从 AWS 故障反思:广告系统的全球单元化部署
后端·架构
马尚道4 小时前
Java高手速成--吃透源码+手写组件+定制开发教程
java
我命由我123454 小时前
Spring Cloud - Spring Cloud 注册中心与服务提供者(Spring Cloud Eureka 概述、微服务快速入门、微服务应用实例)
java·spring boot·spring·spring cloud·微服务·eureka·java-ee
ZHE|张恒4 小时前
使用 Docker 容器测试端口开放性
运维·docker·容器
鼠鼠我捏,要死了捏4 小时前
微服务熔断降级方案对比:Hystrix、Resilience4j与Sentinel实践
微服务·熔断·resilience4j
MetaverseMan4 小时前
Java Spring 框架的`@Autowired` 注解 以及依赖注入分析
java·开发语言·spring
一吃就胖的4 小时前
【给服务器安装服务器安装nacos】
java·运维·服务器