华为云用户手册

  • 数据复制 DCS的主备和集群实例支持部署高可用实例。租户可选择在单可用区或多可用区中部署实例。当租户选择跨AZ实例时,DCS实例会主动建立和维护Redis同步复制。在实例主节点故障的情况下,缓存实例会自动将备实例升为主节点,从而达到高可用的目的。如果租户使用缓存实例时,业务中读取数据比例大,可以选择4.0以上版本的读写分离实例或者集群多副本实例,缓存实例会自动维护主节点和多个备节点之间的数据同步复制,租户可以根据业务需要连接不同的地址进行读写分离。
  • 网络隔离 VPC允许租户通过配置VPC入站IP范围,来控制连接缓存实例的IP地址段。DCS实例运行在租户独立的VPC内。租户可以创建一个跨可用区的子网组,之后可以根据业务需要,将部署DCS的高可用实例选择此子网完成,DCS在创建完实例后会为租户分配此子网的IP地址,用于缓存实例。DCS实例部署在租户VPC后,租户可通过VPN使其它VPC能够访问实例所在VPC,也可以在VPC内部创建ECS,通过私有IP连接缓存实例。租户可以综合运用子网、安全组、白名单等配置,来完成DCS实例的隔离,提升DCS实例的安全性。
  • 访问控制 租户创建DCS实例时,可以选择配置安全组(仅Redis 3.0/Redis 6.0企业版/Memcached实例支持)或者白名单(仅Redis 4.0、Redis 5.0和Redis 6.0基础版支持)。 租户可以通过VPC,对DCS实例所在的安全组或白名单入站、出站规则进行限制,从而控制可以连接实例的网络范围。 配置安全组/白名单不需要重启实例。 租户创建DCS实例时,建议将访问方式设置为密码访问,并为实例设置访问密码,防止未经认证的客户端误操作实例,以达到对客户端进行认证访问的目的,提高实例使用的安全性。
  • 传输和存储加密 Redis的传输协议RESP在Redis 6.0之前的版本仅支持明文传输。Redis 6.0基础版实例支持RESP3传输协议,支持SSL传输加密。 当前DCS实例在开启公网访问时(仅Redis 3.0实例支持),支持基于Stunnel的客户端与服务端TLS加密传输(参考文档:Stunnel安装和配置)。在开启公网访问时,指定的CA会为每个实例生成唯一的服务证书。客户端可以使用从服务控制台上下载的CA根证书,并在连接实例时提供该证书,对实例服务端进行认证并达到加密传输的目的。 由于需要兼容开源RESP协议,在未开启公网访问时,如果客户有传输加密诉求,建议在数据存储前使用加密算法进行加密后传输(例如AES 256等),并且控制在信任域内进行访问,加密后的数据在落盘保存时同样也会加密保存。
  • 迁移信息收集表 评估和准备阶段收集的信息填写参考下表: 表2 迁移信息收集 迁移源 信息项 说明 源Redis (列出所有待迁移的实例) 源Redis实例的IP地址 - Redis访问密码(如有) - 总数据量大小 info memory命令查询得到,参考used_memory_human的值。 用于评估迁移方案、DCS缓存实例规格、ECS可用磁盘空间等是否满足,以及预估迁移耗时(业务中断时间)。 不为空的数据库编号 info keyspace命令查询得到。 用于确认迁移是否涉及多数据库,非AOF文件方式迁移,部分开源工具可能须逐库处理导出和导入。 DCS缓存实例中,单机和主备实例支持0-255共256个数据库,集群默认只提供一个数据库。 各数据库的key数量 用于迁移后进行数据完整性验证。 数据类型 CDM迁移服务当前支持Hash和String两种数据格式,如果源数据含有list、set之类数据,请采用第三方迁移工具。 华为云ECS(弹性云服务器) 如果待迁移实例较多,可准备多台ECS并行迁移 弹性IP地址 选择与DCS缓存实例网络互通的弹性云服务器进行数据导入,确保导入过程网络稳定。 带宽建议选取高配,提升数据传输效率。 系统登录用户/密码 - CPU/内存 部分迁移工具支持多线程并行导入,使用高规格ECS,能提升导入速度。 可用磁盘空间 ECS需要预留足够的可用磁盘空间,存储压缩文件以及解压后的缓存数据文件。 注:为提高数据传输效率,对于较大的数据文件,建议压缩后再传输到弹性云服务器。 DCS缓存实例 (根据源Redis实例数与数据量情况选择合适的规格与实例数) 实例连接地址 - 实例连接端口 - 实例访问密码 - 实例类型 - 实例规格/可用内存 - 网络配置 VPC 提前规划VPC,确保应用服务、DCS缓存实例等处于相同VPC中。 子网 - 安全组或白名单 由于Redis 3.0和Redis 4.0/5.0/6.0实例部署模式不一样,控制访问方式也不一样,需要制定相应的安全组或白名单规则,确保网络连通。具体请根据目标Redis实例参考配置安全组或者配置白名单 ... ... 其他配置信息。
  • DCS实例配置建议 读取模式(readMode) 建议采用MASTER,即Master节点承担所有的读写流量,一方面避免数据因主从同步时延带来的一致性问题;另一方面,如果从节点故障,配置值=SLAVE,所有读请求会触发报错;配置值=MASTER_SLAVE,部分读请求会触发异常。读报错会持续failedSlaveCheckInterval(默认180s)时间,直至从可用节点列表中摘除。 如需读写流量分流处理,DCS服务提供了针对读写流量分流的读写分离实例类型,通过在中间架设代理节点实现读写流量分发,遇到从节点故障时,自动切流至主节点,对业务应用无感知,且故障感知时间窗口远小于redisson内部的时间窗口。 订阅模式(subscriptionMode) 建立采用MASTER,原理同上。 连接池配置 以下计算方式只适用于一般业务场景,建议根据业务情况做适当调整适配。 连接池的大小没有绝对的标准,建议根据业务流量进行合理配置,一般连接池大小的参数计算公式如下: 最小连接数 =(单机访问Redis QPS)/(1000ms / 单命令平均耗时) 最大连接数 =(单机访问Redis QPS)/(1000ms / 单命令平均耗时)* 150% 举例:某个业务应用的QPS为10000左右,每个请求需访问Redis10次,即每秒对Redis的访问次数为100000次,同时该业务应用有10台机器,计算如下: 单机访问Redis QPS = 100000 / 10 = 10000 单命令平均耗时 = 20ms(Redis处理单命令耗时为5~10ms,遇到网络抖动按照15~20ms来估算) 最小连接数 =(10000)/(1000ms / 20ms)= 200 最大连接数 =(10000)/(1000ms / 20ms)* 150% = 300
  • SSL连接配置(可选配置) 当实例开启了SSL,通过SSL连接实例时,请将基于Bean方式配置中的RedissonClient构造方法clientConfiguration()中添加如下configRedissonSSL(serverConfig)逻辑,同时将redis的连接地址从redis://ip:port改为rediss://ip:port格式。Redis实例支持SSL的情况请参考配置Redis SSL数据加密传输。 private void configRedissonSSL(BaseConfig serverConfig) { TrustManagerFactory trustManagerFactory = null; try { //加载自定义路径下的ca证书,可结合具体业务配置 CertificateFactory cf = CertificateFactory.getInstance("X.509"); Certificate ca; try (InputStream is = new FileInputStream(certificationPath)) { ca = cf.generateCertificate(is); } //创建keystore String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca); //创建TrustManager trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); } catch (CertificateException | IOException | KeyStoreException | NoSuchAlgorithmException e) { e.printStackTrace(); return; } serverConfig.setSslTrustManagerFactory(trustManagerFactory); }
  • 操作步骤 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入实例信息页面。 “缓存管理”支持通过筛选来查询对应的缓存实例。支持的筛选条件有“名称”、“规格”、“ID”、“IP地址”、“可用区”、“状态”、“实例类型”、“缓存类型”等。 在需要备份的DCS缓存实例左侧,单击实例名称,进入实例的基本信息页面。 单击“备份与恢复”页签,进入备份与恢复管理页面。 单击“手动备份”,弹出手动备份窗口。 选择备份格式,支持选择RDB格式或AOF格式。 Redis 4.0、5.0、6.0基础版和企业版高性能型实例支持选择RDB或AOF备份格式,企业版存储型实例仅支持RDB格式,Redis 3.0实例仅支持RDB格式。 AOF格式的备份会优先在从节点备份,从节点AOF会被重写。 单击“确定”,开始执行手工备份任务。 备注说明最长不能超过128个字节。 实例备份需耗时10~15分钟,备份期间发生的数据新增或修改记录,将不会保存到备份数据中。
  • 分布式缓存服务控制台简介 您可以登录分布式缓存服务管理控制台,购买缓存实例、进行实例日常操作和维护,查看实例状态和实例内存使用情况,进行在线咨询,解决使用过程的问题。 下图为分布式缓存服务控制台页面简介,控制台各区域内容请以实际页面为准。 图3 分布式缓存控制台页面 切换区域 切换不同区域(Region),您可以选择接近您的应用程序的区域。 切换云服务 切换到其他云服务的Console页面,例如,虚拟私有云服务、云监控服务。 购买入口 购买Redis实例入口。 菜单区域 提供缓存实例日常操作、数据迁移等功能入口。 热门活动、通知区域 主要显示当前阶段分布式缓存服务新上线的功能,以及优惠活动。 实例数 显示当前用户下所有的资源实例总数,以及故障实例数量。 实例监控和告警 显示当前用户下实例内存使用率排行较前的实例。如果您需要了解单个实例的信息,可参考查看和修改DCS实例基本信息。 您可以为自己的实例创建告警规则,当产生告警时,可以第一时间处理。设置操作,请参考配置告警。 常用操作指导 提供分布式缓存服务中常用的操作指导链接,您可以进入操作文档,了解更多业务细节。 在线帮助 在产品使用过程中有任何疑问,可以使用智能客服进行在线咨询。
  • 公网连接Redis (仅Redis 3.0涉及) 在进行公网访问时,请先仔细阅读公网连接章节,检查实例是否满足公网访问的要求。 连接时提示:Error: Connection reset by peer或者出现:远程主机强迫关闭一个现有的连接。 原因1:安全组没有配置正确。 解决方法:需要允许Redis实例被访问,具体配置操作和公网连接操作,请按照公网连接章节中的操作进行。 原因2:查看Redis所在vpc子网是否被ACL关联,同时这个ACL出方向被限制了。若是,放开限制。 原因3:开启了SSL加密传输,连接时没有安装配置Stunnel,直接使用了界面提示的IP地址进行连接。 解决方法:开启SSL加密时,必须安装配置Stunnel客户端,具体操作,请按照公网连接Redis实例(开启SSL加密)执行。其中,请注意,在连接Redis实例命令中,IP地址需要配置为Stunnel客户端地址和端口,不要使用控制台展示的Redis实例公网连接地址和端口。 已经开启了公网访问的Redis实例,公网访问被关闭了,无法使用公网访问。 原因:该Redis实例绑定的弹性公网IP被解绑,导致Redis实例公网被关闭。 解决方法:在控制台重新开启实例的公网访问,绑定弹性公网IP,并重新连接。
  • 带宽超限导致连接问题 当实例已使用带宽达到实例规格最大带宽,可能会导致部分Redis连接超时现象。 您可以查看监控指标“流控次数”,统计周期内被流控的次数,确认带宽是否已经达到上限。 然后,检查实例是否有大Key和热Key,如果存在大Key或者单个Key负载过大,容易造成对于单个Key的操作占用带宽资源过高。大Key和热Key操作,请参考分析实例大Key和热Key。 Redis 4.0及之后版本的实例,支持通过控制台对Redis实例进行带宽扩容,可用于解决带宽超限的问题。
  • 性能问题导致连接超时 使用了keys等消耗资源的命令,导致CPU使用率超高;或者实例没有设置过期时间、没有清除已过期的Key,导致存储的数据过多,一直在内存中,内存使用率过高等,这些都容易出现访问缓慢、连接不上等情况。 建议客户改成scan命令或者禁用keys命令。 查看监控指标,并配置对应的告警。监控项和配置告警步骤,可查看必须配置的监控告警。 例如,可以通过监控指标“内存利用率”和“已用内存”查看实例内存使用情况、“活跃的客户端数量”查看实例连接数是否达到上限等。 检查实例是否存在大Key和热Key。 DCS控制台提供了大Key和热Key的分析功能,具体使用,请参考分析Redis实例的大Key和热Key。
  • 客户端连接问题 在使用Redis-cli连接Cluster集群时,连接失败。 解决方法:请检查连接命令是否加上-c,在连接Cluster集群节点时务必使用正确连接命令。 Cluster集群连接命令: ./redis-cli -h {dcs_instance_address} -p 6379 -a {password} -c 单机、主备、Proxy集群连接命令: ./redis-cli -h {dcs_instance_address} -p 6379 -a {password} 具体连接操作,请参考Redis-cli连接。 出现Read timed out或Could not get a resource from the pool。 解决方法: 排查是否使用了keys命令,keys命令会消耗大量资源,造成Redis阻塞。建议使用scan命令替代,且避免频繁执行。 排查实例是否是Redis 3.0,Redis 3.0底层用的是sata盘,当Redis数据持久化即AOF时,会触发偶现的磁盘性能问题,导致连接异常,可更换Redis实例为4.0及以上版本,其底层是ssd盘,磁盘性能更高,或若不需要持久化可关闭AOF。 出现unexpected end of stream错误,导致业务异常。 解决方法: Jedis连接池调优,建议参考Jedis参数配置建议进行配置连接池参数。 排查是否大key较多,建议根据优化大key排查优化。 连接断开。 解决方法: 调整应用超时时间。 优化业务,避免出现慢查询。 建议使用scan命令替代keys命令。 Jedis连接池问题,请参考使用Jedis连接池报错如何处理?。
  • Redis和ECS之间的连接问题 客户端所在的ECS必须和Redis实例在同一个VPC内,并且需要确保ECS和Redis之间可以正常连接。 如果是Redis 3.0或企业版实例,Redis和ECS的安全组没有配置正确,连接失败。 解决方法:配置ECS和Redis实例所在安全组规则,允许Redis实例被访问。具体配置,可以参考配置安全组。 如果是Redis 4.0/5.0/6.0基础版实例,开启了白名单功能,连接失败。 如果实例开启了白名单,在使用客户端连接时,需要确保客户端IP是否在白名单内,如果不在白名单,会出现连接失败。具体配置操作,可以参考配置白名单。客户端IP如果有变化,需要将变化后的IP加入白名单。 Redis实例和ECS不在同一个Region。 解决方法:不支持跨Region访问,可以在ECS所在的Region创建Redis实例,创建时注意选择与ECS相同VPC,创建之后,使用数据迁移进行迁移,将原有Redis实例数据迁移到新实例中。 Redis实例和ECS不在同一个VPC。 不同的VPC,网络是不相通的,不在同一VPC下的ECS是无法访问Redis实例。可以通过创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问Redis实例。 关于创建和使用VPC对等连接,请参考VPC对等连接说明。
  • 轻松编辑、构建和调试 CodeArts IDE的核心是一个快速的源代码编辑器,非常适合日常使用。CodeArts IDE支持多种语言,通过语法高亮、括号匹配、自动缩进、框选、代码片段等功能,帮助您提高开发效率。直观的键盘快捷键和易于定制的功能让您轻松地浏览代码。 CodeArts IDE提供代码补全、代码导航、代码重构以及交互调试器,因此您可以逐步查看源代码、检查变量、查看调用堆栈,并在控制台中执行命令。CodeArts IDE与构建和脚本工具集成,以执行常见任务,从而加快日常工作流程。CodeArts IDE还支持Git,您可以在不离开代码编辑器的情况下使用源代码版本控制功能。
  • 强大且可扩展的体系结构 在架构上,CodeArts IDE结合了Web、本地和特定语言技术的优势。CodeArts IDE通过Electron将JavaScript、Node.js等Web技术与本地应用程序相结合。CodeArts IDE采用了工具服务架构,使其能够与许多技术进行集成,包括TypeScript、调试引擎等。CodeArts IDE允许开发人员构建和使用扩展,并且可以定制他们自己的编辑-构建-调试体验。
  • 准备测试数据 # 创建数据库 create database dump_database; # 登录dump_database数据库 \c dump_database # 创建表1并插入数据 create table dump_table(id int primary key, content char(50)); insert into dump_table values(1,'aa'); insert into dump_table values(2,'bb'); # 创建表2并插入数据 create table dump_table2(id int primary key, content char(50)); insert into dump_table2 values(1,'aaaa'); insert into dump_table2 values(2,'bbbb');
  • 常见问题 如果在使用pg_dump导出时,报错用户权限不足。 解决方法: 检查是否使用的root用户导出,如果不是root用户则会报权限不足;如果使用root用户导出,仍然提示没有权限,请检查数据库版本,root用户执行pg_dump命令需要内核版本为支持root提权的版本,支持root提权版本情况见root用户权限说明。 将备份的文件导入到RDS for PostgreSQL目标数据库时发现control_extension等几个函数报错。 解决方法: 由于目标库中自带这些函数,因此该报错可以忽略。
  • Kafka实例Topic数量计算 Kafka实例对Topic分区数之和设置了上限,当达到上限之后,用户无法继续创建Topic。 所以,Topic数量和实例分区数上限、每个Topic的分区数有关,其中,每个Topic分区数可在创建Topic时设置,如图1,实例分区数上限参考表1、表2。 图1 Topic的分区数 kafka.2u4g.cluster * 3 broker实例的分区数上限为750。 如果该实例下每个Topic的分区个数都为3,则Topic个数为750/3=250个。 如果该实例下每个Topic的分区个数都为1,则Topic个数为750/1=750个。
  • 新老规格对应关系 2种Kafka实例规格对比,新老规格的对应关系如表3所示。 表3 Kafka实例新老规格对应关系 老规格 对应的新规格 规格类型 实例网络总流量 规格类型 实例网络总流量 100MB/s 100MB/s kafka.2u4g.cluster.small * 3 120MB/s 300MB/s 300MB/s kafka.2u4g.cluster * 3 300MB/s 600MB/s 600MB/s kafka.4u8g.cluster * 3 600MB/s 1200MB/s 1200MB/s kafka.4u8g.cluster * 6 1250MB/s 新老规格区别如下: 老规格使用的非独享资源,在高负载情况下容易出现资源抢占情况。新规格(kafka.2u4g.cluster.small除外)使用的独占资源,性能更优,性价比更高。 新规格支持最新的功能,例如:分区平衡、动态开启SSL、重平衡日志可观测等。 新规格支持规格灵活变更,例如:Broker规格的扩缩容。 新规格的磁盘大小选择更加灵活,磁盘大小不与实例规格进行绑定,仅与Broker数量相关。 新规格选择粒度更细,根据Broker规格和数量进行灵活的规格选择,并且最大规格可以达到10000MB/s以上。 新规格除了原有的磁盘类型,还支持通用型SSD、极速型SSD等多种磁盘类型,客户选择更加灵活。
  • Kafka实例规格参考 kafka.2u4g.cluster.small,三个代理 Kafka客户端连接数在6000以内,消费组个数在45个以内,业务TPS为60000以内时推荐选用。 kafka.2u4g.cluster,三个代理 Kafka客户端连接数在6000以内,消费组个数在60个以内,业务TPS为90000以内时推荐选用。 kafka.4u8g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在300个以内,业务TPS为300000以内时推荐选用。 kafka.8u16g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在450个以内,业务TPS为450000以内时推荐选用。 kafka.12u24g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在600个以内,业务TPS为600000以内时推荐选用。 kafka.16u32g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在600个以内,业务TPS为750000以内时推荐选用。
  • 实例规格和网络带宽说明 Kafka实例的网络带宽主要由以下两个部分组成: 实例Broker对应的网络带宽 实例Broker的磁盘所对应的带宽值(不同类型的磁盘对应的带宽值不同,具体参考:如何选择磁盘类型) 注意事项: Kafka默认情况下测试均为尾读场景(即仅消费最新生产的数据),而不是冷读场景(即从头开始消费历史数据的场景)。 老规格实例(即实例规格为100MB/s等)的带宽指的是实例所有Broker对应的网络带宽总和 新规格实例(即实例规格为kafka.2u4g.cluster等)的流量规格测算模型说明如下: 测试模型读写比例为1:1 默认Topic的副本数为3 实例网络总流量 = 单个代理流量规格 * 代理数量 实例整体流量 = 业务流量 + 代理节点间数据复制流量 参考上述测算模型说明,假如当前规格为kafka.2u4g.cluster,单个代理流量规格为100MB/s,代理数量为3,实例网络总流量、最大读流量和最大写流量分别为多少? 实例网络总流量 = 单个代理流量规格 * 代理数量 = 100MB/s * 3 = 300MB/s 最大读流量 = 实例网络总流量 / 默认副本数 / 2 = 300MB/s / 3 / 2 = 50MB/s 最大写流量 = 实例网络总流量 / 默认副本数 / 2 = 300MB/s / 3 / 2 = 50MB/s
  • Kafka实例的存储空间估算参考 Kafka实例支持多副本存储,存储空间用于存储消息(包括副本中的消息)、日志和元数据。您在创建Kafka实例,选择初始存储空间时,建议根据业务消息体积预估、副本数量以及预留磁盘大小选择合适的存储空间。每个Kafka代理会预留33GB的磁盘空间,用于存储日志和元数据。 例如:业务消息体积预估100GB,副本数为2,Kafka实例的代理数为3,则磁盘容量最少应为100GB*2+33GB*3=299GB。 Kafka实例支持对存储进行扩容,根据业务增长,随时扩容,节约成本。
  • Kafka实例规格 Kafka实例兼容开源Kafka 1.1.0、2.7和3.x,Kafka实例分为集群版和单机版,集群版实例由三个及以上代理组成,单机版实例由一个代理组成。 实例规格以实例提供的ECS规格分类,具体如下: 集群版实例 kafka.2u4g.cluster.small kafka.2u4g.cluster kafka.4u8g.cluster kafka.8u16g.cluster kafka.12u24g.cluster kafka.16u32g.cluster 单机版实例 kafka.2u4g.single.small kafka.2u4g.single TPS(Transaction per second),在Kafka场景中,指每秒能写入到Kafka实例的最大消息数量。下表中TPS性能,是指以1KB大小的消息为例的每秒处理消息条数。测试场景为连接内网访问明文接入、磁盘类型为超高I/O的实例。如果您想要了解更多关于TPS的性能,请参考测试Kafka实例TPS。 集群版实例支持Kafka 1.1.0、2.7和3.x版本,单机版实例支持Kafka 2.7版本。 表1 Kafka实例规格(集群版实例) 实例规格 代理个数范围 单个代理TPS 单个代理分区上限 单个代理建议消费组数 单个代理客户端总连接数上限 存储空间范围 单个代理流量规格(MB/s) kafka.2u4g.cluster.small 3~30 20000 100 15 2000 300GB~300000GB 40 kafka.2u4g.cluster 3~30 30000 250 20 2000 300GB~300000GB 100 kafka.4u8g.cluster 3~30 100000 500 100 4000 300GB~600000GB 200 kafka.8u16g.cluster 3~50 150000 1000 150 4000 300GB~1500000GB 375 kafka.12u24g.cluster 3~50 200000 1500 200 4000 300GB~1500000GB 625 kafka.16u32g.cluster 3~50 250000 2000 200 4000 300GB~1500000GB 750 表2 Kafka实例规格(单机版实例) 实例规格 代理个数 单个代理TPS 单个代理分区上限 单个代理建议消费组数 单个代理客户端总连接数上限 存储空间范围 单个代理流量规格(MB/s) kafka.2u4g.single.small 1 20000 100 15 2000 100GB~10000GB 40 kafka.2u4g.single 1 30000 250 20 2000 100GB~10000GB 100
  • 消费组 表3 消费组约束与限制 限制项 约束与限制 是否需要创建消费组、消费者、生产者 不需要单独创建消费组、生产者和消费者,在使用时自动生成,实例创建后,直接使用即可。 重置消费进度 重置消费进度可能会导致重复消费。 消费组名称 消费组名称开头包含特殊字符,例如#号“#”,会导致监控数据无法展示。 代理故障场景 实例中部分代理故障时,无法创建、修改和删除消费组,以及重置消费进度,只能查询消费组。
  • 实例 表1 实例约束与限制 限制项 约束与限制 Kafka ZooKeeper Kafka集群依赖ZooKeeper进行管理,开放ZooKeeper可能引发误操作导致业务受损,当前仅Kafka内部使用,不对外提供服务。 版本 当前服务端版本为1.1.0、2.7、3.x。实例创建后,服务端版本不支持升级。 兼容0.10以上的客户端版本,推荐使用和服务端一致的版本。 登录Kafka节点所在机器 不能登录 存储空间 只支持扩大存储空间,不支持减小存储空间。 扩容存储空间有次数限制,最多扩容20次。 基准带宽/代理个数 只支持增加基准带宽/代理个数,不支持减小基准带宽/代理个数。 代理规格 支持扩容/缩容代理规格。 若Topic为单副本,扩容/缩容期间无法对该Topic生产消息或消费消息,会造成业务中断。 若Topic为多副本,扩容/缩容代理规格不会造成服务中断,但可能会导致消费的分区消息发生乱序,请谨慎评估业务影响,建议您在业务低峰期扩容/缩容。 扩容/缩容代理规格的过程中,节点滚动重启造成分区Leader切换,会发生秒级连接闪断,在用户网络环境稳定的前提下,Leader切换时长一般为1分钟以内。多副本的Topic需要在生产客户端配置重试机制。 若实例已创建的分区数总和大于待缩容规格的实例分区数上限,此时无法缩容。 修改VPC/子网/可用区 实例创建后,不支持修改VPC/子网/可用区。 是否支持Kerberos认证 不支持 客户端单IP连接数 2020年7月以及之后购买的实例,Kafka实例的每个代理允许客户端单IP连接的个数默认为1000个,在此之前购买的实例,Kafka实例的每个代理允许客户端单IP连接的个数默认为200个,如果超过了,会出现连接失败问题。
  • Topic 表2 Topic约束与限制 限制项 约束与限制 Topic总分区数 Topic总分区数和实例规格有关,具体请参考产品规格。 Kafka以分区为粒度管理消息,分区多导致生产、存储、消费都碎片化,影响性能稳定性。在使用过程中,当Topic的总分区数达到上限后,用户就无法继续创建Topic。 单个Topic分区数 按照开源Kafka现有逻辑,单个Topic分区数只支持增加,不支持减少。 Topic数量 Topic数量和Topic总分区数、每个Topic的分区数有关,具体请参考产品规格。 是否支持自动创建Topic 支持。开启自动创建Topic表示生产或消费一个未创建的Topic时,系统会自动创建此Topic,此Topic的默认参数值如下: 分区数为3。 副本数为3。 老化时间为72小时。 不开启同步复制和同步落盘。 消息时间戳类型为CreateTime。 批处理消息最大值为10485760字节。 如果在“配置参数”中修改“log.retention.hours”、“default.replication.factor”或“num.partitions”的参数值,此后自动创建的Topic参数值为修改后的参数值。 例如:“num.partitions”修改为“5”,自动创建的Topic参数值如下: 分区数为5。 副本数为3。 老化时间为72小时。 不开启同步复制和同步落盘。 消息时间戳类型为CreateTime。 批处理消息最大值为10485760字节。 同步复制 Topic副本数为1时,不能选择同步复制功能。 副本数 不建议使用单副本。实例节点出现故障的情况下,单副本Topic查询消息时可能会报“内部服务错误”,因此不建议使用单副本Topic。 老化时间 如果Topic已经设置了老化时间,此时“配置参数”中的log.retention.hours值将不对此Topic生效。仅在Topic中未设置老化时间时,“配置参数”中的log.retention.hours值才会对此Topic生效。 例如:Topic01设置的老化时间为60小时,“配置参数”中的log.retention.hours值为72小时,此时Topic01实际的老化时间为60小时。 批量导入/导出Topic 支持批量导出,不支持批量导入。 Topic名称 Topic名称开头包含特殊字符,例如#号“#”,会导致监控数据无法展示。 是否支持延迟队列 不支持 代理故障场景 实例中部分代理故障时,无法创建、修改和删除Topic,只能查询Topic。
  • Kafka客户端参数配置建议 Kafka客户端的配置参数很多,以下提供Producer和Consumer几个常用参数配置。不同版本的Kafka客户端参数名称可能不同,以下配置参数适用于1.1.0及以上版本。其他参数和版本配置,请参考Kafka配置。 表1 Producer参数 参数 默认值 推荐值 说明 acks 1 高可靠:all或者-1 高吞吐:1 收到Server端确认信号个数,表示procuder需要收到多少个这样的确认信号,算消息发送成功。acks参数代表了数据备份的可用性。常用选项: acks=0:表示producer不需要等待任何确认收到的信息,副本将立即加到socket buffer并认为已经发送。没有任何保障可以保证此种情况下server已经成功接收数据,同时重试配置不会发生作用(因为客户端不知道是否失败)回馈的offset会总是设置为-1。 acks=1:这意味着至少要等待leader已经成功将数据写入本地log,但是并没有等待所有follower是否成功写入。如果follower没有成功备份数据,而此时leader又无法提供服务,则消息会丢失。 acks=all或者-1:这意味着leader需要等待ISR中所有备份都成功写入日志。只要任何一个备份存活,数据都不会丢失。min.insync.replicas指定必须确认写入才能被认为成功的副本的最小数量。 retries 0 结合实际业务调整 客户端发送消息的重试次数。值大于0时,这些数据发送失败后,客户端会重新发送。 注意,这些重试与客户端接收到发送错误时的重试没有什么不同。允许重试将潜在的改变数据的顺序,如果这两个消息记录都是发送到同一个partition,则第一个消息失败第二个发送成功,则第二条消息会比第一条消息出现要早。 针对网络闪断场景,生产者建议配置重试能力,推荐重试次数retries=3,重试间隔retry.backoff.ms=1000。 request.timeout.ms 30000 结合实际业务调整 设置一个请求最大等待时间(单位为ms),超过这个时间则会抛Timeout异常。 超时时间如果设置大一些,如127000(127秒),高并发的场景中,能减少发送失败的情况。 block.on.buffer.full TRUE TRUE TRUE表示当我们内存用尽时,停止接收新消息记录或者抛出错误。 默认情况下,这个设置为TRUE。然而某些阻塞可能不值得期待,因此立即抛出错误更好。如果设置为false,则producer抛出一个异常错误:BufferExhaustedException batch.size 16384 262144 默认的批量处理消息字节数上限。producer将试图批处理消息记录,以减少请求次数。这将改善client与server之间的性能。不会试图处理大于这个字节数的消息字节数。 发送到brokers的请求将包含多个批量处理,其中会包含对每个partition的一个请求。 较小的批量处理数值比较少用,并且可能降低吞吐量(0则会仅用批量处理)。较大的批量处理数值将会浪费更多内存空间,这样就需要分配特定批量处理数值的内存大小。 buffer.memory 33554432 67108864 producer可以用来缓存数据的内存大小。如果数据产生速度大于向broker发送的速度,producer会阻塞或者抛出异常,以“block.on.buffer.full”来表明。 这项设置将和producer能够使用的总内存相关,但并不是一个硬性的限制,因为不是producer使用的所有内存都是用于缓存。一些额外的内存会用于压缩(如果引入压缩机制),同样还有一些用于维护请求。 表2 Consumer参数 参数 默认值 推荐值 说明 auto.commit.enable TRUE FALSE 如果为真,consumer所fetch的消息的offset将会自动的同步到zookeeper。这项提交的offset将在进程无法提供服务时,由新的consumer使用。 约束: 设置为false后,需要先成功消费再提交,这样可以避免消息丢失。 auto.offset.reset latest earliest 没有初始化offset或者offset被删除时,可以设置以下值: earliest:自动复位offset为最早 latest:自动复位offset为最新 none:如果没有发现offset,则向消费者抛出异常 anything else:向消费者抛出异常。 说明: 如果将此配置设置为latest,新增分区时,生产者可能会在消费者重置初始偏移量之前开始向新增加的分区发送消息,从而导致部分消息丢失。 connections.max.idle.ms 600000 30000 空连接的超时时间(单位为ms),设置为30000可以在网络异常场景下减少请求卡顿的时间。 父主题: 配置Kafka客户端
  • 维度 Key Value kafka_instance_id Kafka实例 kafka_broker Kafka实例节点 kafka_topics Kafka实例主题 kafka_partitions Kafka实例分区 kafka_groups-partitions Kafka实例分区的消费组 kafka_groups_topics Kafka实例队列的消费组 kafka_groups Kafka实例的消费组 connector_task Kafka实例的Smart Connect任务
  • Smart Connect监控指标 表5 Smart Connect支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) kafka_wait_synchronize_data 待同步Kafka数据量 Kafka任务的待同步数据量。 单位:Count ≥ 0 Kafka实例的Smart Connect任务 1分钟 kafka_synchronize_rate Kafka每分钟同步数据量 Kafka任务每分钟同步的数据量。 单位:Count ≥ 0 Kafka实例的Smart Connect任务 1分钟 task_status 任务状态 当前任务状态。 0:任务异常 1:任务正常 Kafka实例的Smart Connect任务 1分钟 message_delay 消息时延 消息到达源端的时间与到达目标端的时间之差。 单位:ms ≥ 0 Kafka实例的Smart Connect任务 1分钟 Kafka双向数据复制的Smart Connect任务在监控中会被拆分为2个任务,分别为“Smart Connect任务名_source_0”和“Smart Connect任务名_source_1”。 如果Topic中的消息在进行下一次数据同步前,已经全部老化,此时实际是没有待同步的Kafka数据,但是Kafka数据同步监控指标使用的是包含老化数据的offset值,“待同步Kafka数据量”会显示老化的消息数。
共100000条