LeeQingShui's Blog

  • 标签

  • 分类

  • 归档

  • 关于

Spring Cloud 网关 Gateway

发表于 2019-12-24 | 更新于 2023-07-16
本文字数: 5.4k | 阅读时长 ≈ 8 分钟

序言

  当客户端发出一些对微服务获取资源的请求到后端,这些请求将通过 FS、 Nginx 等设施的路由和负载均衡分配并转发到各个不同的服务实例上。为了让这些设施能够正确路由与分发请求,运维人员需要手工维护这些路由规则与服务实例列表, 当有实例增减或是 IP 地址变动等情况发生的时候,也需要手工地去同步修改这些信息以保持实例信息与中间件的一致。当系统规模不断增大时,这些看似简单的维护任务会变得越来越麻烦,且配置出错概率也会增加。

  很显然,上述做法并不可取,因此,我们需要一套机制来有效降低维护路由规则与服务实例列表的难度。

  对于某些服务的权限校验(如用户登录状态的校验),若突然发现校验逻辑有个 BUG 需要修复,或者需要对其做一些扩展和优化,此时就不得不去每个应用里修改这些逻辑,这样的修改不仅会引起开发入员的抱怨,更会加重测试人员的负担。所以,我们也需要一套机制,能够很好地解决微服务架构中,对于微服务接口访问时各前置校验的冗余问题。

  这时候就可以使用 API 网关,Gateway 就是一种网关。

阅读全文 »

Spring Cloud 网关 Zuul

发表于 2019-12-23 | 更新于 2022-11-23
本文字数: 2.5k | 阅读时长 ≈ 4 分钟

  由于后起之秀 Gateway 的诞生,不建议在新项目中再使用 Zuul。

序言

  当客户端发出一些对微服务获取资源的请求到后端,这些请求将通过 FS、 Nginx 等设施的路由和负载均衡分配并转发到各个不同的服务实例上。为了让这些设施能够正确路由与分发请求,运维人员需要手工维护这些路由规则与服务实例列表, 当有实例增减或是 IP 地址变动等情况发生的时候,也需要手工地去同步修改这些信息以保持实例信息与中间件的一致。当系统规模不断增大时,这些看似简单的维护任务会变得越来越麻烦,且配置出错概率也会增加。

  很显然,上述做法并不可取,因此,我们需要一套机制来有效降低维护路由规则与服务实例列表的难度。

  对于某些服务的权限校验(如用户登录状态的校验),若突然发现校验逻辑有个 BUG 需要修复,或者需要对其做一些扩展和优化,此时就不得不去每个应用里修改这些逻辑,这样的修改不仅会引起开发入员的抱怨,更会加重测试人员的负担。所以,我们也需要一套机制,能够很好地解决微服务架构中,对于微服务接口访问时各前置校验的冗余问题。

  这时候就可以使用 API 网关,Zuul 就是一种网关。

阅读全文 »

Spring Cloud 声明式服务调用组件 Feign

发表于 2019-12-22 | 更新于 2023-07-16
本文字数: 3.1k | 阅读时长 ≈ 4 分钟

序言

  在前面的例子中,我们使用了 Ribbon 的负载均衡功能,大大优化了远程调用时的代码:

1
2
String url = "http://user-service/user/" + id;
return restTemplate.getForObject(url, String.class);

  但是,我们以后可能需要编写类似的重复代码,格式基本相同,无非参数不一样,有没有更优雅的方式来对这些代码再次优化呢?
  而且,我们使用了 Hystrix 的熔断功能,但将熔断的方法直接嵌套在业务代码中间,会不会显得有些杂乱?这一点又能不能优化呢?
  当然可以,Feign 对 Ribbon 和 Hystrix 都进行了封装,上面 2 个都是小 case 。

  Feign 基于 Netflix Feign 实现,它整合了 Ribbon 与 Hystrix , 除了提供这两者的强大功能之外,它还提供了一种声明式的 Web 服务客户端定义方式。

阅读全文 »

Spring Cloud 服务容错保护 Hystrix

发表于 2019-12-21 | 更新于 2022-11-23
本文字数: 1.5k | 阅读时长 ≈ 2 分钟

  由于后起之秀 Sentinel 的诞生,不建议在新项目中再使用 Hystrix。

序言

  在微服务架构中,存在着那么多的服务单元,若一个单元出现故障,就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定。

  为了解决这样的问题, 产生了熔断器等一系列的服务保护机制。

  在分布式架构中, 断路器模式的作用也是类似的,当某个服务单元发生故障(类似电器发生短路) 之后, 通过熔断器的故障监控(类似熔断保险丝), 向调用方返回一个错误响应, 而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。

  Hystrix 就是一种熔断器,具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能.。

阅读全文 »

Spring Cloud 客户端负载均衡 Ribbon

发表于 2019-12-20 | 更新于 2022-10-27
本文字数: 779 | 阅读时长 ≈ 1 分钟

序言

  在微服务项目中,我们肯定会部署服务集群以防故障发生,那么,如何保证请求的每台服务器受到的压力都差不多呢?

  答案是通过负载均衡进行实现。

  Ribbon 就是实现负载均衡的工具之一。

阅读全文 »

Spring Cloud 服务治理框架 Eureka

发表于 2019-12-19 | 更新于 2022-10-27
本文字数: 6.1k | 阅读时长 ≈ 9 分钟

序言

  前文说过,若一个项目里有过多的微服务,人为管理起来非常麻烦,因此迫切需要能够自动管理微服务的东东,这个东东叫做服务治理框架,它提供了 2 个功能:

  • 服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单。
  • 服务发现:由于在服务治理框架下运作,服务间的调用不再通过指定具体的实例地址来实现,而是通过向服务名发起请求调用实现。所以,服务调用方在调用服务提供方接口的时候,并不知道具体的服务实例位置。因此,调用方需要向服务注册中心咨询服务,并获取所有服务的实例清单,以实现对具体服务实例的访问。

  Eureka 就是是服务治理框架之一。

阅读全文 »

初识 Spring Cloud

发表于 2019-12-18 | 更新于 2022-10-27
本文字数: 2.5k | 阅读时长 ≈ 4 分钟

微服务

  开始使用 Spring Cloud 之前,我们先来了解下什么是微服务。

  什么是微服务?

  简单来讲微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个服务代表着一个小的业务组件。
  网上解释微服务的文章很多,具体可以自己去查询。
  通常而言,一个微服务框架的应用程序有下列特性:

  • 每个服务都容易被取代
  • 服务是以功能来组织的,例如用户界面、前端、推荐系统、账单或是物流等
  • 由于功能被拆成多个服务,因此可以由不同的编程语言、数据库实现
  • 架构是对称而非分层(即生产者与消费者的关系)

  微服务是一种架构方式,最终肯定需要技术架构去实现。
  微服务的实现方式很多,但是最火的莫过于 Spring Cloud 了。
  那么什么是 Spring Cloud 呢?

阅读全文 »

(优化篇)MySQL 之执行计划分析

发表于 2019-10-22 | 更新于 2025-01-04 | 分类于 关系型数据库
本文字数: 4.8k | 阅读时长 ≈ 7 分钟

  在 MySQL 中,通过 explain或desc命令可以获取 MySQL 执行 SELECT 语句时的相关信息。

阅读全文 »

(优化篇)MySQL 优化之索引

发表于 2019-10-22 | 更新于 2025-01-04 | 分类于 关系型数据库
本文字数: 9.1k | 阅读时长 ≈ 13 分钟

序言

  为了加快数据查询的速度,通常会使用到索引,那么什么是索引呢?它底层是如何构成的呢?又该如何正确使用呢?

阅读全文 »

(四)Vue 路由—— Vue Router

发表于 2019-10-09 | 更新于 2021-08-26 | 分类于 前端
本文字数: 8k | 阅读时长 ≈ 11 分钟

  学习 Vue 的路由之前,需要先了解下什么是路由。

阅读全文 »

1…567…15
LeeQingShui

LeeQingShui

144 日志
16 分类
68 标签
RSS
© 2018 – 2025 LeeQingShui | 站点总字数: 846k
赣 ICP 备 2022002212 号
本站已运行
本站总访问量 次 | 本站访客 人次
0%