云服务器内容精选
-
购买RocketMQ实例 进入购买RocketMQ实例页面。 仅“华东二”区域且4.8.0版本支持购买IPv6的RocketMQ实例。如果您需要购买支持IPv6的RocketMQ实例,请先执行如下操作: 返回“分布式消息服务 RocketMQ版”首页。 在左侧导航栏选择“服务授权”,进入“服务授权”页面。 勾选“访问 VPC终端节点 服务”。 使用内网IPv6方式连接RocketMQ实例需要通过VPC终端节点实现。VPC终端节点服务单独计费,计费方式请参见计费说明。 选择“计费模式”。 包年/包月:您创建RocketMQ实例时,可以根据需要设置购买时长,系统会一次性按照购买价格进行扣费。 按需付费:您创建RocketMQ实例时,无需设置购买时长,系统会根据消费时长进行扣费。 选择“区域”。 不同区域的云服务产品之间内网互不相通。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 选择“项目”。 每个区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源)。 选择“可用区”。 可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。 根据实际情况选择1个或者3个及以上可用区。 设置“实例名称”。 名称支持自定义,但需要符合命名规则:长度为4~64个字符,由英文字母开头,且只能由英文字母、数字、中划线、下划线组成。 设置“企业项目”。 该参数针对企业用户使用。企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理,默认项目为default。 设置实例规格信息。 “规格选择模式”设置为“默认”,且“版本”为“4.8.0”时,您需要根据实际情况选择RocketMQ实例支持的规格、代理个数和代理存储空间。 部署架构:仅支持“集群”,保持默认值即可。 CPU架构:仅支持“x86计算”,保持默认值即可。 代理规格:根据实际业务情况选择实例规格。 代理数量:RocketMQ实例的代理个数。 代理存储空间:选择RocketMQ实例的磁盘类型和单个代理的储存空间。 磁盘类型支持高I/O、超高I/O、通用型SSD和极速型SSD,如何选择磁盘类型请参考磁盘类型及性能介绍。 图1 默认的规格类型(RocketMQ实例4.8.0版本) “规格选择模式”设置为“默认”,且“版本”为“5.x”时,您需要根据实际情况选择RocketMQ实例支持的规格和代理存储空间。 实例类型:仅支持“基础版”,保持默认值即可。 部署架构:支持“单机”和“集群”。 单机:表示部署一个RocketMQ代理。基础版的单机仅用于测试环境,不可用于生产环境。 集群:表示部署多个RocketMQ代理。 CPU架构:仅支持“x86计算”,保持默认值即可。 实例规格:根据实际业务情况选择实例规格。 存储空间:选择RocketMQ实例的磁盘类型和储存空间总量。 磁盘类型支持高I/O、超高I/O、通用型SSD和极速型SSD,如何选择磁盘类型请参考磁盘类型及性能介绍。 “规格选择模式”设置为“规格测算”(仅4.8.0版本支持该种模式)时,系统根据您输入的参数(Topic个数、生产tps峰值、消费tps峰值、平均消息大小和日生产消息数),为您计算出不同规格所需的代理个数和代理存储空间,您根据实际情况选择。 图2 规格测算 设置实例网络环境信息。 在“虚拟私有云”下拉列表,选择已经创建好的或共享的虚拟私有云和子网。 虚拟私有云可以为您的RocketMQ实例构建隔离的、能自主配置和管理的虚拟网络环境。 虚拟私有云和子网在RocketMQ实例创建完成后,不支持修改。 设置IPv6开关。 仅当子网选择了支持IPv6地址后,才会显示该参数。开启IPv6后,客户端可以使用IPv6的内网连接地址连接实例。 此功能仅在“华东二”区域上线,且仅4.8.0版本支持创建IPv6实例。 实例创建成功后,不支持修改IPv6开关。 在“安全组”下拉列表,可以选择已经创建好的安全组。 安全组是一组对RocketMQ实例访问规则的集合。 设置SSL。 SSL:服务端与客户端之间通过密文传输,安全性较高,性能较低。 PLAINTEXT:服务端与客户端之间通过明文传输,安全性较低,性能较高。 PERMISSIVE:服务端与客户端之间即能通过明文传输又能通过密文传输,传输方式由客户端决定。 实例创建后,SSL开关支持修改,请根据实际情况选择一种数据传输模式。 RocketMQ实例5.x基础版不支持此功能。 设置ACL访问控制。 开启ACL访问控制后,为不同用户赋予不同的Topic和消费组权限,以达到用户之间的权限隔离。 设置实例购买时长。 当选择了“包年/包月”付费模式时,页面才显示“购买时长”参数,您需要根据业务需要选择。 单击“更多配置”,设置更多相关信息。 设置“公网访问”。 “公网访问”默认为关闭状态,您可以选择是否开启。开启公网访问后,还需要为每个节点设置对应的IPv4弹性IP地址。 设置标签。 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如您的组织已经设定分布式消息服务RocketMQ版的相关标签策略,则需按照标签策略规则为RocketMQ实例添加标签。标签如果不符合标签策略的规则,则可能会导致RocketMQ实例创建失败,请联系组织管理员了解标签策略详情。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击右侧的“查看预定义标签”,跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接在“标签键”和“标签值”中设置标签。 每个RocketMQ实例最多支持设置20个不同标签,标签的命名规格,请参考配置RocketMQ实例标签章节。 设置实例的描述信息。 填写完上述信息后,单击“立即购买”,进入规格确认页面。 确认实例信息无误且阅读并同意《华为云用户协议》后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。 在实例列表页面查看实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请参考删除RocketMQ实例,删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。
-
准备实例依赖资源 在购买RocketMQ实例前,您需要提前准备相关依赖资源,包括虚拟私有云(Virtual Private Cloud,以下简称VPC)、子网和安全组,并配置安全组策略。每个RocketMQ实例都部署在某个VPC中,并绑定具体的子网和安全组,通过这样的方式为RocketMQ提供一个隔离的、用户自主配置和管理的虚拟网络环境以及安全保护策略,提升实例的安全性。 RocketMQ实例所需资源的具体要求和创建指导如表1所示。 表1 RocketMQ实例依赖资源 准备资源 要求 创建指导 VPC和子网 RocketMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。 共享VPC是基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 在创建VPC和子网时应注意如下要求: 创建的VPC与使用的RocketMQ实例应在相同的区域。 创建VPC和子网时,配置参数建议使用默认配置。 创建VPC和子网的操作指导请参考创建虚拟私有云和子网,若需要在已有VPC上创建和使用新的子网,请参考为虚拟私有云创建新的子网。 安全组 不同的RocketMQ实例可以重复使用相同的安全组,也可以使用不同的安全组,请根据实际需要进行配置。 使用RocketMQ实例必须添加表2或表3所示安全组规则,其他规则请根据实际需要添加。 说明: 创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表2或表3的规则。 创建安全组的操作指导请参考创建安全组,为安全组添加规则的操作指导请参考添加安全组规则。 弹性IP地址 开启公网访问时,才需要配置弹性IP地址。 在创建弹性IP地址时,应注意如下要求: 创建的弹性IP地址与RocketMQ实例在相同的区域。 RocketMQ控制台无法识别开启IPv6转换功能的弹性IP地址。 创建弹性IP地址的操作指导请参考申请弹性公网IP。 表2 安全组规则(RocketMQ实例4.8.0版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 0.0.0.0/0 通过内网访问元数据节点的端口 入方向 TCP 8200 0.0.0.0/0 公网访问元数据节点的端口 入方向 TCP 10100-10199 0.0.0.0/0 访问业务节点的端口 表3 安全组规则(RocketMQ实例5.x版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 0.0.0.0/0 使用TCP协议,通过内网访问实例的端口 入方向 TCP 8200 0.0.0.0/0 使用TCP协议,通过公网访问实例的端口 入方向 TCP 10100-10199 0.0.0.0/0 使用TCP协议,访问业务节点的端口 入方向 TCP 8080 0.0.0.0/0 使用gRPC协议,通过内网访问实例的端口 入方向 TCP 8081 0.0.0.0/0 使用gRPC协议,通过公网访问实例的端口
-
通过访问控制,保护数据安全性 建议对不同角色的 IAM 用户仅设置最小权限,避免权限过大导致数据泄露或被误操作。 为了更好的进行权限隔离和管理,建议您配置独立的IAM管理员,授予IAM管理员IAM策略的管理权限。IAM管理员可以根据您业务的实际诉求创建不同的用户组,用户组对应不同的数据访问场景,通过将用户添加到用户组并将IAM策略绑定到对应用户组,IAM管理员可以为不同职能部门的员工按照最小权限原则授予不同的数据访问权限,详情请参见权限管理。 建议配置安全组访问控制,保护您的数据不被异常读取和操作。 参照表1配置安全组的入方向规则限制,控制连接实例的网络范围,避免DMS for RocketMQ暴露给不可信的第三方。 表1 安全组规则 实例版本 方向 协议 端口 源地址 说明 4.8.0 5.x 入方向 TCP 8100 访问DMS for RocketMQ实例的客户端地址,应避免设置为0.0.0.0/0。 使用TCP协议,通过内网访问实例的端口。 4.8.0 5.x 入方向 TCP 8200 使用TCP协议,通过公网访问实例的端口。 4.8.0 5.x 入方向 TCP 10100-10199 使用TCP协议,访问业务节点的端口。 5.x 入方向 TCP 8080 使用gRPC协议,通过内网访问实例的端口。 5.x 入方向 TCP 8081 使用gRPC协议,通过公网访问实例的端口。 建议将访问DMS for RocketMQ实例方式设置为密码访问(即开启ACL访问控制),防止未经认证的客户端误操作实例。 您可以选择如下任意一种方法开启ACL访问控制。 在“购买实例”页面开启ACL访问控制,具体可参考购买RocketMQ实例。 购买实例后,在实例的“基本信息”页面中开启ACL访问控制,具体可参考查看和修改RocketMQ实例基本信息。 开启敏感操作多因子认证保护您的数据不被误删。 DMS for RocketMQ支持敏感操作保护,开启后执行删除实例等敏感操作时,系统会进行身份验证,进一步对数据的高危操作进行控制,保证DMS for RocketMQ数据的安全性。详情请参见敏感操作。
-
审计是否存在异常数据访问 开启 云审计 服务,记录DMS for RocketMQ的所有访问操作,便于后期审查。 云审计服务(Cloud Trace Service, CTS ),是华为 云安全 解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 您开通云审计服务并创建和配置追踪器后,CTS可记录DMS for RocketMQ的管理事件和数据事件用于审计。相关文档请参见查看RocketMQ审计日志。 使用 云监控服务 对安全事件进行实时监控和告警。 为使您更好地掌握DMS for RocketMQ实例状态,华为云提供了 云监控 服务(Cloud Eye)。您可使用该服务监控自己的DMS for RocketMQ实例,执行自动实时监控、告警和通知操作,帮助您实时掌握DMS for RocketMQ实例中所产生的请求、流量等信息。 云监控服务不需要开通,会在用户创建DMS for RocketMQ实例后自动启动。相关文档请参见RocketMQ支持的监控指标、配置RocketMQ监控告警。
-
实施方法 从上面的消费重复场景可以看到,不同Message ID的消息可能有相同的消息内容,因此Message ID无法作为消息的唯一标识符。RocketMQ可以为消息设置Key,把业务的唯一标识作为消息的唯一标识,从而实现消息的幂等。为消息设置Key的示例代码如下: Message message = new Message(); message.setKey("Order_id"); // 设置消息的Key,可以使用业务的唯一标识作为Key,例如订单号等。 SentResult sendResult = mqProducer.send(message); 生产者发送消息时,消息已经设置了唯一的Key,在消费者消费消息时,可以根据消息的Key进行幂等处理。消费者通过getKeys()能够读取到消息的唯一标识(如订单号等),业务逻辑围绕该唯一标识进行幂等处理即可。
-
方案概述 在RocketMQ的业务处理过程中,如果消息重发了多次,消费者端对该重复消息消费多次与消费一次的结果是相同的,多次消费并没有对业务产生负面影响,那么这个消息处理过程是幂等的。消息幂等保证了无论消息被重复投递多少次,最终的处理结果都是一致的,避免了因消息重复而对业务产生影响。 例如在支付场景下,用户购买商品后进行支付,由于网络不稳定导致用户收到多次扣款请求,导致重复扣款。但实际上扣款业务只应进行一次,商家也只应产生一条订单流水。这时候使用消息幂等就可以避免这个问题。 在实际应用中,导致消息重复的原因有网络闪断、客户端故障等,且可能发生在消息生产阶段,也可能发生在消息消费阶段。因此,可以将消息重复的场景分为以下两类: 生产者发送消息时发生消息重复: 生产者发送消息时,消息成功发送至服务端。如果此时发生网络闪断,导致生产者未收到服务端的响应,此时生产者会认为消息发送失败,因此尝试重新发送消息至服务端。当消息重新发送成功后,在服务端中就会存在两条内容相同的消息,最终消费者会消费到两条内容一样的重复消息。 消费者消费消息时发生消息重复: 消费者消费消息时,服务端将消息投递至消费者并完成业务处理。如果此时发生网络闪断,导致服务端未收到消费者的响应,此时服务端会认为消息投递失败。为了保证消息至少被消费一次,服务端会尝试投递之前已被处理过的消息,最终消费者会消费到两条内容一样的重复消息。
-
步骤二:创建RocketMQ实例 使用RocketMQ进行消息生产和消费时,必须先创建RocketMQ实例。实例中的虚拟机资源会存储Topic信息。 进入购买RocketMQ实例页面。 设置实例信息,配置详情请参考表2。 表2 设置实例信息 参数 参数说明 计费模式 选择实例的计费模式。此处选择“按需计费”,即按照实例的实际使用时长计费,秒级计费,按小时结算。 区域 选择靠近您客户的区域,可以降低网络时延、提高访问速度。此处选择“华北-北京四”。 项目 选择区域对应的项目。此处选择“华北-北京四”。 可用区 可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。此处选择“可用区1”。 实例名称 填写实例名称,此处配置为“rocketmq-test”。 企业项目 企业项目是对企业不同项目间资源的分组和管理,属于逻辑隔离。此处选择“default”。该参数针对企业用户使用。 规格选择模式 选择实例的规格设置模式,此处选择“默认”,即自定义RocketMQ实例的版本号、实例类型、部署架构、实例规格和存储空间。 版本 选择实例的版本。此处选择“4.8.0”。 RocketMQ实例创建后,版本号不支持修改。 部署架构 选择实例的部署架构。此处选择“集群”。 代理规格 选择实例相应的代理规格。此处选择“rocketmq.4u8g.cluster”。 代理数量 选择实例相应的代理数量。此处选择“1”。 代理存储空间 选择存储RocketMQ数据的磁盘类型和单个代理存储空间。选择“超高I/O 300GB”。实例总存储空间 = 单个代理的存储空间 * 代理数量 虚拟私有云 选择实例的VPC和子网。此处选择步骤一:准备工作中已创建的VPC和子网。 安全组 选择实例的安全组。此处选择步骤一:准备工作中已创建的安全组。 SSL 开启SSL,表示服务端与客户端之间通过密文传输,安全性较高,性能较低。此处选择开启SSL。 ACL访问控制 开启ACL访问控制可以对生产消息和消费消息进行权限管理。此处选择关闭ACL访问控制。 更多配置 公网访问 开启公网访问需要绑定弹性IP地址。此处选择关闭公网访问。 标签 标签是RocketMQ实例的标识。此处不设置标签。 描述 描述是对实例的补充说明。此处不填写描述信息。 图2 设置实例信息 填写完上述信息后,单击“立即购买”,进入规格确认页面。 确认实例信息无误后,勾选“协议”,并单击“提交”请求。 在实例列表页面,查看RocketMQ实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。 实例创建成功后,单击实例名称,进入实例基本信息页面。 记录实例的连接地址,便于生产和消费消息时使用。 图3 记录实例连接地址
-
相关信息 如果您想了解关于RocketMQ的相关概念,请参考RocketMQ基本概念。 RocketMQ实例创建时,如果消费者客户端与生产者客户端无需通过密文传输,那么您可以关闭SSL。此时连接RocketMQ实例生产和消费消息的操作请参见使用客户端连接RocketMQ(关闭SSL)。 如果您需要创建多个用户并为其赋予不同的Topic和消费组权限,以达到用户之间的权限隔离,那么您需要先开启ACL访问控制并配置ACL用户,具体操作请参考开启RocketMQ ACL访问和配置RocketMQ ACL用户。 如果您需要通过公网访问RocketMQ实例,请参见配置RocketMQ实例的公网访问。
-
步骤四:连接RocketMQ实例生产和消费消息 在E CS 环境中进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息命令。 命令示例如下: JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01 -p "hello rocketmq" 10.xxx.xxx.89:8100;10.xxx.xxx.144:8100:表示RocketMQ实例的“连接地址”,即7中记录的连接地址。 Topic01:表示RocketMQ实例下创建的Topic名称,即4中创建的Topic名称。 hello rocketmq:表示生产消息的内容。 运行消费普通消息命令。 命令示例如下: JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01 如上图中BODY显示的内容即为消费消息的内容。 如需停止消费使用Ctrl+C命令退出。
-
步骤三:创建Topic Topic,即消息主题,消息发送与接收的基本单元。创建RocketMQ实例成功后,需要手动创建Topic,然后才能进行生产消息和消费消息。 单击RocketMQ实例的名称,进入实例基本信息页面。 在左侧导航栏,单击“Topic管理”,进入“Topic管理”页面。 单击“创建Topic”,弹出“创建Topic”页面。 参考表3,填写Topic名称和配置信息。 表3 Topic参数说明 参数 说明 Topic名称 填写Topic的名称。此处配置为“Topic01”。 权限 选择Topic的权限。此处选择“发布+订阅”,表示生产者可以发布消息到该Topic,消费者可以消费该Topic中的消息。 关联代理 选择Topic关联的代理。此处选择“代理”为“broker-0”,“队列个数”为“3”。 图4 创建Topic 配置完成后,单击“确定”,完成Topic的创建。
-
操作流程 图1 RocketMQ使用流程 准备工作。 在创建RocketMQ实例前,您需要完成注册华为云并实名认证、为账户充值、为用户添加操作权限、创建VPC和子网、创建安全组、创建弹性云服务器并配置环境的准备工作。 创建RocketMQ实例。 在创建实例时,您需要开启SSL、关闭ACL,并配置已创建的VPC和子网、安全组。 创建Topic。 在实例创建成功后,您需要创建Topic,用于发送与接收消息。 连接RocketMQ实例生产和消费消息。 使用客户端连接实例,并通过命令行生产消费消息。
-
消息清理机制 无论消息是否被消费,RocketMQ的消息默认保留时间为48小时,最长保留时间为720小时,修改保留时间的操作请参见修改RocketMQ消息保留时间。RocketMQ消息存储在CommitLog文件中,CommitLog文件大小为1GB,当一个CommitLog文件写满后,会生成一个新的CommitLog文件。RocketMQ删除消息是删除CommitLog文件,而不是删除一条消息。CommitLog文件为顺序写入,当最后写入的一条消息过期时,表示CommitLog文件过期。满足如下任意一个条件,CommitLog文件将会被清理: 每天凌晨4点会清理过期的文件,部分老实例由于未设置时区,清理时间为每天中午12点。 当磁盘使用率达到75%时,会立刻清理过期的文件。 当磁盘使用率达到85%时,会从最早创建的文件开始清理,不管文件是否已过期,直到磁盘空间充足。
-
前提条件 已创建RocketMQ实例和Topic。 如果通过按Message ID查询,需要提前获取消息所在的Topic名称和消息的Message ID。 Message ID为生产消息后返回的MsgId,如6中返回的内容,也可先通过Topic查询消息,记录Message ID。 如果通过按Message Key查询,需要提前获取消息所在的Topic名称和消息的Message Key。 Message Key为7中配置的消息Key,也可先通过Topic查询消息,记录Message Key。
-
在application.properties文件中填写配置 #=============== 生产者配置 ======================= ## 替换成真实RocketMQ的NameServer地址与端口 rocketmq.name-server=127.0.0.1:9876 rocketmq.producer.group=my-group #=============== 消费者配置 ======================= ## 替换成真实RocketMQ的NameServer地址与端口 rocketmq.name-server=127.0.0.1:9876
-
生产消息 生产消息的示例代码如下(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 @SpringBootApplication public class ProduceDemoApplication implements CommandLineRunner { @Resource private RocketMQTemplate rocketMQTemplate; public static void main(String[] args) { SpringApplication.run(ProduceDemoApplication.class, args); } @Override public void run(String... args) throws Exception { // send message synchronously rocketMQTemplate.convertAndSend("topic", "Hello, World!"); // send spring message rocketMQTemplate.send( "topic", MessageBuilder.withPayload("Hello, World! I'm from spring message").build()); // send messgae asynchronously rocketMQTemplate.asyncSend( "topic", MessageBuilder.withPayload("Hello, World! I'm from spring message").build(), new SendCallback() { @Override public void onSuccess(SendResult var1) { System.out.printf("async onSucess SendResult=%s %n", var1); } @Override public void onException(Throwable var1) { System.out.printf("async onException Throwable=%s %n", var1); } }); // Send messages orderly rocketMQTemplate.syncSendOrderly( "topic", MessageBuilder.withPayload("Hello, World").build(), "hashkey"); } }
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格