zoukankan      html  css  js  c++  java
  • SpringCloud常用组件的使用

    ========================================
    =========== 介绍
    ========================================

    Spring Cloud是分布式微服务的一站式解决方案,是多种微服务架构落地技术的集合体,俗称:微服务全家桶。
    Srping Cloud 和 Spring Boot 是鱼和水的关系。

    分布式:一个业务分拆多个子业务,部署在不同的服务器上
    分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
    分布式部署在不同的服务器上,微服务的应用也可以是同一个服务器。

    核心:
    基于HTTP协议,跟Dubbo最本质的区别,Dubbo核心基于RPC。

    技术组件:
    注册中心:Eureka,服务之间互相发现
    客户端负载均衡:Ribbon
    声明式远程方法调用:OpenFeign
    服务降级、熔断:Hystrix
    网关:Zuul

    环境:
    Spring Boot 2.0+
    Maven 3.3+

    ========================================
    =========== 创建Spring Cloud项目
    ========================================

    1. 创建Maven项目
    2. pom导入SpringCloud父工程依赖
    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Greenwich.SR2</version>
    <type>pom</type>
    <!-- 表示将spring-cloud-dependencies包中的依赖信息导入 -->
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    3. 在pom增加packaging值为pom(设置打包方式为pom)
    4. 父工程是pom工程,所以把父工程下的src文件夹删除掉,项目只有一个pom.xml文件

    5. 创建common通用工程,存放entity实体类

    6. 创建provider工程,添加通用工程和spring-boot-starter-web依赖、spring-cloud-starter-netflix-eureka-client,创建启动类和controller

    7. 创建consumer工程,添加通用工程和spring-boot-starter-web依赖、spring-cloud-starter-netflix-eureka-client、spring-cloud-starter-netflix-ribbon,创建启动类、配置类和controller

    8. 创建euerka工程(服务注册中心),添加spring-cloud-starter-netflix-eureka-server依赖(需要maven3以上,idea整合的maven3只支持spring-cloud-starter-eureka-server,但是被弃用了)

    加入Hystrix后,provider服务端异常则进行熔断,timeout则consumer客户端进行降级。(客户端异常自动降级,服务器异常自动熔断)

    ========================================
    parent 控制依赖包版本
    common 通用服务存放实体类
    provider 生产者 存放 controller
    consumer 消费者 远程访问 provider
    euerka 注册中心
    dashboard Hystrix仪表盘,服务监控
    zuul 网关

    provider注册到euerka
    consumer从euerka订阅
    consumer通过Ribbon实现负载均衡,访问provider在euerka注册的地址


    ========================================
    =========== 注解
    ========================================

    @EnableEurekaServer 启用Eureka服务端功能
    @EnableEurekaClient 启用Eureka客户端功能
    @EnableDiscoveryClient 启用发现服务(不仅包括Eureka)功能
    @LoadBalanced 启用Ribbon负载均衡

    ========================================
    通过Feign, 我们能把HTTP远程调用对开发者完全透明,得到与调用本地方法一致的编码体验。
    这一点与阿里Dubbo中暴露远程服务的方式类似,区别在于Dubbo是基于私有二进制协议,而Feign本质上还是个HTTP客户端。
    如果是在用Spring Cloud Netflix搭建微服务,那么Feign无疑是最佳选择。

    Hystrix
    熔断:provider
    服务端引入依赖spring-cloud-starter-netflix-hystrix
    启动类开启@EnableCircuitBreaker
    方法接口指定错误执行方法@HystrixCommand(fallbackMethod = "方法")
    降级:consumer
    属性文件设置feign.hystrix.enabled: true
    1. 实现FallbackFactory接口时,要传入@FeignClient注解标记的接口类型
    2. 在create方法中返回@FeignClient注解标记的接口对象,当provider调用失败时,会执行这个对象对应的方法
    仪表盘:provider
    服务端引入依赖spring-boot-starter-actuator
    属性文件设置management.endpoints.web.exposure.include: hystrix.stream
    创建dashboard服务,启动类开启@EnableHystrixDashboard
    访问ip:post/hystrix,访问监控项目首页,写入被监控的服务端方法访问地址,开始监控

    请求 -> Zuul -> 请求特征(隐藏服务名) -> 微服务名称(通过riboon) -> Eureke -> 具体微服务...

    Zuul网关的作用
    统一入口:未全部为服务提供一个唯一的入口,网关起到外部和内部隔离的作用,保障了后台服务的安全性。
    鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。
    动态路由:动态的将请求路由到不同的后端集群中。
    减少客户端与服务端的耦合:服务可以独立发展,通过网关层来做映射。

            积极竞争
        不惧失败
    学习提升
  • 相关阅读:
    嵌入式软件设计第12次实验报告
    嵌入式软件设计第11次实验报告
    嵌入式第十次实验报告
    嵌入式第九次实验报告
    作业二:个人博客作业内容:需求分析
    嵌入式软件设计第8次实验报告
    嵌入式软件设计第7次实验报告
    自我介绍
    实习总结(第四周)
    个人博客作业三:微软小娜APP的案例分析
  • 原文地址:https://www.cnblogs.com/acmez/p/13627053.html
Copyright © 2011-2022 走看看