IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Cloud系列(一)——相关概念及组件简介 -> 正文阅读

[Java知识库]Spring Cloud系列(一)——相关概念及组件简介

Spring Cloud系列(一)——相关概念及组件简介

微服务架构

发展过程:

1. 单体架构–>集群与垂直化

在业务的发展过程中,由于用户量和访问量的不断扩大,单体架构下服务器无法支撑高负载,因此出现了两种优化方法:

  1. 横向增加服务器——集群
  2. 垂直拆分业务为多个子业务——垂直化
2. SOA

为了解决以下问题:

  • 信息孤岛
  • 共享信息重用

出现了SOA (Service-Oriented Architecture ),即面向服务的架构。SOA架构将业务划分为了粗粒度的业务服务和业务流程作为服务层。而在服务层及不同系统间,采用ESB企业服务总线来作为通信桥梁。

3. 微服务

与SOA不同,微服务关注的重点在于:解耦。在微服务架构中可以将业务拆分的更细,相应的服务独立性更强,但管理大量的为服务也会变得复杂。因此微服务中的粒度需要根据实际业务情况而定,并不一定越细越好。

微服务框架的功能:

  • 注册中心:可以注册服务、获得服务信息
  • 配置中心:统一管理配置文件
  • 服务链路追踪:追踪服务间的调用,有助于快速定位问题
  • 负载均衡:保证服务高可用
  • 服务容错:隔离、熔断、降级、限流等容错策略
    • 隔离:线程池隔离(调用服务时给予固定线程数量)、信号量隔离(使用Semaphore实现,拿不到信号量时直接拒接)。线程池隔离适用于对延时要求不高的服务,信号量非常轻量级,对低延时的调用影响较小(常用)。
    • 熔断:熔断器模型(closed状态:请求正常访问;open状态:所有请求被降级;half open状态:释放部分请求通过)
    • 降级:服务压力增大时,系统将某些不重要的业务或接口功能降级,只提供部分功能或完全停止。
    • 限流:漏桶算法;令牌桶算法;固定时间窗口算法
  • 服务网关:可对用户请求进行限流、排队、过载保护、黑白名单、过滤拦截等操作
  • 服务发布与回滚
  • 服务动态伸缩、容器化

Spring Cloud框架及相关组件

? Spring Cloud框架是Spring提供的微服务框架,借助了Spring Boot并利用其特性和优势简化了开发步骤,做到一键启动和部署。

Eureka:服务注册和发现 组件

Eureka是一个用户服务注册和发现的组件。

? 为什么要使用Eureka?在微服务架构中,各个微服务之间存在业务关系,例如订单服务(服务消费者)需要调用支付服务(服务提供者)实现支付功能。调用时需要指定微服务的调用地址,当微服务的数量很多时,管理和维护服务的调用地址就变得非常困难,如果能有一个组件实现服务的注册和发现,要调用服务的时候就去找这个组件,由组件返回可用的服务提供者的集合,就降低了维护成本,提高了效率。

Eureka中有三大角色:服务提供者、服务消费者、注册中心

? 可以将注册中心看成物业,服务提供者看成住户,服务消费者则是抄水表员。每当有新的业主(服务提供者)入住,都需要向物业进行注册(服务注册),并且定期向物业交管理费(发送心跳),表明住户还住着,抄水表员向物业确认(获取服务列表)后则可以正常入室抄水表(消费服务)。当住户连续几个月没有交管理费(连续几次未发送心跳),则物业会将该户视为无人居住(剔除该服务),抄水表员则无法再入室抄水表。

LoadBalancer:负载均衡

负载均衡:将负载分摊到多个执行单元上。
常见方式:
  1. 一个独立进程单元,通过负载均衡策略,将请求转发到不用的执行单元。如Nginx。
  2. 将负载均衡逻辑以代码的形式封装到服务消费者的客户端,服务消费者客户端维护了一份服务提供者的信息列表,通过负载均衡策略将请求分摊给多个服务提供者。

LoadBalancer是Spring Cloud Commons的一个子项目,以上述第2种方式实现负载均衡。

使用方式:

  1. 与RestTemplate结合
  2. 与Feign相结合

RestTemplate:RESTful API接口请求框架

? RestTemplate提供了简单的方法来实现对REST服务的访问(支持常见的HTTP协议请求方法:POST、GET、PUT、DELETE等),并且可以将调用结果(一般为json)反序列化为指定对象,大大提高了开发效率。

Spring Cloud OpenFeign:HTTP客户端组件

? Feign是声明式的HTTP客户端组件,旨在使编写HTTP客户端变得更加容易。

? OpenFeign支持Spring MVC注解,同时集成了Spring Cloud LoadBalancer和Spring Cloud CircuitBreaker,即提供了负载均衡和熔断降级的功能。

? 在微服务框架中,OpenFeign主要用于微服务间的调用。

Resilience4j:轻量级容错框架

Resilience4j提供了一组高阶函数(装饰器),在使用时不需要引入所有依赖,只引入需要的依赖即可。

核心模块:

  • resilience4j-circuitbreaker: 熔断
  • resilience4j-ratelimiter: 限流
  • resilience4j-bulkhead: 隔离
  • resilience4j-retry: 自动重试
  • resilience4j-cache: 结果缓存
  • resilience4j-timelimiter: 超时处理

Spring Cloud Gateway:微服务网关

? 为了将各种微服务提供给外部应用调用,同时避免直接让客户端与各个微服务通讯(可能会存在:跨域请求、认证复杂、难以重构等问题),我们需要使用微服务网关将内部服务隐藏起来,统一管理,对外统一暴露api接口。

? 微服务网关能实现:路由、负载均衡、权限管理、身份认证等多种功能。

Spring Cloud Config:配置中心组件

? 为了降低维护配置文件的成本(在不同环境下需要有不同的服务连接配置;配置的更新),需要对配置进行统一的管理,因此可以将各个系统中的配置放到一个第三方组件上进行统一维护,同时,配置中心上的数据变更需要推送给相应的服务节点实现动态更新。

? Spring Cloud Config就是这样一个配置中心组件,且可以选择git、svn、本地文件作为存储。配置动态更新需要使用消息队列来实现,支持Kafka和RabbitMQ后续的实践中选择RabbitMQ

Spring Cloud Bus、Sping Boot Actuator:实现配置自动刷新

实现过程:

? 用户在git上修改了配置文件后,发起一个post请求/actuator/bus-refresh到配置中心,此时配置中心的Spring Cloud Bus会发送消息给消息队列,监听该队列的各个微服务收到消息后会重新获取配置。

Spring Cloud Sleuth:链路追踪

? 由于各个微服务之间可能存在多层调用,当问题出现时难以定位,因此在微服务架构中需要实现分布式链路追踪,跟进每一个请求都有哪些服务参与,调用的顺序,从而实现问题快速定位。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:18:07  更:2022-03-12 17:21:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:50:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码