• Spring Cloud 架构


    1、 微服务简介

    1.1 什么是微服务

      所谓微服务,就是把一个比较大的单个应用程序或服务拆分为若干个独立的、粒度很小的服务或组件。

    1.2 为什么使用微服务

      微服务的拆解业务,这一策略,可扩展单个组件,而不需要整个的应用程序堆栈做修改,从而满足服务等级协议。微服务带来的好处是,它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细、完整的 QA 测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但使得其更容易被识别和隔离,从而加快开发速度并支持 DevOps 和持续应用程序开发。

    1.3 微服务的架构组成

      这几年的快速发展,微服务已经变得越来越流行。其中,Spring Cloud 一直在更新,并被大部分公司所使用。代表性的有 Alibaba,2018 年 11 月左右,Spring Cloud 联合创始人 Spencer Gibb 在 Spring 官网的博客页面宣布:阿里巴巴开源 Spring Cloud Alibaba,并发布了首个预览版本。随后,Spring Cloud 官方 Twitter 也发布了此消息。Spring Cloud 的版本也很多:

    以 Spring Boot1.x 为例,主要包括 Eureka、Zuul、Config、Ribbon、Hystrix 等。而在 Spring Boot2.x 中,网关采用了自己的 Gateway。当然在 Alibaba 版本中,其组件更是丰富:使用 Alibaba 的 Nacos 作为注册中心和配置中心。使用自带组件 Sentinel 作为限流、熔断神器。

    2、 微服务之网关

    2.1 常见的几种网关

      目前,在 Spring Boot1.x 中,用到的比较多的网关就是 Zuul。Zuul 是 Netflix 公司开源的一个网关服务,而 Spring Boot2.x 中,采用了自家推出的 Spring Cloud Gateway。

    2.2 API 网关的作用

      API 网关的主要作用是反向路由、安全认证、负载均衡、限流熔断、日志监控。在 Zuul 中,我们可以通过注入 Bean 的方式来配置路由,也可以在直接通过配置文件来配置:

    1. zuul.routes.api-d.sensitiveHeaders="*"
    2. zuul.routes.api-d.path=/business/api/**
    3. zuul.routes.api-d.serviceId=business-web

    我们可以通过网关来做一些安全的认证:如统一鉴权。在 Zuul 中:

    Zuul 的工作原理

    • 过滤器机制

      zuul 的核心是一系列的 filters, 其作用可以类比 Servlet 框架的 Filter,或者 AOP。zuul 把 Request route 到用户处理逻辑的过程中,这些 filter 参与一些过滤处理,比如 Authentication,Load Shedding 等。几种标准的过滤器类型:

      (1) PRE:这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。

      (2) ROUTING:这种过滤器用于构建发送给微服务的请求,并使用 Apache HttpClient 或 Netfilx Ribbon 请求微服务。

      (3) POST:这种过滤器在路由到微服

  • 相关阅读:
    C语言第四章第2节用if语句实现选择结构学习导案
    java 对接微信支付Native下单API报错: java.security.InvalidKeyException: Illegal key size
    SpringCache和Redis结合基本使用
    linux设置ssh免密登录
    快速做出原型
    静态住宅代理是什么?为什么要选择它?
    MySQL高级篇_16_MVCC多版本并发控制_尚硅谷_宋红康
    玩转springboot之springboot配置文件
    ApplicationContext注入Bean(多线程中注入Bean)
    模拟电子技术一|发展史
  • 原文地址:https://blog.csdn.net/m0_67698950/article/details/126487566