zoukankan      html  css  js  c++  java
  • SpringCloud组件

    简介

    1. 什么是SpringCloud
    • 概念
      • 构建分布式系统不需要复杂和容易出错。
      • SpringCloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。
      • SpringCloud 构建于 SpringBoot 之上,使得开发者很容易入手并快速应用于生产中。
      • 配置文件加载顺序
        • bootstrap.yml > application.yml > application-dev(prod).yml
      • 微服务的理解: 就是把一个项目拆分为多个项目, 项目之间进行独立运行, 通过Http或者Socket来进行通信处理数据和调用。

    1. SpringCloud的版本
    • 概念
      • 当然这个只是个题外话。
      • 这些单词均为英国伦敦地铁站的站名。
      • Angel、Brixton、Camden、 Dalston、Edgware、Finchley、Greenwich、Hoxton。
    1. SpringCloud组件
    • 组件
      • SpringCloud Eureka(注册中心)
      • SpringCloud Config(配置中心)
      • SpringCloud Feign(服务调用)
      • SpringCloud Hystrix(熔断器)
      • SpringCloud Zuul(网关)
      • SpringCloud Ribbon(负载均衡)
      • SpringCloud Bus(消息总线)
      • SpringCloud Stream(消息驱动微服务)
      • SpringCloud Sleuth(分布式服务跟踪)
      • SpringCloud Shiro(安全权限控制)


    组件

    1. 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

    1. 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 //开启配置服务

    1. 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");
        • 启动基础微服务后,修改端口和输出信息,再次启动基础微服务。

    1. SpringCloud Hystrix (服务, 熔断器):
    • 1.概念
      • 雪崩效应: 在微服务架构中通常会涉及到多个服务层调用, 基础服务的故障可能会导致级联故障, 进而造成整个系统不可用的情况。
      • 服务雪崩效应: 因 服务提供者 不可用导致 服务消费者 的不可用, 并将不可用逐渐放大的过程。
    • 2.区分
      • 雪崩效应

      • 低于阀值会自动打开

    • 3.使用步骤介绍
      • 配合上面的Feign组件使用,定义调用基础服务模块的实现类,Feign 本身支持Hystrix,不需要额外引入依赖。
      • returnnewResult(false, StatusCode.ERROR,"熔断器启动了");
      • 修改LabelClient的注解:@FeignClient(value="tensquare‐base",fallback=LabelClientImpl.class) fallback:退路
      • 停止基础模块测试运行

    1. 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
      • 添加过滤器

    1. SpringCloud Ribbon (客户端, 负载均衡):
    • 1.概念
      • Ribbon是一个基于Http和TCP的客服端负载均衡工具, 负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。
      • 使用Ribbon实现与Eureka的配合
      • Ribbon可从Eureka服务注册表中获取服务提供者的地址列表, 使用一定的负载均衡算法, Ribbon的工作主要分为2步。
    • 2.区分
      • 提供的策略:轮询Round Robin、随机Random。
    • 3.使用步骤介绍
      • 一个示例过来, Ribbon依赖可加可不加,因为Eureka客户端默认依赖了Ribbon。

      • 第二步,启动类添加, @LoadBalanced注解

      • 第三步,调用

      • 项目AB实例名相同,端口不同


    1. SpringCloud Bus (消息总线):

    1. SpringCloud Stream (消息驱动微服务):

    1. SpringCloud Sleuth (分布式服务跟踪):

    SpringCloud 大纲

    1. Eureka
    • Netflix Eureka 是由 Netflix 开源的一款基于 REST 的服务发现组件,包括 Eureka Server 及 Eureka Client。
    1. Ribbon
    • Ribbon Netflix 公司开源的一个负载均衡的组件。
    1. Feign
    • Feign是是一个声明式的Web Service客户端。
    1. Hystrix
    • Hystrix是Netstflix 公司开源的一个项目,它提供了熔断器功能,能够阻止分布式系统中出现联动故障。
    1. Zuul
    • Zuul 是由 Netflix 孵化的一个致力于“网关 “解决方案的开源组件。
    1. Spring Cloud Gateway
    • 是 Spring 官方基于 Spring 5.0、 Spring Boot 2.0 和 Project Reactor 等技术开发的网关, Spring Cloud Gateway 旨在为微服务架构提供简单、 有效且统一的 API 路由管理方式。
    1. Config
    • Spring Cloud 中提供了分布式配置中 Spring Cloud Config ,为外部配置提供了客户端和服务器端的支持。
    1. Bus
    • 使用 Spring Cloud Bus, 可以非常容易地搭建起消息总线。
    1. OAuth2
    • Sprin Cloud 构建的微服务系统中可以使用 Spring Cloud OAuth2 来保护微服务系统。
    1. Sleuth
    • Spring Cloud Sleuth是Spring Cloud 个组件,它的主要功能是在分布式系统中提供服务链路追踪的解决方案。
    1. 微服务组件大纲图

    1. 参考与:点击跳转
  • 相关阅读:
    codevs 3971 航班
    2015山东信息学夏令营 Day4T3 生产
    2015山东信息学夏令营 Day5T3 路径
    Tyvj 1221 微子危机——战略
    清北学堂模拟赛 求和
    NOIP2012同余方程
    NOIP2009 Hankson的趣味题
    bzoj1441 MIN
    国家集训队论文分类
    贪心 + DFS
  • 原文地址:https://www.cnblogs.com/Twittery/p/14838150.html
Copyright © 2011-2022 走看看