云服务器内容精选
-
问题现象 使用Sarama客户端收发消息存在以下问题: Sarama客户端无法感知分区变化,当Topic分区数增加时,需要重启客户端后才能正常消费。 Sarama客户端消息最大处理时间(MaxProcessingTime)默认值为100ms,超过最大处理时间可能导致消费者无法消费。 当消费位点重置策略设置为Oldest(earliest)时,当客户端重启时,偏移量重置后可能从最小位点开始重复消费所有消息。 消费者同时订阅多个Topic时,部分分区可能无法消费到消息。
-
解决方法 建议您使用Confluent-Kafka-go作为Kafka客户端库。 以下为您提供常用Golang客户端的对比,具体参见表1。 表1 常用Golang客户端对比 客户端 优点 缺点 Confluent-Kafka-go Confluent-Kafka-go是由Confluent提供的官方Kafka客户端库,与Kafka完全兼容,支持所有的Kafka特性。 稳定性高,基于librdkafka,具有高性能和低延迟的特点。 增加编译复杂度。由于导入C++库,Golang编译器需要引入额外编译配置,增加了编译依赖,提高编译复杂度。 Kafka-go kafka-go是一个简单、轻量级的Kafka客户端库,易于学习和使用。 kafka-go的代码库相对较小,依赖较少,可以减少应用程序的体积和依赖关系。 Kafka-go相对于Confluent-Kafka-go来说,功能较为有限,不支持一些高级特性和复杂的配置选项。 性能和吞吐量较低,适用于一些对性能要求不高的简单应用场景。 Sarama Sarama采用原生Golang语言编写,对于异步以及高并发操作支持度较好。 问题较多,文档相对较少。 Sarama在处理大量消息时,会占用较多的内存资源,可能会对应用程序的性能造成一定的影响。
-
Kafka实例的连接地址默认有多少个? Kafka实例的连接地址个数和实例的代理个数有关,连接地址个数即为代理个数。每类实例规格对应的代理个数如下表所示。 表1 Kafka集群实例规格 规格名称 代理个数范围 单个代理TPS 单个代理分区上限 单个代理建议消费组数 单个代理客户端总连接数上限 存储空间范围(GB) 单个代理流量规格(MB/s) kafka.2u4g.cluster.small 3~30 20000 100 15 2000 300~300000 40 kafka.2u4g.cluster 3~30 30000 250 20 2000 300~300000 100 kafka.4u8g.cluster 3~30 100000 500 100 4000 300~600000 200 kafka.8u16g.cluster 3~50 150000 1000 150 4000 300~1500000 375 kafka.12u24g.cluster 3~50 200000 1500 200 4000 300~1500000 625 kafka.16u32g.cluster 3~50 250000 2000 200 4000 300~1500000 750 表2 Kafka单机实例规格 规格名称 代理个数 单个代理TPS 单个代理分区上限 单个代理建议消费组数 单个代理客户端总连接数上限 存储空间范围(GB) 单个代理流量规格(MB/s) kafka.2u4g.single.small 1 20000 100 15 2000 100~10000 40 kafka.2u4g.single 1 30000 250 20 2000 100~10000 100 父主题: 连接问题
-
使用内网通过同一个VPC访问实例 客户端和实例是否使用相同的安全组? 是,如果保留了创建安全组后,系统默认添加的入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,则无需添加其他规则。否则,请添加表1所示规则。 表1中的源地址以全网段放通为例,可根据实际安全需要修改为客户端的IP地址。 表1 安全组规则 方向 协议 类型 端口 源地址 说明 入方向 TCP IPv4 9092 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(明文接入)。 入方向 TCP IPv6 9192 ::/0 使用内网通过同一个VPC访问Kafka实例(关闭SSL加密)。 入方向 TCP IPv4 9093 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(密文接入)。 入方向 TCP IPv6 9193 ::/0 使用内网通过同一个VPC访问Kafka实例(开启SSL加密)。 否,执行2。 参考如下配置安全组规则。 假设客户端和Kafka实例的安全组分别为:sg-53d4、Default_All。以下规则,远端可使用安全组,也可以使用具体的IP地址,本章节以安全组为例介绍。 客户端所在安全组需要增加如下规则,以保证客户端能正常访问Kafka实例。 表2 安全组规则 方向 策略 协议端口 目的地址 出方向 允许 全部 Default_All 图1 配置客户端安全组 Kafka实例所在安全组需要增加如下规则,以保证能被客户端访问。 表3 安全组规则 方向 策略 协议端口 源地址 入方向 允许 全部 sg-53d4 图2 配置Kafka实例安全组
-
跨VPC访问和通过DNAT访问实例 请按照表4设置安全组规则。 表4 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 9011 198.19.128.0/17 通过 VPC终端节点 实现跨VPC访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP 9011 0.0.0.0/0 使用DNAT访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP 9092 0.0.0.0/0 使用对等连接跨VPC访问Kafka实例(明文接入)。 入方向 TCP 9093 0.0.0.0/0 使用对等连接跨VPC访问Kafka实例(密文接入)。
-
通过公网访问实例 请按照表5设置安全组规则。 表5中的源地址以全网段放通为例,可根据实际安全需要修改为客户端的IP地址。 表5 安全组规则 方向 协议 类型 端口 源地址 说明 入方向 TCP IPv4 9094 0.0.0.0/0 通过公网访问Kafka(明文接入)。 入方向 TCP IPv4 9095 0.0.0.0/0 通过公网访问Kafka(密文接入)。 入方向 TCP IPv6 9192 ::/0 通过公网访问Kafka实例(关闭SSL加密)。 入方向 TCP IPv6 9193 ::/0 通过公网访问Kafka实例(开启SSL加密)。
-
如何配置安全组? RabbitMQ实例支持VPC内访问和公网访问,配置安全组的方式如下: VPC内访问实例 客户端只能部署在与RabbitMQ实例处于相同虚拟私有云(VPC)的弹性云服务器(E CS )上。 除了ECS、RabbitMQ实例必须处于相同VPC之外,还需要他们的安全组分别配置了正确的规则,客户端才能访问RabbitMQ实例。 建议ECS、RabbitMQ实例配置相同的安全组。安全组创建后,默认包含组内网络访问不受限制的规则。 如果配置了不同安全组,可参考如下配置方式: 假设ECS、RabbitMQ实例分别配置了安全组:sg-53d4、Default_All。 以下规则,远端可使用安全组,也可以使用具体的IP地址。 ECS所在安全组需要增加如下规则,以保证客户端能正常访问RabbitMQ实例。 图1 配置ECS安全组 表1 安全组规则 方向 协议端口 目的地址 出方向 全部放通 Default_All RabbitMQ实例所在安全组需要增加如下规则,以保证能被客户端访问。 图2 配置RabbitMQ实例安全组 表2 安全组规则 方向 协议端口 源地址 入方向 全部放通 sg-53d4 通过公网访问实例 RabbitMQ实例所在安全组需要增加如下规则,以保证能被客户端访问。 表3中的源地址以全网段放通为例,可根据实际安全需要修改为客户端的IP地址。 表3 安全组规则 方向 协议端口 源地址 入方向 TCP:5672 RabbitMQ客户端所在的IP地址或地址组 具体如图3所示。 图3 安全组规则1 父主题: 连接问题
-
可能原因三:用户名或密码错误 报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.111 5672 user ******* Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: AC CES S_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile. at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:351) at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:64) 解决方法:修改用户名或密码。如果忘记密码,参考重置实例密码,重置密码。
-
可能原因二:端口不正确 VPC内访问场景下,端口不正确时,报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.111 5673 user ******* Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 公网访问场景下,端口不正确时,报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 139.xxx.179 5673 user ******* Exception in thread "main" java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 解决方法:修改端口号。
-
可能原因五:未创建Vhost或者填错Vhost名称 报错如下: Couldn't log in: server connection error 530, message: NOT_ALLOWED - vhost /localdev/ not found 解决方法: 如果未创建Vhost,进入RabbitMQ控制台的“Vhost列表”页面,创建Vhost。 如果是Vhost名称填错了,请参考RabbitMQ控制台的“Vhost列表”页面显示的Vhost名称,修改连接URL和配置文件。
-
可能原因一:连接地址不正确 VPC内访问场景下,连接地址不正确时,报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.110 5672 user ******* Exception in thread "main" java.net.NoRouteToHostException: No route to host (Host unreachable) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 公网访问场景下,连接地址不正确时,报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 139.xxx.178 5672 user ******* Exception in thread "main" java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 解决方法:在RabbitMQ控制台的“基本信息”页面,获取“内网连接地址”/“公网连接地址”,修改连接实例代码中的连接地址。
-
SSL方式连接RabbitMQ实例失败? 首先排查安全组的入方向规则,是否放开了端口5671(SSL方式访问)或5672(非SSL访问)。 其次,参考如下内容配置SSL单向认证: 1 2 3 4 5 6 7 8 ConnectionFactory factory = new ConnectionFactory(); factory.setHost(host); factory.setPort(port); factory.setUsername(user); factory.setPassword(password); factory.useSslProtocol(); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); 父主题: 连接问题
-
Kafka实例连接数有限制吗? 不同规格的Kafka实例,连接数限制如下: 表1 老规格Kafka实例的连接数 基准带宽 连接数上限 100MB/s 3000 300MB/s 10000 600MB/s 20000 1200MB/s 20000 表2 新规格Kafka实例的连接数 实例规格 单个代理客户端总连接数上限 kafka.2u4g.cluster.small 2000 kafka.2u4g.single.small 2000 kafka.2u4g.cluster 2000 kafka.2u4g.single 2000 kafka.4u8g.cluster 4000 kafka.8u16g.cluster 4000 kafka.12u24g.cluster 4000 kafka.16u32g.cluster 4000 父主题: 连接问题
-
Kafka实例是否支持跨VPC访问? Kafka实例支持跨VPC访问,您可以通过以下任意一个方式实现跨VPC访问: 创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问。具体步骤请参考VPC对等连接说明。 创建一个云连接实例,然后在创建的云连接实例中加载需要互通的VPC,实现跨VPC访问。具体步骤请参考同区域同账号VPC互通。 利用VPC终端节点在不同VPC间建立跨VPC的连接通道,实现Kafka客户端通过内网访问Kafka实例。具体步骤请参考跨VPC访问Kafka实例。 父主题: 连接问题
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格