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

一、微服务的产生与特点

  • 单体应用存在的问题

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

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

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

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

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

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

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

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

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

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

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


二、微服务的优点

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

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

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


三、微服务的缺点

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

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

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


四、微服务设计原则

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

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

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

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

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

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


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

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

六、Spring Cloud 概述

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

七、Spring Boot 和 Spring Cloud 的关系

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

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

  • 服务调用方式基于 REST API

相关推荐
LucDelton9 分钟前
Java 读取无限量文件读取的思路
java·运维·网络
夹锌饼干19 分钟前
mysql死锁排查流程--(处理mysql阻塞问题)
java·mysql
Lw老王要学习22 分钟前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
小信丶28 分钟前
@EnableTransactionManagement注解介绍、应用场景和示例代码
java·spring boot·后端
To Be Clean Coder36 分钟前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重
java·后端·spring
蓝队云计算42 分钟前
蓝队云部署OpenClaw深度指南:避坑、优化与安全配置,从能用做到好用
运维·安全·云计算
Kaede642 分钟前
提示dns服务器未响应,需要做哪些事?
运维·服务器
CRUD酱1 小时前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
-孤存-1 小时前
SpringBoot核心注解与配置详解
java·spring boot·后端
Jia ming1 小时前
内存架构解析:UMA与NUMA对比
架构