微服务架构Spring Cloud学习笔记1——基本概念

SpringCloud是一种基于云原生思想的微服务开发模板,提供了配置管理、服务发现、断路器、智能路由等组件。它基于SpringBoot,简化了微服务架构的开发过程,包括SpringCloudConfig、SpringCloudBus、SpringCloudNetflix组件如Eureka、Hystrix、Ribbon、Feign、Zuul等。

基本概念

  • Spring Cloud是一种微服务开发模板,模板中包含了许多常用组件,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线等,Spring Cloud基于云原生的思想
  • 云原生(Cloud Native)是一种软件开发风格,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。Cloud Native既包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,重组等)。Cloud Native也可以说是一系列Cloud技术、企业管理方法的集合
  • Spring Cloud是基于Spring Boot的, 用于管理Spring Boot创建的各个微服务应用
  • Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式

Spring Cloud Config

  • spring cloud config是分布式配置中心组件
  • 在分布式系统中,每一个功能模块都能拆分成一个独立的服务,一次请求的完成,可能会调用很多个服务协调来完成
  • spring cloud config支持配置文件放在在配置服务的内存中,也支持放在远程Git仓库里
  • config server用来管理所有的配置文件,维护的时候需要更改配置时,只需要在本地更改后,推送到远程仓库,所有的服务实例都可以通过config server来获取配置文件,为了保证系统的稳定,配置服务端config server可以进行集群部署
  • 每个服务实例向config server获取配置文件,相当于配置服务的客户端config client
  • 别人的架构图
    在这里插入图片描述

Spring Cloud Bus

  • Spring cloud bus通过轻量消息代理连接各个分布的节点
  • 作用是管理和传播所有分布式项目中的消息
  • 其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ
  • 别人的架构图
    在这里插入图片描述

Spring Cloud Netflix

针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka

  • Eureka是服务发现组件

参考什么是服务发现

  • 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步
  • 当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取
  • 当Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态
  • 服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例
  • 别人的架构图
    在这里插入图片描述

Netflix Hystrix

  • 容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力
  • 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。为了解决这个问题,业界提出了断路器模型(引用)
  • 当失败的请求达到一个阈值(默认5秒失败20次),断路器生效,在一段时间内,所有尝试调用这个service的请求都会立即失败。在时间窗口过期后,断路器允许一小部分请求过去验证service是否已经恢复正常
  • 别人的逻辑图
    在这里插入图片描述

Netflix Ribbon

  • 主要功能是提供客户端的软件负载均衡算法
  • Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等
  • 别人的架构图
    在这里插入图片描述

Netflix Feign

  • Feign是spring cloud中的调用框架,通常与ribbon,hystrix等组合使用
  • 参考文章

Netflix Zuul

  • zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用
  • zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架
  • Zuul做为网关层,自身也是一个微服务,跟其它服务Service-1,Service-2, … Service-N一样,都注册在eureka server上,可以相互发现,同时又以服务名为ContextPath的方式创建路由映射
    在这里插入图片描述
  • zuul的核心是一系列的filters
  • zuul把Request route到 用户处理逻辑 的过程中,这些filter参与一些过滤处理,比如Authentication,Load Shedding等
  • 别人的架构图
    在这里插入图片描述
    参考文章

Netflix Archaius

  • archaius是基于java的配置管理类库,主要用于多配置存储的动态获取
  • 在云平台开发中可以将其用作分布式配置管理依赖构件
  • 能够实现动态类型化属性、配置改变时的回调机制、轮询框架、JMX,通过Jconsole检查和调用操作属性
    组合配置
  • 别人的架构图
    在这里插入图片描述

Spring Cloud Sleuth

  • Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了Dapper,Zipkin和HTrace操作
  • Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它
  • Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace
  • Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束
    • cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
    • sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟
    • ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间
    • cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间
  • 架构图
    在这里插入图片描述
  • 案例

Spring Cloud Data Flow

  • Spring Cloud DataFlow用于开发和执行大范围数据处理包括ETL、批量计算和持续计算的统一编程模型和托管服务
  • 开发者可以通过Spring Cloud DataFlow,在数据获取、实时分析、批处理等常见用例中执行数据流的创建和编排
  • 参考文档

Spring Cloud Security

  • 安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
  • 参考文档

Spring Cloud Consul

  • 封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成
  • 各种服务发现工具的比较
    在这里插入图片描述
    参考文档

Spring Cloud Zookeeper

  • 操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现
  • ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能
  • 参考文档

Spring Cloud Stream

  • Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架
  • 他通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动
  • 目前仅支持RabbitMQ、Kafka、Redis
  • 应用通过Spring Cloud Stream插入的input和output通道与外界交流
    在这里插入图片描述
  • 参考文章

Spring Cloud CLI

  • 提供命令行工具
**项目概述:** 本资源提供了一套采用Vue.jsJavaScript技术栈构建的古籍文献文字检测识别系统的完整源代码及相关项目文档。当前系统版本为`v4.0+`,基于`vue-cli`脚手架工具开发。 **环境配置运行指引:** 1. **获取项目文件**后,进入项目主目录。 2. 执行依赖安装命令: ```bash npm install ``` 若网络环境导致安装缓慢,可通过指定镜像源加速: ```bash npm install --registry=https://registry.npm.taobao.org ``` 3. 启动本地开发服务器: ```bash npm run dev ``` 启动后,可在浏览器中查看运行效果。 **构建部署:** - 生成测试环境产物: ```bash npm run build:stage ``` - 生成生产环境优化版本: ```bash npm run build:prod ``` **辅助操作命令:** - 预览构建后效果: ```bash npm run preview ``` - 结合资源分析报告预览: ```bash npm run preview -- --report ``` - 代码质量检查自动修复: ```bash npm run lint npm run lint -- --fix ``` **适用说明:** 本系统代码经过完整功能验证,运行稳定可靠。适用于计算机科学、人工智能、电子信息工程等相关专业的高校师生、研究人员及开发人员,可用于学术研究、课程实践、毕业设计或项目原型开发。使用者可在现有基础上进行功能扩展或定制修改,以满足特定应用场景需求。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【EI复现】基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度(Matlab代码实现)内容概要:本文介绍了基于阶梯碳交易机制的虚拟电厂优化调度模型,重点研究了包含P2G-CCS(电转气-碳捕集封存)耦合技术和燃气掺氢技术的综合能源系统在Matlab平台上的仿真代码实现。该模型充分考虑碳排放约束阶梯式碳交易成本,通过优化虚拟电厂内部多种能源设备的协同运行,提升能源利用效率并降低碳排放。文中详细阐述了系统架构、数学建模、目标函数构建(涵盖经济性环保性)、约束条件处理及求解方法,并依托YALMIP工具包调用求解器进行实例验证,实现了科研级复现。此外,文档附带网盘资源链接,提供完整代码相关资料支持进一步学习拓展。; 适合人群:具备一定电力系统、优化理论及Matlab编程基础的研究生、科研人员或从事综合能源系统、低碳调度方向的工程技术人员;熟悉YALMIP和常用优化算法者更佳。; 使用场景及目标:①学习和复现EI级别关于虚拟电厂低碳优化调度的学术论文;②掌握P2G-CCS、燃气掺氢等新型低碳技术在电力系统中的建模应用;③理解阶梯碳交易机制对调度决策的影响;④实践基于Matlab/YALMIP的混合整数线性规划或非线性规划问题建模求解流程。; 阅读建议:建议结合提供的网盘资源,先通读文档理解整体思路,再逐步调试代码,重点关注模型构建代码实现之间的映射关系;可尝试修改参数、结构或引入新的约束条件以深化理解并拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值