-
SpringCloud组件
简介
- 什么是SpringCloud
- 概念
- 构建分布式系统不需要复杂和容易出错。
- SpringCloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。
- SpringCloud 构建于 SpringBoot 之上,使得开发者很容易入手并快速应用于生产中。
- 配置文件加载顺序
- bootstrap.yml > application.yml > application-dev(prod).yml
- 微服务的理解: 就是把一个项目拆分为多个项目, 项目之间进行独立运行, 通过Http或者Socket来进行通信处理数据和调用。
- SpringCloud的版本
- 概念
- 当然这个只是个题外话。
- 这些单词均为英国伦敦地铁站的站名。
- Angel、Brixton、Camden、 Dalston、Edgware、Finchley、Greenwich、Hoxton。
- SpringCloud组件
- 组件
- SpringCloud Eureka(注册中心)
- SpringCloud Config(配置中心)
- SpringCloud Feign(服务调用)
- SpringCloud Hystrix(熔断器)
- SpringCloud Zuul(网关)
- SpringCloud Ribbon(负载均衡)
- SpringCloud Bus(消息总线)
- SpringCloud Stream(消息驱动微服务)
- SpringCloud Sleuth(分布式服务跟踪)
- SpringCloud Shiro(安全权限控制)
组件
- SpringCloud Eureka (服务治理, 注册中心):
- 1.概念
- 服务治理: 服务治理是微服务架构中最为核心和基础的模块, 它主要用来实现各个微服务实例的自动化注册和发现。
- 服务注册: 在服务治理框架中, 通常都会构建一个注册中心, 每个服务单元向注册中心登记自己提供的服务, 包括服务的主机与端口号、服务版本号、通讯协议等一些附加信息。
- 2.区分
- 服务发现框架。心跳机制: 默认为90秒, 如果某个节点90秒之内没有想Eureka Server发送请求, 则会从服务注册表把这个节点移除。
- Eureka Server在运行期间, 会统计心跳失败的比例在15分钟之内是否低于85%, 低于则开启保护模式。
- 包含两个组件: Eureka Server、Eureka Client
- 3.使用步骤介绍
- 父 pom 引入 spring cloud版本
- tensquare_eureka 模块 pom.xml 引入 eureka-server
- 添加application.yml
- 启动类添加注解: @EnableEurekaServer
- 服务注册至: Eureka
- 将其他微服务模块添加依赖: eureka-client
- 修改每个微服务的application.yml, 添加注册eureka服务的配置
- 修改每个子模块启动类: @EnableEurekaClient
- SpringCloud Config (分布式, 配置中心):
- 1.概念
- 在分布式系统中, 每一个功能模块都能拆分成一个独立的服务, 一次请求的完成, 可能会调用很多个服务协调来完成。
- 为了方便服务配置文件统一管理, 更易于部署、维护, 所以就需要分布式配置中心组件了。
- 在Spring Cloud中, 有分布式配置中心组件Config, 它支持配置文件放在在配置服务的内存中, 也支持放在远程Git仓库里。
- 引入Config后, 我们的外部配置文件就可以集中放置在一个Git仓库里, 再新建一个Config Server, 用来管理所有的配置文件, 维护的时候需要更改配置时, 只需要在本地更改后, 推送到远程仓库, 所有的服务实例都可以通过Config Server来获取配置文件, 这时每个服务实例就相当于配置服务的客户端Config Client, 也可以部署负载均衡解决某个Config Service因某种原因不工作的情况。
- 2.区分
- 在分布式系统中, 由于服务数量巨多, 为了方便服务配置文件统一管理, 实时更新, 所以需要分布式配置中心组件。
- 分两个角色, 一是config server, 二是config client。
- 3.使用步骤介绍
- 添加依赖: spring‐cloud‐config‐server
- @EnableConfigServer //开启配置服务
- SpringCloud Feign (声明式, 服务调用):
- 1.概念
- Feign是一种声明式、模板化的HTTP客户端。
- 在Spring Cloud中使用Feign, 开发者完全感知不到这是远程方法, 更感知不到这是个HTTP请求。
- 2.区分
- 3.使用步骤介绍
- 问答 调用 基础
- 第一步: 在tensquare_qa模块添加依赖
- spring-cloud-starter-openfeign
- 第二步: 修改tensquare_qa模块的启动类, 添加注解
- @EnableDiscoveryClient【额内 bou】【抵死盖不瑞】
- @EnableFeignClients
- 第三步: 在tensquare_qa模块创建 com.tensquare.qa.client包, 包下创建接口
- 调用微服务模块的名称 不能使用下划线 类头上添加
- 注意: @PathVariable("id")要和"value="/label/{id}"保持一致
- 第四步: 修改tensquare_qa模块的 ProblemController
- 注入我们刚才定义好的接口方法
- @Autowired private LabelClient labelClient;
- 控制器代码
- @RequestMapping(value="/label/{id}",method = RequestMethod.GET)
- Result result = labelClient.findById(id);
- 第五步: 运行测试
- 第六步: 负载均衡
- 测试: 同时开启多个基础微服务,看是否是轮流调用。
- 基础模块添加标识: System.out.println("No.1");
- 启动基础微服务后,修改端口和输出信息,再次启动基础微服务。
- SpringCloud Hystrix (服务, 熔断器):
- 1.概念
- 雪崩效应: 在微服务架构中通常会涉及到多个服务层调用, 基础服务的故障可能会导致级联故障, 进而造成整个系统不可用的情况。
- 服务雪崩效应: 因 服务提供者 不可用导致 服务消费者 的不可用, 并将不可用逐渐放大的过程。
- 2.区分
- 雪崩效应
- 低于阀值会自动打开
- 3.使用步骤介绍
- 配合上面的Feign组件使用,定义调用基础服务模块的实现类,Feign 本身支持Hystrix,不需要额外引入依赖。
- returnnewResult(false, StatusCode.ERROR,"熔断器启动了");
- 修改LabelClient的注解:@FeignClient(value="tensquare‐base",fallback=LabelClientImpl.class) fallback:退路
- 停止基础模块测试运行
- SpringCloud Zuul (API网关服务): 过滤、安全、监控、限流、路由
- 1.概念
- 为了解决请求路由和安全过滤, SpringCloud推出了一个API Gateway组件: Spring Cloud Zuul。
- 为什么需要微服务网关
- 不同的微服务一般有不同的网络地址,比如一个电影购票的收集APP, 可能回调用电影分类微服务,用户微服务,支付微服务等; 安全性提高。
- 2.区分
- 分为边缘服务和内部服务两部分。
- 内部服务顾名思义是为对内暴露服务的结点, 供架构内部来调用; 边缘服务是对外部网络暴露的服务结点, 也就是对外API接口。
- 外部客户先请求到Zuul上, 在Zuul服务上对权限进行统一实现和过滤和验证, 网关Zuul通过JSF请求内部接口。
- 3.使用步骤介绍
- tensquare_manager,pom.xml引入eureka-client 和zuul的依赖
- 编写后台配置文件
- 启动类添加注解:@EnableZuulProxy
- 添加过滤器
- SpringCloud Ribbon (客户端, 负载均衡):
- 1.概念
- Ribbon是一个基于Http和TCP的客服端负载均衡工具, 负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。
- 使用Ribbon实现与Eureka的配合
- Ribbon可从Eureka服务注册表中获取服务提供者的地址列表, 使用一定的负载均衡算法, Ribbon的工作主要分为2步。
- 2.区分
- 提供的策略:轮询Round Robin、随机Random。
- 3.使用步骤介绍
- 一个示例过来, Ribbon依赖可加可不加,因为Eureka客户端默认依赖了Ribbon。
- 第二步,启动类添加, @LoadBalanced注解
- 第三步,调用
- 项目AB实例名相同,端口不同
- SpringCloud Bus (消息总线):
- SpringCloud Stream (消息驱动微服务):
- SpringCloud Sleuth (分布式服务跟踪):
SpringCloud 大纲
- Eureka
- Netflix Eureka 是由 Netflix 开源的一款基于 REST 的服务发现组件,包括 Eureka Server 及 Eureka Client。
- Ribbon
- Ribbon Netflix 公司开源的一个负载均衡的组件。
- Feign
- Feign是是一个声明式的Web Service客户端。
- Hystrix
- Hystrix是Netstflix 公司开源的一个项目,它提供了熔断器功能,能够阻止分布式系统中出现联动故障。
- Zuul
- Zuul 是由 Netflix 孵化的一个致力于“网关 “解决方案的开源组件。
- Spring Cloud Gateway
- 是 Spring 官方基于 Spring 5.0、 Spring Boot 2.0 和 Project Reactor 等技术开发的网关, Spring Cloud Gateway 旨在为微服务架构提供简单、 有效且统一的 API 路由管理方式。
- Config
- Spring Cloud 中提供了分布式配置中 Spring Cloud Config ,为外部配置提供了客户端和服务器端的支持。
- Bus
- 使用 Spring Cloud Bus, 可以非常容易地搭建起消息总线。
- OAuth2
- Sprin Cloud 构建的微服务系统中可以使用 Spring Cloud OAuth2 来保护微服务系统。
- Sleuth
- Spring Cloud Sleuth是Spring Cloud 个组件,它的主要功能是在分布式系统中提供服务链路追踪的解决方案。
- 微服务组件大纲图
- 参考与:点击跳转
-
相关阅读:
RTSP协议转RTMP协议的行业视频接入网关EasyRTSPLive如何实现音频转码的
RTSP协议转RTMP协议的行业视频接入网关EasyRTSPLive之跨平台ini配置及通道的方法
GB/T28181协议EasyGBS播放1080p视频直播会花屏
国标GB/T28181协议下播放器起播慢或者延迟高如何解决?
EasyGBS查找大华设备的录像列表时失败
ffmpeg增加h264编解码功能模块方法
EasyNVR控制台运行出现invalid license关于计算机保护软件类似于360、腾讯云管家等限制相关问题
摄像机经过多级路由转换无法被EasyNVR拉流问题处理方法
使用EasyNVR软件对接海康摄像头对接失败问题解析
GB/T28181协议使用EasyNVR降低播放延迟方法
-
原文地址:https://www.cnblogs.com/Twittery/p/14838150.html
Copyright © 2020-2023
润新知