秒懂·云原生微服务篇 —— 三千字吃透Spring Cloud的组成

Posted 桃花键神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秒懂·云原生微服务篇 —— 三千字吃透Spring Cloud的组成相关的知识,希望对你有一定的参考价值。

🔎这里是【秒懂·云原生】,关注我学习云原生不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

👀专栏介绍

【秒懂·云原生】 目前主要更新微服务,一起学习一起进步。

👀本期介绍

主要介绍什么是Spring Cloud架构、Spring Cloud的组成及Spring Cloud的五大组件

文章目录

🍖Spring Cloud 架构

Spring社区推出Spring Cloud框架与其自身的理念演变密切相关。Spring是于2003年兴起的一个轻量级的Java开发框架,但是随着其不断地发展壮大,框架的代码规模越来越庞大,集成的项目越来越多,配置文件也变得越来越混乱,慢慢地背离最初的理念。如今,分布式系统和微服务架构等更多新的技术理念的陆续出现,催生了这样一种想法: Spring社区需要一款框架来改善以前的开发模式并适应微服务开发环境。SpringCloud也就此应运而生。

🍖Spring Cloud的组成

Spring Cloud由许多组件构成,技术体系如图。

🍖springcloud五大组件

🍕1、Eureka

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。
SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

eureka架构设计

在微服务架构中往往会有一个注册中心,每个微服务都会向注册中心去注册自己的地址及端口信息,注册中心维护着服务名称与服务实例的对应关系。每个微服务都会定时从注册中心获取服务列表,同时汇报自己的运行情况,这样当有的服务需要调用其他服务时,就可以从自己获取到的服务列表中获取实例地址进行调用,Eureka实现了这套服务注册与发现机制。

🍕2、Ribbon

Ribbon是一个为客户端提供负载均衡功能的服务,它内部提供了一个叫做ILoadBalance的接口代表负载均衡器的操作,比如有添加服务器操作、选择服务器操作、获取所有的服务器列表、获取可用的服务器列表等等。
Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后面的所有机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。

下图展示了Eureka使用Ribbon时的大致架构:

🍕3、Hystrix

hystrix是一个库,通过延迟容忍和容错逻辑,控制分布式服务之间的交互。它通过隔离服务间的访问点、防止级联失败和提供回退选项,保证系统的整体弹性。

hystrix被设计的目标是:

  • 1.对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制。
  • 2.在复杂的分布式系统汇中阻止级联故障。
  • 3.快速失败,快速恢复。
  • 4.回退,尽可能优雅的降级。
  • 5.启用近实时监控、警报和操作控制。

🍕4、Zuul

Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。

Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能。

  • 身份认证与安: 识别每个资源的验证要求,并拒绝那些与要求不符的请求。
  • 审查与监控: 在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
  • 动态路由: 动态地将请求路由到不同的后端集群。
  • 压力测试: 逐渐增加指向集群的流量,以了解性能。
  • 负载分配: 为每一种负载类型分配对应容量,并弃用超岀限定值的请求。
  • 静态响应处理: 在边缘位置直接建立部分响应,从而避免其转发到内部集群。
  • 多区域弹性: 跨越AWS Region进行请求路由,旨在实现ELB ( Elastic Load Balancing) 使用的多样化,以及让系统的边缘更贴近系统的使用者。

Spring Cloud对Zuul进行了整合与增强。目前,Zuul使用的默认HTTP客户端是Apache HTTPClient,也可以使用 RestClient 或者okhttp3.OkHttpClient。

🍕5、Config

Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环节提供了一个中心化的外部配置。

上图所示,假如有三个配置文件,然后每一个配置文件都连接了数据库(同一个),这个时候如果我要换一个数据库使用,那么就要将所有配置文件中的配置进行替换,这个时候我们就可以使用 Config Server 来进行统一配置,这样在我们管理的时候也会比较简单!

Spring Cloud Config 分为服务端和客户端两部分。
服务端 也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密 信息等访问接口。

客户端 则是通过指定的配置中心来管理应用的资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载信息配置服务器默认采用 git 来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过 git 客户端工具来方便的管理和访问配置内容。

以上是关于秒懂·云原生微服务篇 —— 三千字吃透Spring Cloud的组成的主要内容,如果未能解决你的问题,请参考以下文章

微服务 从0开始 Spring boot 简单搭建一个微服务项目

微服务~原始真解Spring Cloud —— 实现负载均衡

微服务~原始真解Spring Cloud —— 知道微服务中如何调用接口吗?

微服务~原始真解Spring Cloud —— 访问数据库整合Druid数据源

微服务 从0开始 Spring Cloud —— 比xml更适合的配置文件yaml

Spring Cloud Alibaba —— 服务注册与配置中心