当前位置: 首页 > news >正文

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

一、微服务的产生与特点

  • 单体应用存在的问题

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

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

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

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

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

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

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

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

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

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

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


二、微服务的优点

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

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

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


三、微服务的缺点

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

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

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


四、微服务设计原则

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

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

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

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

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

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


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

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

六、Spring Cloud 概述

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

七、Spring Boot 和 Spring Cloud 的关系

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

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

  • 服务调用方式基于 REST API

http://www.dtcms.com/a/506908.html

相关文章:

  • YOLOv4:目标检测领域的 “速度与精度平衡大师”
  • agent设计模式:第二章节—路由
  • 玩转Docker | 使用Docker安装uptime-kuma监控工具
  • flutter开发小结
  • 【运维】鲲鹏麒麟V10 操作系统aarch64自制OpenSSH 9.8p1 rpm包 ssh漏洞修复
  • react学习(五) ---- hooks
  • 【C语言】程序的编译和链接(基础向)
  • 基于单片机的热量计测量系统设计
  • 显卡功能及原理介绍
  • 丽水网站建设明恩玉杰百度网址导航
  • 时序数据库选型指南:从大数据视角看IoTDB的核心优势
  • 免费域名网站的网站后台用什么做
  • HTML应用指南:利用GET请求获取全国沃尔沃门店位置信息
  • WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
  • 『 QT 』信号-槽 补充: Qt信号槽断开连接与Lambda槽技巧
  • 为何海尔洗衣机屡屡发明新品类?
  • 【案例实战】HarmonyOS应用性能优化实战案例
  • 企业网站建设尚未实现宣传功能交互效果好的移动端网站
  • 10m带宽做下载网站深圳一公司今年新成立16家核检机构
  • 优麒麟(Ubuntu Kylin) 安装向日葵远程工具/ToDesk
  • 速卖通新号优惠券采购:自养号效率提升的安全要点
  • Linux InfiniBand代理模块深度解析:管理数据包的高效处理引擎
  • 开源协作2.0:GitHub Discussions+AI重构开发者社区的知识共创生态
  • Linux01:基础指令与相关知识铺垫(一)
  • QueryWrapper - MyBatis-Plus的“查询条件构建器“
  • Linux外设驱动开发1 - 单总线驱动开发__dht11
  • 使用高性能流式的库SpreadCheetah来添加图片和合并表格单元
  • 建设银行网站建设情况免费招聘的网站
  • 手机上怎么做微电影网站徐州做网站谁家最专业
  • 【Mathematics】椭圆眼睛跟随鼠标交互中的仿射变换数学推导