SpringCloud微服务框架的原理及应用详解(三)

本系列文章简介:

        随着云计算、大数据和物联网等技术的飞速发展,企业应用系统的规模和复杂度不断增加,传统的单体架构已经难以满足快速迭代、高并发、高可用性等现代业务需求。在这样的背景下,微服务架构应运而生,成为了一种主流的分布式系统构建方法。

        微服务架构的核心思想是将一个庞大的单体应用拆分成若干个小的、独立的、可自治的服务,每个服务运行在其独立的进程中,服务与服务之间通过轻量级的通信机制进行交互。这种架构模式具有高度的可扩展性、灵活性和可维护性,能够快速地响应业务需求的变化,提高系统的整体性能和可靠性。

        然而,微服务架构的实施并不是一蹴而就的,它需要一系列的工具和技术来支撑。在Java生态系统中,SpringCloud是一个备受关注的微服务框架,它基于Spring Boot开发,提供了一整套的微服务解决方案,包括服务注册与发现、负载均衡、声明式服务调用、断路器与容错、配置中心、API网关等功能,大大简化了微服务的开发和管理工作。

        本系列文章旨在深入探讨SpringCloud微服务框架的原理及应用。首先,我们将从微服务架构的概述入手,介绍微服务架构的定义、优势、挑战以及适用场景。接着,我们将详细阐述SpringCloud微服务框架的原理,包括服务注册与发现、负载均衡、声明式服务调用、断路器与容错、配置中心、API网关等核心组件的工作原理和机制。然后,我们将结合具体的案例,分析SpringCloud在实际项目中的应用实践,包括微服务架构的设计与拆分、安全与治理、持续集成与持续部署、性能优化与容灾处理等方面。最后,我们将总结SpringCloud微服务框架的优势和不足,展望微服务架构的发展趋势和未来发展方向。

        通过本系列文章的研究,我们希望能够帮助大家更好地理解微服务架构和SpringCloud微服务框架的原理及应用,为企业在构建微服务架构时提供参考和借鉴。同时,我们也希望激发更多的研究者和开发者对微服务架构和SpringCloud微服务框架的深入研究和探索,共同推动微服务架构的发展和应用。 

        欢迎大家订阅《Java技术栈高级攻略》专栏(PS:近期会涨价),一起学习,一起涨分!

目录

一、引言

二、SpringCloud微服务框架的原理

2.1 服务注册与发现原理

2.2 负载均衡原理

2.3 声明式服务调用原理

2.3.1 Feign的工作原理

2.3.2 Feign在SpringCloud中的集成与应用

2.4 断路器与容错原理

2.4.1 Hystrix的作用与原理

2.4.2 熔断、降级与限流的概念与实现

2.5 配置中心原理       

2.6 API网关原理

三、SpringCloud核心组件详解

3.1 服务注册与发现组件(Nacos)

3.2 负载均衡组件(Ribbon)

3.3 声明式服务调用组件(Feign)

3.4 断路器与容错组件(Hystrix)

3.5 配置中心组件(Spring Cloud Config)

3.6 API网关组件(Gateway)

四、SpringCloud微服务框架的应用实践

4.1 微服务架构设计与拆分

4.2 微服务的安全与治理

4.3 微服务的持续集成与持续部署(CI/CD)

4.4 微服务架构下的性能优化与容灾处理

五、SpringCloud微服务框架的挑战与未来展望

六、结论

七、结语


一、引言

        Spring Cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务。它提供了一系列框架和组件,如服务发现、配置管理、熔断器、智能路由等,用于简化分布式系统的开发。Spring Cloud通过提供一系列开箱即用的组件和工具,帮助开发者快速构建和部署微服务架构的系统。

        本文将跟随《SpringCloud微服务框架的原理及应用详解(二)》的进度,继续介绍Spring Boot框架。希望通过本系列文章的学习,您将能够更好地理解Spring Boot框架的内部工作原理,掌握Spring Boot框架的使用技巧,以及通过合理的设计完成最佳实践,充分发挥优化Spring Boot框架的潜力,为系统的高效运行提供有力保障。

二、SpringCloud微服务框架的原理

2.1 服务注册与发现原理

        详见《SpringCloud微服务框架的原理及应用详解(二)

2.2 负载均衡原理

        详见《SpringCloud微服务框架的原理及应用详解(二)

2.3 声明式服务调用原理

2.3.1 Feign的工作原理

SpringCloud微服务框架中的Feign是一个声明式的Web服务客户端,用于简化HTTP API的调用。其工作原理可以分为以下几个关键步骤:

  1. 声明式API定义
    • Feign通过创建接口并使用注解(如@FeignClient)来配置请求,使得开发者可以像定义本地服务接口一样定义远程服务的API接口。
    • 开发者在接口中使用注解(如@GetMapping@PostMapping等)来指定请求的URL、HTTP方法类型、请求参数等。
  2. 动态代理生成
    • 当程序启动时,Spring Cloud会扫描标记了@FeignClient注解的接口,并生成这些接口的代理对象。
    • 这个代理对象内部会处理HTTP请求的发送和结果的映射,使得开发者在调用接口方法时,实际上是在执行HTTP请求。
  3. 负载均衡
    • Feign集成了Ribbon负载均衡器,当调用远程服务时,Feign会根据Ribbon的负载均衡策略选择一个合适的服务实例进行调用。
    • 这意味着,如果服务注册中心(如Eureka)中有多个相同的服务实例,Feign会确保请求被均匀地分发到这些实例上。
  4. HTTP请求发送
    • Feign内部使用HttpClient(可以是JDK原生的URLConnection、Apache的HttpClient或OKHttp等)来发送HTTP请求。
    • 当调用Feign接口的方法时,Feign会生成一个RequestTemplate对象,该对象封装了HTTP请求所需的全部信息(如请求方法、URL、请求头等)。
    • 然后,Feign将这个RequestTemplate对象转换为具体的HTTP请求,并通过HttpClient发送出去。
  5. 响应处理
    • HttpClient发送HTTP请求后,会收到服务端的响应。
    • Feign会将这个响应转换为Java对象(通常是接口方法的返回值类型),并返回给调用者。
    • 这个过程通常包括HTTP响应状态的检查、响应体的解码等步骤。
  6. 扩展性
    • Feign提供了多种插件和扩展点,如编码器、解码器、拦截器等,这些都可以用来自定义Feign的行为。
    • 例如,开发者可以编写自定义的编码器来处理特殊的请求体格式,或者编写自定义的拦截器来添加额外的请求头或处理响应结果。

总结来说,Feign通过声明式API定义、动态代理生成、负载均衡、HTTP请求发送、响应处理和扩展性等方面的功能,为SpringCloud微服务框架中的服务调用提供了简单、高效和灵活的解决方案。

2.3.2 Feign在SpringCloud中的集成与应用

SpringCloud微服务框架中,Feign的集成与应用为服务间的调用提供了一种声明式的方式,极大地简化了HTTP客户端的开发工作。以下是Feign在SpringCloud中的集成与应用的具体步骤和原理:

1. Feign的集成

1.1 添加依赖

在Spring Boot项目中,首先需要在pom.xml文件中添加Feign的依赖。这通常是通过引入spring-cloud-starter-openfeign依赖来实现的。

<dependency> 
<groupId>org.springframework.cloud</groupId> 
<artifactId>spring-cloud-starter-openfeign</artifactId> 
</dependency>

1.2 启用Feign

在Spring Boot的主应用类或配置类上添加@EnableFeignClients注解,以启用Feign客户端。同时,可以通过设置basePackages属性来指定Feign客户端的扫描包。

@EnableFeignClients(basePackages = "com.example.client") 
@SpringBootApplication 
public class Application { 
public static void main(String[] args) { 
SpringApplication.run(Application.class, args); 
} 
}

2. Feign的应用

2.1 定义Feign客户端

创建一个接口作为Feign客户端,使用Feign提供的注解来定义服务调用。例如,使用@FeignClient注解来指定服务名,以及使用Spring MVC的注解来定义请求方法、路径、参数等。

@FeignClient(name = "service-provider") public interface UserClient { @GetMapping("/users/{id}") User getUserById(@PathVariable("id") Long id); }


2.2 注入Feign客户端

在需要使用Feign客户端的类中,通过Spring的自动装配功能将Feign客户端注入为成员变量。

@RestController public class UserController { @Autowired private UserClient userClient; // ... }


2.3 调用Feign客户端

在业务逻辑中,直接调用Feign客户端的方法来发起远程服务调用。Feign会自动处理HTTP请求的发送和响应的解析。

@GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { return userClient.getUserById(id); }


3. Feign的工作原理

  • 声明式调用:Feign通过声明式的接口定义来调用远程服务,使得代码更加简洁和易于理解。
  • 整合Ribbon:Feign内置了Ribbon作为客户端负载均衡器,可以根据服务提供者的地址列表自动选择服务实例进行调用。
  • 支持Spring MVC注解:Feign支持Spring MVC的注解,如@GetMapping@PostMapping等,使得服务调用的定义更加符合Spring的开发习惯。
  • 可插拔的编码器和解码器:Feign支持可插拔的编码器和解码器,可以根据实际需求进行定制和扩展。
  • 与Eureka等注册中心集成:Feign可以与Eureka、Nacos等注册中心集成,自动获取服务提供者的地址列表。

综上所述,Feign在SpringCloud中的集成与应用为微服务间的调用提供了一种简洁、高效、易于扩展的解决方案。

2.4 断路器与容错原理

2.4.1 Hystrix的作用与原理

SpringCloud微服务框架中的Hystrix主要用于处理分布式系统中的延迟和容错,以提高系统的弹性。其核心作用包括防止服务雪崩、服务隔离、服务熔断和服务降级。以下是关于Hystrix的作用与原理的详细解释:

作用

  1. 防止服务雪崩:在微服务架构中,服务之间的依赖关系复杂,一个服务的失败可能会导致整个系统崩溃,这就是所谓的“服务雪崩”效应。Hystrix通过隔离和熔断机制,限制某个服务的失败对整体系统的影响,从而防止服务雪崩。
  2. 服务隔离:Hystrix通过线程池或信号量等方式,将每个服务的调用进行隔离,防止某个服务的失败影响到其他服务的调用。
  3. 服务熔断:当某个服务的失败率达到一定的阈值时,Hystrix会触发熔断机制,快速失败并返回一个降级结果,从而避免系统资源的进一步浪费。
  4. 服务降级:在服务器压力剧增的情况下,Hystrix可以根据当前业务情况和流量,对部分服务和页面进行策略性降级,以释放服务器资源,保证核心任务的正常运行。

原理

  1. 服务隔离原理
    • 线程池隔离:为每个服务的调用分配一个独立的线程池,当某个服务的调用失败或响应过慢时,只会影响到该线程池中的资源,而不会影响到其他服务的调用。
    • 信号量隔离:通过控制并发请求的数量来实现服务隔离,当并发请求数量超过设定的阈值时,新的请求将被拒绝或降级。
  2. 服务熔断原理
    • Hystrix会实时监控每个服务的调用情况,包括成功、失败、超时等状态。
    • 当某个服务的失败率达到一定的阈值(例如5秒内发生20次失败)时,Hystrix会触发熔断机制,进入熔断状态。
    • 在熔断状态下,所有对该服务的调用都将直接返回降级结果,避免资源的进一步浪费。
    • 经过一段时间后(例如设定的休眠时间),Hystrix会尝试重新请求该服务,以检查服务是否已经恢复。如果服务恢复,则关闭熔断器;否则,继续保持熔断状态。
  3. 服务降级原理
    • 当系统资源紧张或某个服务出现故障时,Hystrix会根据配置的降级策略,对部分非关键性的服务进行降级处理。
    • 降级处理可以包括返回一个默认值、调用备用服务或执行备用逻辑等。
    • 降级处理的目的是为了保证核心任务的正常运行,同时降低系统资源的消耗。

总结来说,Hystrix通过服务隔离、服务熔断和服务降级等机制,提高了分布式系统的弹性和容错能力,有效防止了服务雪崩的发生。在微服务架构中,Hystrix是一个非常重要的组件,对于保证系统的稳定性和可用性具有关键作用。

2.4.2 熔断、降级与限流的概念与实现

SpringCloud微服务框架中的熔断、降级与限流是重要的容错和稳定性保障措施。以下是关于这些概念的定义、意义以及实现方式的详细解释:

熔断(Circuit Breaker)

概念

熔断机制是对系统的防护,主要用于防止某个微服务出现故障时被大量请求持续调用,导致整个系统资源的耗尽。当某个服务的错误率达到一个阈值时,熔断器会“打开”,此时服务调用方不会再去请求该服务,而是直接返回一个错误响应。一段时间后,熔断器会进入“半开”状态,允许部分请求尝试调用该服务,以检测服务是否已恢复。如果服务恢复正常,则熔断器关闭;否则,熔断器再次打开。

实现

  • 在Spring Cloud中,通常使用Netflix的Hystrix框架来实现熔断机制。
  • 添加Hystrix依赖到项目中,并在启动类上添加@EnableHystrix注解来启用Hystrix。
  • 在需要熔断的方法上添加@HystrixCommand注解,并配置熔断相关的参数,如错误率阈值、熔断时长等。

降级(Fallback)

概念

服务降级是一种通过牺牲部分功能来保证系统可用性和稳定性的策略。当某个微服务出现故障或响应过慢时,可以通过降级策略来快速响应客户端的请求,而不是直接返回错误或超时。降级策略可以是返回一个默认值、提供备用逻辑或跳转到另一个服务等。

实现

  • 在Hystrix的@HystrixCommand注解中,可以定义降级方法(fallback method),当服务调用失败时,Hystrix会自动调用该方法。
  • 在Spring Cloud中,除了使用Hystrix实现服务降级外,还可以通过Ribbon等客户端负载均衡器进行服务降级配置。

限流(Rate Limiting)

概念

限流是服务网关中的重要功能,用于防止恶意请求或过多的请求对微服务造成压力。通过限制服务的请求流量,可以保护服务的稳定性和可用性。

实现

  • Spring Cloud提供了多种限流实现方式:
    1. 使用Netflix的Hystrix,通过在方法上添加@HystrixCommand注解并设置最大并发数、超时时间等参数来实现限流。
    2. 使用Spring Cloud Gateway,通过配置匹配规则和限流策略(如限制每秒请求数、并发请求数等)来实现限流。
    3. 结合使用Redis进行限流,利用Redis的计数器功能来记录并限制请求数量。
    4. 使用Spring Cloud Sleuth和Zipkin进行请求追踪和限流,通过对请求的调用链路进行分析,确定哪些服务的请求频率较高,然后针对性地进行限流。

总结

熔断、降级和限流是微服务架构中保障系统稳定性和可用性的重要手段。通过合理配置这些机制,可以确保在微服务出现故障或遭受恶意攻击时,系统能够迅速响应并保护核心资源不被耗尽。

2.5 配置中心原理       

        详见《SpringCloud微服务框架的原理及应用详解(四)

2.6 API网关原理

        详见《SpringCloud微服务框架的原理及应用详解(四)

三、SpringCloud核心组件详解

3.1 服务注册与发现组件(Nacos)

        详见《SpringCloud微服务框架的原理及应用详解(五)

3.2 负载均衡组件(Ribbon)

        详见《SpringCloud微服务框架的原理及应用详解(五)

3.3 声明式服务调用组件(Feign)

        详见《SpringCloud微服务框架的原理及应用详解(六)

3.4 断路器与容错组件(Hystrix)

        详见《SpringCloud微服务框架的原理及应用详解(六)

3.5 配置中心组件(Spring Cloud Config)

        详见《SpringCloud微服务框架的原理及应用详解(七)

3.6 API网关组件(Gateway)

        详见《SpringCloud微服务框架的原理及应用详解(七)

四、SpringCloud微服务框架的应用实践

4.1 微服务架构设计与拆分

        详见《SpringCloud微服务框架的原理及应用详解(八)

4.2 微服务的安全与治理

        详见《SpringCloud微服务框架的原理及应用详解(八)

4.3 微服务的持续集成与持续部署(CI/CD)

        详见《SpringCloud微服务框架的原理及应用详解(九)

4.4 微服务架构下的性能优化与容灾处理

        详见《SpringCloud微服务框架的原理及应用详解(九)

五、SpringCloud微服务框架的挑战与未来展望

        详见《SpringCloud微服务框架的原理及应用详解(十)

六、结论

        详见《SpringCloud微服务框架的原理及应用详解(十)

七、结语

        文章至此,已接近尾声!希望此文能够对大家有所启发和帮助。同时,感谢大家的耐心阅读和对本文档的信任。在未来的技术学习和工作中,期待与各位大佬共同进步,共同探索新的技术前沿。最后,再次感谢各位的支持和关注。您的支持是作者创作的最大动力,如果您觉得这篇文章对您有所帮助,请分享给身边的朋友和同事!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Windows上用MinGW编译OpenCV项目运行全流程

一、准备软件 OpenCV源码CMake工具MinGW工具链&#xff08;需要选用 posix 线程版本&#xff1a;原因见此&#xff09; 二、操作步骤 官网提供了VC16构建版本的二进制包&#xff0c;但是没有给出GCC编译的版本。所以如果使用MinGW进行构建&#xff0c;那就只能从源码开始构建…

make与makefile

目录 一、make的默认目标文件与自动推导 二、不能连续make的原因 执行原理 touch .PHONY伪目标 make指令不回显 makefile多文件管理 简写依赖方法 三、回车与换行 四、缓冲区 一、make的默认目标文件与自动推导 假设这是一个makefile文件&#xff0c;make的时候默认生…

Java学习 - MySQL存储过程、函数和触发器练习实例

存储过程 存储过程是什么 存储过程是一组已经编译好的SQL语句存储过程优点有什么 安全 性能高 提高代码复用性创建存储过程的语法 DELIMITER $ # 不能加分号CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型) BEGIN存储过程语句块 END;$DELIMITER ;创建一个无参的存储…

K-means聚类算法详解与实战

一、引言 K-means聚类算法是一种无监督学习算法&#xff0c;旨在将数据点划分为K个不同的聚类或群组&#xff0c;使得同一聚类内的数据点尽可能相似&#xff0c;而不同聚类间的数据点尽可能不同。在图像处理、数据挖掘、客户细分等领域有着广泛的应用。本文将通过图文结合的方…

sizeof 和 strlen 比较

sizeof 和 strlen 在 C 语言中都是用于获取某种“大小”的&#xff0c;但它们之间有着显著的区别。 sizeof sizeof 是一个运算符&#xff0c;用于计算数据类型或对象在内存中的大小&#xff08;以字节为单位&#xff09;。它可以在编译时确定结果&#xff0c;因为它计算的是类…

AcWing 3358:放养但没有完全放养 ← 按位匹配

【题目来源】https://www.acwing.com/problem/content/3361/【题目描述】 一个鲜为人知的事实是&#xff0c;奶牛拥有自己的文字&#xff1a;「牛文」。牛文由 26 个字母 a 到 z 组成&#xff0c;但是当奶牛说牛文时&#xff0c;可能与我们所熟悉的 abcdefghijklmnopqrstuvwxyz…

Origin电源维修高压发生器GEXUS-3 GEXUS-15R-02U

GEXUS-3电源维修 Origin高压发生器维修 Origin电源维修 光电设备电源维修 Origin高压电源维修故障分析应注意两点&#xff1a; 故障分析检测和故障硬件更换&#xff0c;根据高压电源故障提示和工作表现初步判断故障的类型和哪些硬件出了问题&#xff0c;再根据初步判断缩小检测…

java实现持续集成

要使用Java实现Jenkins持续集成&#xff0c;你可以使用Jenkins的Java客户端库来执行一些常见的操作&#xff0c;例如创建任务&#xff0c;触发构建等。下面是一个简单的示例代码&#xff0c;展示了如何使用Java实现Jenkins持续集成&#xff1a; java import com.offbytwo.jenk…

了解Spring的BeanPostProcessor

了解Spring的BeanPostProcessor Spring框架提供了一种机制&#xff0c;允许在Spring容器实例化Bean之前和之后进行自定义的修改。这个机制就是BeanPostProcessor接口。BeanPostProcessor是Spring的核心接口之一&#xff0c;用于在Spring容器创建和初始化Bean的过程中进行干预和…

Java-拼接字符串数组(String.join()方法)

问题引入 刷算法题lc2288的时候遇见的一个小细节&#xff0c;记录一下&#xff0c;有兴趣的朋友可以做一下&#xff0c;练习一下哈哈~ 此题需要使用大家都比较熟悉的split方法将句子按照空格拆分为字符串数组。 然后再在数组中对每一个字符串操作&#xff0c;操作完成后要求…

【尚庭公寓SpringBoot + Vue 项目实战】预约看房与租约管理(完结)

【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理&#xff08;完结&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理&#xff08;完结&#xff09;1、业务说明2、接口开发2.1、预约看房管理2.1.1.保存或更新看房预约2.1.2. 查询个人预约…

【linux】shell脚本中设置字体颜色,背景颜色详细攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

Nginx Proxy 代理测试

目录 https://blog.csdn.net/Lzcsfg/article/details/139781909 一. 实验准备 二. 配置反向代理 三. 配置二层代理 解释流程 一. 实验准备 关闭防火墙和selinux&#xff0c;准备三台同一网段的虚拟机 localhostRoucky_linux9.4192.168.226.20localhostRoucky_linux9.419…

高校新闻头条系统

摘 要 随着互联网技术的快速发展&#xff0c;网络几乎成为了人们搜集信息和交流沟通最方便、快捷的通道&#xff0c;科技创新一直在影响着人们的生活&#xff0c;人们的衣食住行也在不断变化&#xff0c;与此同时&#xff0c;也大大改变了人们获取信息的方式&#xff0c;人们获…

Unity的渲染管线

渲染管线 概念 Unity的渲染管线是在图形学渲染管线的基础上&#xff0c;加上了高度可配置可扩展的框架&#xff0c;允许开发者自定义渲染流程。 渲染管线&#xff08;渲染流水线&#xff09;概述&#xff1a;将数据分阶段的变为屏幕图像的过程。 数据指的是模型、光源和摄像…

『FPGA通信接口』LVDS接口(4)LVDS接收端设计

文章目录 1.LVDS接收端概述2逻辑框图3.xapp855训练代码解读4.接收端发送端联调5.传送门 1.LVDS接收端概述 接收端的传输模型各个属性应该与LVDS发送端各属性一致&#xff0c;例如&#xff0c;如果用于接收CMOS图像传感器的图像数据&#xff0c;则接收端程序的串化因子、通道个…

最新版ChatGPT对话系统源码 Chat Nio系统源码

最新版ChatGPT对话系统源码 Chat Nio系统源码 支持 Vision 模型, 同时支持 直接上传图片 和 输入图片直链或 Base64 图片 功能 (如 GPT-4 Vision Preview, Gemini Pro Vision 等模型) 支持 DALL-E 模型绘图 支持 Midjourney / Niji 模型的 Imagine / Upscale / Variant / Re…

springboot 搭建一个 测试redis 集群连通性demo

背景&#xff1a;我需要用 springboot 建一个测试 redis 集群连通性的 demo 废话不多说直接上代码&#xff1a; 1.pom </dependency><!-- Spring Boot Starter Data Redis --><dependency><groupId>org.springframework.boot</groupId><arti…

【for循环】最大跨度

【for循环】最大跨度 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int n;int max 0, min 100;cin>>n;for(int i1; i<n; i1){int a;cin>>a;if(a>max){max a;}i…

VTABLE 基本表和透视表的分页功能

基本表和VTable数据分析透视表支持分页&#xff0c;但透视组合图不支持分页。 配置项&#xff1a; pagination.totalCount&#xff1a;数据项的总数。数据透视表中的VTable字段将被自动补充&#xff0c;以帮助用户获取数据项的总数。pagination.perPageCount&#xff1a;显示每…