当前位置: 首页 > news >正文

【MongoDB】Java连接MongoDB

连接URI

连接 URI提供驱动程序用于连接到 MongoDB 部署的指令集。该指令集指示驱动程序应如何连接到 MongoDB,以及在连接时应如何运行。下图解释了示例连接 URI 的各个部分:

连接的URI 主要分为 以下四个部分

第一部分 连接协议

示例中使用的 连接到具有 DNS SRV 记录的 Atlas MongoDB  。自建MongoDB使用 mongodb作为协议 即可,

标准的连接字符串格式

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

第二部分 账号密码认证

如果使用基于密码的身份验证机制,则在协议之后,连接字符串将包含您的凭据。将 user 的值替换为您的用户名,将 pass 替换为您的密码。如果您的身份验证机制不需要凭据,请忽略连接 URI 的这一部分。

第三部分 实例的地址端口

连接 URI 的下一部分指定主机名或 IP 地址,后跟 MongoDB 实例的端口。在示例中,sample.host 代表主机名,27017 是端口号。替换这些值以参考您的 MongoDB 实例。

第四部分 连接选项

连接 URI 的最后一部分包含作为参数的连接选项。 在此示例中,您设置了两个连接选项: maxPoolSize=20w=majority 。 有关连接选项的更多信息,

连接到副本集

MongoDB 副本集部署是一组用于存储相同数据集的连接实例。这种实例配置提供了 数据冗余 高可用性

要连接到副本集部署,请指定副本集节点主机名(或 IP 地址)和端口号。

如果您无法提供副本集中主机的完整列表,则可以在该副本中指定单个主机或主机子集,并指示驱动程序通过以下方式执行自动发现

  • 将副本集名称指定为 replicaSet 参数的值

  • 将  directConnection 参数的值  指定为 false

  • 在副本集中指定多个主机

提示:

尽管可以指定副本集中主机的子集,但建议还是提供包含副本集中的所有主机的完整列表,以确保驱动程序能够在其中一台主机无法访问时建立连接。

ConnectionString

ConnectionString connectionString = new ConnectionString("mongodb://host1:27017,host2:27017,host3:27017/");
MongoClient mongoClient = MongoClients.create(connectionString);

MongoClientSettings

ServerAddress seed1 = new ServerAddress("host1", 27017);
ServerAddress seed2 = new ServerAddress("host2", 27017);
ServerAddress seed3 = new ServerAddress("host3", 27017);
MongoClientSettings settings = MongoClientSettings.builder().applyToClusterSettings(builder ->builder.hosts(Arrays.asList(seed1, seed2, seed3))).build();
MongoClient mongoClient = MongoClients.create(settings);

连接选项

读取偏好

读取偏好描述 MongoDB 客户端如何将读取操作路由到副本集

默认情况下,应用程序将其读取操作定向到副本集的主节点(即读取偏好模式“主节点”)。但是,客户端可以指定读取偏好以将读取操作发送到从节点。

读取偏好由读取偏好模式、标签集列表(可选)、maxStalenessSeconds 选项和对冲读选项构成。对冲读选项适用于分片集群,面向使用非 primary 读取偏好的读取。

读取偏好模式

下表给出读取偏好模式的简要摘要:

注意

非 primary 读取偏好模式支持对分片集群进行对冲读。

读取偏好模式

说明

primary

默认模式。从当前副本集主节点

分布式事务包含读取操作的primary必须使用读取偏好

primaryPreferred

在大多数情况下,操作将从主节点读取,但如果主节点不可用,则操作将从从节点成员读取。

读取优先级 primaryPreferred 支持分片集群上的对冲读。

secondary

所有操作均会从副本集的辅助成员中读取。

读取优先级 secondary 支持分片集群上的对冲读。

secondaryPreferred

操作通常从副本集的从节点成员读取数据。如果副本集只有一个主节点成员,并且没有其他成员,则操作将从主节点成员读取数据。

读取优先级 secondaryPreferred 支持分片集群上的对冲读。

nearest

根据指定的延迟阈值,从符合条件的随机副本集成员读取操作,无论该成员是主节点成员还是从节点成员。 该操作在计算延迟时会考虑以下因素:

  • localThresholdMS 连接字符串选项

  • maxStalenessSeconds 读取偏好选项

  • 任何指定的标签集列表

读取偏好 nearest 支持在分片集群上进行对冲读,并默认启用对冲读选项。

行为

除 primary 之外的所有读取偏好模式都可能返回过时数据,因为从节点在异步过程中从主节点复制操作。[1] 如果选择使用非 primary 模式,请确保应用程序可以容忍过时数据。

读取偏好不影响数据的可见性;即客户端可以在写入结果被确认或传播到大多数副本集节点之前看到写入结果。有关详细信息,请参阅读取隔离、一致性和新近度

读取偏好不会影响因果一致性。因果一致性会话为具有 读关注的读取操作以及具有 "majority" 写关注的写入操作提供的适用于 MongoDB 部署的所有节点。

读取偏好模式

primary

所有读取操作仅使用当前副本集主节点。[1] 这是默认的读取模式。如果主节点不可用,则读取操作会产生错误或抛出异常。

primary 读取偏好模式与使用标签集列表或 maxStalenessSeconds 的读取偏好模式不兼容。如果指定标签集列表或带有 maxStalenessSeconds 的 primary 值,则驱动程序将产生错误。

分布式事务包含读取操作的primary必须使用读取偏好

primaryPreferred

在大多数情况下,操作都是从副本集的主节点读取。但是,如果主节点不可用(例如在故障转移期间),则操作将从满足读取偏好的 从节点 和标签集列表的maxStalenessSeconds读取。

当 primaryPreferred 读取偏好包含 maxStalenessSeconds 值且没有可供读取的主节点时,客户端会通过将从节点的最后一次写入与执行最近一次写入的从节点进行比较,从而估计每个从节点的陈旧程度。然后,客户端会将读取操作定向到估计延迟小于或等于 maxStalenessSeconds 的从节点。

当读取偏好包含标签集列表(标签集数组)时且没有可读取的主节点时,客户端会尝试查找具有匹配标签的从节点(按顺序尝试标签集,直到找到匹配项)。如果找到匹配的从节点,则客户端会从最近的匹配从节点群组中随机选择一个从节点。如果从节点没有匹配的标签,读取操作就会出错。

当读取偏好包含 maxStalenessSeconds 值和标签集列表时,客户端首先按过时程度筛选,然后按指定标签筛选。

使用 primaryPreferred 模式进行读取操作可能会返回过时数据。使用 maxStalenessSeconds 选项避免从客户端估计过于陈旧的从节点读取数据。

注意

读取优先级 primaryPreferred 支持分片集群上的对冲读。

secondary

操作只能从副本集的从节点读取。如果没有可用的从节点,则此读取操作会出现错误或异常。

大多数副本集至少有一个从节点,但在某些情况下可能没有可用的从节点。例如,如果节点处于恢复状态或不可用状态,则由主节点、从节点和仲裁节点构成的副本集可能没有任何从节点。

当 secondary 读取偏好包含 maxStalenessSeconds 值时,客户端通过将从节点的最后一次写入与主节点进行比较来估计每个从节点的过时程度。然后,客户端会将读取操作定向到估计延迟小于或等于 maxStalenessSeconds 的从节点。如果没有主节点,客户端将使用最近写入的从节点进行比较。

当读取偏好包含标签集列表(标签集数组)时,客户端会尝试查找具有匹配标签的从节点成员(按顺序尝试标签集,直到找到匹配项)。如果找到匹配的从节点,则客户端会从最近的匹配从节点群组中随机选择一个从节点。如果从节点没有匹配的标签,读取操作就会出错。

当读取偏好包含 maxStalenessSeconds 值和标签集列表时,客户端首先按过时程度筛选,然后按指定标签筛选。

使用 secondary 模式进行读取操作可能会返回过时数据。使用 maxStalenessSeconds 选项避免从客户端估计过于陈旧的从节点读取数据。

注意

读取优先级 secondary 支持分片集群上的对冲读。

secondaryPreferred

操作通常从副本集的从节点成员读取数据。如果副本集只有一个主节点成员,并且没有其他成员,则操作将从主节点成员读取数据。

当 secondaryPreferred 读取偏好包含 maxStalenessSeconds 值时,客户端通过将从节点的最后一次写入与主节点进行比较来估计每个从节点的过时程度。然后,客户端会将读取操作定向到估计延迟小于或等于 maxStalenessSeconds 的从节点。如果没有主节点,客户端将使用最近写入的从节点进行比较。如果没有估计滞后小于或等于 maxStalenessSeconds 的从节点,则客户端会将读取操作定向到副本集的主节点。

当读取偏好包含标签集列表(标签集数组)时,客户端会尝试查找具有匹配标签的从节点成员(按顺序尝试标签集,直到找到匹配项)。如果找到匹配的从节点,则客户端会从最近的匹配从节点群组中随机选择一个从节点。如果不存在具备匹配标签的从节点,则客户端忽略标签并从主节点读取。

当读取偏好包含 maxStalenessSeconds 值和标签集列表时,客户端首先按过时程度筛选,然后按指定标签筛选。

使用 secondaryPreferred 模式进行读取操作可能会返回过时数据。使用 maxStalenessSeconds 选项避免从客户端估计过于陈旧的从节点读取数据。

注意

读取优先级 secondaryPreferred 支持分片集群上的对冲读。

nearest

驱动程序从网络延迟处于可接受延迟窗口内的节点读取数据。路由读取操作时,nearest 模式中的读取不考虑节点是主节点还是从节点:主节点和从节点均被同等对待。

设置此模式可最大限度地减少网络延迟对读取操作的影响,而不会优先考虑当前或过时的数据。

当读取偏好包含 maxStalenessSeconds 值时,客户端会通过将从节点的最后一次写入与主节点的最后一次写入(如果可用)进行比较来估计每个从节点的陈旧程度;或者,如果没有主节点,则会将其与执行最近一次写入的从节点进行比较。然后,客户端会过滤掉其估计延迟大于 maxStalenessSeconds 的所有从节点,并将此读取操作随机定向到网络延迟不超过可接受延迟窗口

如果指定标签集列表,则客户端会尝试查找与指定标签集列表匹配的副本集节点,并将读取定向到最近的群组

当读取偏好包含 maxStalenessSeconds 值和标签集列表时,客户端首先按过时程度筛选,然后按指定标签过滤。然后,客户端从剩余的 mongod 实例中,随机将读取定向到处于可接受延迟时间范围内的实例。读取偏好节点选择文档详细描述了该过程。

使用 nearest 模式进行读取操作可能会返回过时数据。使用 maxStalenessSeconds 选项避免从客户端估计过于陈旧的从节点读取数据。

注意

读取偏好 nearest 默认指定使用对冲读来处理分片集群上的读取操作。

提示

另请参阅:

要了解特定读取偏好设置的使用案例,请参阅读取偏好使用案例

配置读取偏好

使用 MongoDB 驱动程序时,您可以使用驱动程序的读取偏好 API 指定读取偏好。请参阅驱动程序API 文档。您还可以在连接到副本集或分片集群时设置读取偏好(对冲读选项除外)。有关示例,请参阅连接字符串。

对于给定的读取偏好,MongoDB 驱动程序使用相同的节点选择逻辑

使用 mongosh 时,请参阅 cursor.readPref() 和 Mongo.setReadPref()。

读取偏好和事务

分布式事务包含读取操作的必须使用primary 读取偏好

所有连接选项

连接选项

参考

连接字符串 - MongoDB 手册 v7.0

相关文章:

【MongoDB】Java连接MongoDB

连接URI 连接 URI提供驱动程序用于连接到 MongoDB 部署的指令集。该指令集指示驱动程序应如何连接到 MongoDB,以及在连接时应如何运行。下图解释了示例连接 URI 的各个部分: 连接的URI 主要分为 以下四个部分 第一部分 连接协议 示例中使用的 连接到具有…...

nginx支持的不同事件驱动模型

Nginx 支持的不同事件驱动模型 Nginx 是一款高性能的 Web 和反向代理服务器,它支持多种事件驱动模型来处理网络 I/O 操作。不同的操作系统及其版本支持不同的事件驱动模型,这些模型对于 Nginx 的并发处理能力和性能至关重要。下面详细介绍 Nginx 支持的…...

C++ TinyWebServer项目总结(7. Linux服务器程序规范)

进程 PID 进程的PID(Process ID)是操作系统中用于唯一标识一个进程的整数值。每个进程在创建时,操作系统都会分配一个唯一的PID,用来区分不同的进程。 PID的特点 唯一性: 在操作系统运行的某一时刻,每个…...

基于STM32单片机设计的秒表时钟计时器仿真系统——程序源码proteus仿真图设计文档演示视频等(文末工程资料下载)

基于STM32单片机设计的秒表时钟计时器仿真系统 演示视频 基于STM32单片机设计的秒表时钟计时器仿真系统 摘要 本设计基于STM32单片机,设计并实现了一个秒表时钟计时器仿真系统。系统通过显示器实时显示当前时间,并通过定时器实现秒表计时功能。显示小时…...

人才流失预测项目

在本项目中,通过数据科学和AI的方法,分析挖掘人力资源流失问题,并基于机器学习构建解决问题的方法,并且,我们通过对AI模型的反向解释,可以深入理解导致人员流失的主要因素,HR部门也可以根据分析…...

BUG——imx6u开发_结构体导致的死机问题(未解决)

简介: 最近在做imx6u的linux下裸机驱动开发,由于是学习的初级阶段,既没有现成的IDE可以使用,也没有GDB等在线调试工具,只能把代码烧写在SD卡上再反复插拔,仅靠卑微的亮灯来判断程序死在哪一步。 至于没有使…...

问答:什么是对称密钥、非对称密钥,http怎样变成https的?

文章目录 对称密钥 vs 非对称密钥HTTP 变成 HTTPS 的过程 对称密钥 vs 非对称密钥 1. 对称密钥加密 定义: 对称密钥加密是一种加密算法,其中加密和解密使用的是同一个密钥。特点: 速度快: 因为只使用一个密钥,所以加密和解密速度较快。密钥分发问题: 双…...

虚拟滚动列表组件ReVirtualList

虚拟滚动列表组件ReVirtualList 组件实现基于 Vue3 Element Plus Typescript,同时引用 vueUse lodash-es tailwindCss (不影响功能,可忽略) 在 ReList 的基础上,增加虚拟列表功能,在固定高度的基础上,可以优化大数…...

稳定、耐用、美观 一探究竟六角头螺钉螺栓如何选择

在机器与技术未被发现的过去,紧固件设计和品质并不稳定。但是,他们已成为当今许多行业无处不在的构成部分。六角头标准件或六角头标准件是紧固件中持续的头部设计之一,它有六个面,对广泛工业应用大有益处。六角头标准件或常分成六…...

数据库Mybatis基础操作

目录 基础操作 删除 预编译SQL 增、改、查 自动封装 基础操作 环境准备 删除 根据主键动态删除数据:使用了mybatis中的参数占位符#{ },里面是传进去的参数。 单元测试: 另外,这个方法是有返回值的,返回这次操作…...

人物形象设计:塑造独特角色的指南

引言 人物形象设计是一种创意过程,它利用强大的设计工具,通过视觉和叙述元素塑造角色的外在特征和内在性格。这种设计不仅赋予角色以生命,还帮助观众或读者在心理层面上与角色建立联系。人物形象设计的重要性在于它能够增强故事的吸引力和说…...

网络安全-安全策略初认识

文章目录 前言理论介绍1. 安全策略1.1 定义:1.2 关键术语: 2. 防火墙状态监测 实战步骤1:实验环境搭建步骤2:配置实现 总结1. 默认安全策略2. 自定义安全策略3. 防火墙状态会话表 前言 who:本文主要写给入门防火墙的技…...

python import相对导入与绝对导入

文章目录 相对导入与绝对导入绝对导入相对导入何时使用相对导入何时使用绝对导入示例 相对导入与绝对导入 在Python中,from .file_manager import SomeFunction 和 from file_manager import SomeFunction 两种导入方式看似相似,但在模块寻找机制上存在…...

深入理解 Go 语言原子内存操作

原子内存操作提供了实现其他同步原语所需的低级基础。一般来说,你可以用互斥体和通道替换并发算法的所有原子操作。然而,它们是有趣且有时令人困惑的结构,应该深入了解它们是如何工作的。如果你能够谨慎地使用它们,那么它们完全可以成为代码优化的好工具,而不会增加复杂性…...

PostgreSQL几个扩展可以帮助实现数据的分词和快速查询

在 PostgreSQL 数据库中,有几个扩展可以帮助实现数据的分词和快速查询,特别是在处理全文搜索和文本分析时。以下是几个常用的扩展: 1. pg_trgm pg_trgm(Trigram)扩展是 PostgreSQL 中的一个强大的工具,它可以通过计算字符串之间的相似度来实现快速文本搜索。它支持基于…...

C盘满了怎么办?教你清理C盘的20个大招,值得收藏备用

C盘满了怎么办?教你清理C盘的20个大招,值得收藏备用 今天给大家介绍20种C盘清理的方法,下次遇到C盘满了红了就知道怎么做了,喜欢请点赞收藏关注点评。 清理更新缓存 清理微信缓存 查找大文件清理或者迁移 磁盘缓存清理 系统还…...

原生js实现下滑到当前模块进度条填充

<div style"height: 1500px;"></div> <div class"progress-container"><div class"progress-bar" data-progress"90%"><p class"progress-text">Google Ads在Google搜索引擎上覆盖超过90%的互…...

显示弹出式窗口的方法

文章目录 1. 概念介绍2. 使用方法3. 示例代码 我们在上一章回中介绍了Sliver综合示例相关的内容&#xff0c;本章回中将介绍PopupMenuButton组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的PopupMenuButton组件位于AppBar右侧&#xf…...

Java-什么是缓存线程池?

什么是缓存线程池? 缓存线程池 (CachedThreadPool) 是一种特殊的线程池,它能够动态地调整线程的数量,以适应任 务的需求。这种线程池非常适合处理大量短暂的任务,因为它会根据任务的数量自动增加或减少线 程的数量。 缓存线程池的特点: 线程数量动态调整:缓存线程池…...

esbuild中的Binary Loader:处理二进制文件

在前端或Node.js项目中&#xff0c;有时需要处理二进制文件&#xff0c;如图片、音频、视频或其他非文本资源。esbuild提供了一款名为Binary Loader的插件&#xff0c;它能够在构建时将二进制文件加载为二进制缓冲区&#xff0c;并使用Base64编码将其嵌入到打包文件中。在运行时…...

深度好文:从《黑神话:悟空》看未来游戏趋势:高互动性、个性化与全球化

引言 在数字时代的浪潮中&#xff0c;游戏产业以其独特的魅力和无限的可能性&#xff0c;成为了全球娱乐文化的重要组成部分。随着科技的飞速发展&#xff0c;特别是高性能计算和人工智能技术的突破&#xff0c;游戏的世界变得越来越真实、细腻且富有深度。而在这股技术洪流中…...

【中项第三版】系统集成项目管理工程师 | 第 12 章 执行过程组

前言 本章属于10大管理的内容&#xff0c;上午题预计会考8-10分&#xff0c;下午案例分析也会进行考查。学习要以教材为主。 目录 12.1 指导与管理项目工作 12.1.1 主要输入 12.1.2 主要输出 12.2 管理项目知识 12.2.1 主要输入 12.2.2 主要输出 12.3 管理质量 12.3.…...

C语言自动生成宏定义枚举类型和字符串

#include <stdio.h>// 定义错误枚举 #define ERROR_LIST(e) \e(SUCCESS) \e(FAILURE) \e(NOT_FOUND) \e(TIMEOUT)// 使用宏生成枚举 #define GENERATE_ENUM(ENUM) ENUM, typedef enum {ERROR_LIST(GENERATE_ENUM) } ErrorCode;// 使用宏生成字符串数组…...

C#单例模式

&#xfeff;using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _3._3._6_单例模式 {public class Singleton{private static Singleton s_instance;private int _state;private Singleton(int …...

10-使用sentinel流控

本文介绍sentinel的直接流控的使用。 0、环境 jdk 1.8sentinel 1.8.2springboot 2.4.2 1、sentinel环境搭建 从官方发布的网站上下载: sentinel Jar&#xff0c;下载对应版本。 下载完成后&#xff0c;进入刚才下载的Jar文件所在的目录&#xff0c;执行如下命令&#xff1a…...

redis AOF机制

在redis运行期间&#xff0c;不断将redis执行的写命令写到文件中&#xff0c;redis重启之后&#xff0c;只要将这些命令重复执行一遍就可以恢复数据。因为AOF只是将少量的写命令写入AOF文件中&#xff0c;因此其执行效率高于RDB&#xff0c;开启AOF即使Redis发生故障&#xff0…...

Day 21代码|随想录| 二叉树完结撒花,今日刷题669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.吧二叉搜索树转换为累加树

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 二叉树 Part06二、题目题目一&#xff1a;669.修剪二叉搜索树解题思路&#xff1a;递归法迭代法&#xff1a; 题目二&#xff1a; 108.将有序数组转换为二叉搜索树解题思路递归法&#xff1a;迭代…...

cmake教程一

1. Start 1.1 构建简单工程 cmake_minimum_required(VERSION 3.0) project(Step1) add_executable(Step1 main.cpp)设置cmake最低版本要求设置工程名字设置工程生成可执行程序 2. 声明 C Standard set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True)如果我…...

3D场景标注标签信息,three.js CSS 2D渲染器CSS2DRenderer、CSS 3D渲染器CSS3DRenderer(结合react)

如果你想用HTML元素作为标签标注三维场景中模型信息&#xff0c;需要考虑定位的问题。比如一个模型&#xff0c;在代码中你可以知道它的局部坐标或世界坐标xyz&#xff0c;但是你并不知道渲染后在canvas画布上位置&#xff0c;距离web页面顶部top和左侧的像素px值。自己写代码把…...

C++参悟-单例模式

单例模式 一、概述1. 特点2. 实现方式3. 应用场景 二、实现代码1. 静态局部变量的懒汉单例2. 加锁的懒汉式单例3. 使用 C11 中的 std::call_one 的懒汉单例4. 饿汉式单例 一、概述 这里记录一下单例模式的最常用使用&#xff0c;单例模式&#xff08;Single Pattern&#xff0…...

怎么做.com的网站/网址注册查询

转载&#xff1a;http://blog.csdn.net/kimmking/article/details/8424319 DOM方式是直接把xml文件全部加载到内存&#xff0c;然后建立dom树&#xff0c;特点&#xff1a;可读可写&#xff0c;支持XPath&#xff0c;但是非常慢&#xff0c;占用内存为xml的10倍数量级&#xff…...

wordpress 主题缓存/企业邮箱怎么开通注册

检查一下采购订单...

seo关键词外包公司/新网站排名优化怎么做

CSS 变量 CSS 变量 var() 函数用于插入 CSS 变量的值。 CSS 变量可以访问 DOM&#xff0c;这意味着您可以创建具有局部或全局范围的变量&#xff0c;使用 JavaScript 来修改变量&#xff0c;以及基于媒体查询来修改变量。 使用 CSS 变量的一种好方法涉及设计的颜色。您可以…...

苏州微网站建设/企业为何选择网站推广外包?

参考《导弹飞行力学》 对部分参数的解释: dx/dtf(t,x): 之前一直看不懂f&#xff08;t,x&#xff09;到底指的哪个式子&#xff0c;其实在开头就提出来了&#xff0c;f是dy K2△t*f(tk△t/2,xk1/2*K1)&#xff1a;t在导弹飞行力学&#xff0c;是y(0)(M中是1)&#xff0c;所…...

江苏企业网站定制服务/免费发外链

一、首先安装 MySQL1. 安装前更新一下仓库&#xff0c;输入命令&#xff1a;sudo apt-get updatealgerfanalgerfan:~$ sudo apt-get autoremove --purge mysql-server-5.72. 输入命令&#xff1a;sudo apt-get install mysql-server mysql-client安装MySQL数据库程序和命令行管…...

服务推广网站/搜索引擎优化涉及的内容

在本文中&#xff0c;我将描述Kafka中日志压缩数据结构。然后&#xff0c;我会向大家展示Kafka如何在内部将这些topic的状态保存在文件系统中。预备知识我假设大家已经熟悉Apache Kafka的基本概念&#xff0c;比如代理(broker)、主题(topic)、分区(partition)、消费者(consumer…...