云服务器内容精选
-
通过索引生命周期管理实现存算分离 登录 云搜索服务 管理控制台。 在左侧导航栏,选择对应的集群类型,进入集群列表页面。 在集群列表页面中,单击集群操作列的“Kibana”登录OpenSearch Dashboards页面。 在OpenSearch Dashboards的左侧导航中选择“Dev Tools”,进入命令执行页面。 创建生命周期策略“hot_warm_policy”。 策略定义:当索引创建3天后,自动调用冻结索引API将数据转储到OBS;索引创建7天后,删除该索引。 PUT _plugins/_ism/policies/hot_warm_policy { "policy": { "description": "hot warm delete workflow", "error_notification": null, "default_state": "hot", "states": [ { "name": "hot", "actions": [], "transitions": [ { "state_name": "warm", "conditions": { "min_index_age": "3d" } } ] }, { "name": "warm", "actions": [ { "freeze_low_cost": {} } ], "transitions": [ { "state_name": "delete", "conditions": { "min_index_age": "7d" } } ] }, { "name": "delete", "actions": [ { "delete": {} } ], "transitions": [] } ], "ism_template": { "index_patterns": [ "data*" ], "priority": 100 } } } 新建索引模板“template_hot_warm”。 模板定义:新建的所有“data”开头的索引会自动关联上生命周期策略“hot_warm_policy”。 PUT _template/template_hot_warm { "index_patterns": "data*", "settings": { "number_of_replicas": 5, "number_of_shards": 1, "index.plugins.index_state_management.policy_id": "hot_warm_policy" }, "mappings": { "properties": { "name": { "type": "text" } } } } 表1 参数说明 参数 说明 number_of_shards 索引分片数 number_of_replicas 索引分片副本数 index.plugins.index_state_management.policy_id 生命周期的策略名 新建一个索引“data-2022-06-06”,该索引会自动应用索引模板“template_hot_warm”,并通过索引模板的配置与生命周期策略“hot_warm_policy”相关联,实现索引在创建3天后冻结,7天后删除。 POST data-2022-06-06/_bulk {"index":{}} {"name":"name1"} {"index":{}} {"name":"name2"} {"index":{}} {"name":"name3"} {"index":{}} {"name":"name4"} {"index":{}} {"name":"name5"} {"index":{}} {"name":"name6"} 查询数据,确认数据是否实现自动存算分离。 在索引创建三天后查看冻结的索引: GET _cat/freeze_indices?s=i&v 正常情况下会显示3天以前的索引已经被冻结: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open data-2022-06-06 x8ab5NX6T3Ox_xoGUanogQ 1 1 6 0 7.6kb 3.8kb 在索引创建7天后,查看索引情况,正常情况下7天以前的索引已经被删除。
-
约束限制 备份与恢复索引功能上线之前(即2018年3月10日之前)创建的集群,无法创建快照。 第一次备份时,建议将所有索引数据进行备份。 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。 修改存储快照的OBS桶之后,集群将会从新的OBS桶中获取快照数据。 当集群处于“不可用”状态时,快照功能中除了恢复快照功能外,其他快照信息或功能只能查看,无法进行编辑。 备份与恢复过程中,支持集群扩容(如果是恢复至本集群,则本集群不支持扩容)、访问Kibana、查看监控、删除其他快照的操作。不支持重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。 CSS 集群第一次快照是全量,后面再备份快照是在之前的快照基础上增量, CS S是增量快照逻辑,快照之间的文件会相互依赖。
-
约束限制 备份与恢复索引功能上线之前(即2018年3月10日之前)创建的集群,无法创建快照。 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。 当集群处于“不可用”状态时,快照功能中,除了恢复快照功能外,其他快照信息或功能只能查看,无法进行编辑。 备份与恢复过程中,支持集群扩容(如果是恢复至本集群,则本集群不支持扩容)、访问Kibana、查看监控、删除其他快照的操作。不支持重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。 快照在恢复过程中不可查询集群数据。 当两个集群的shard不一样时,则无法恢复集群数据。 用于恢复的目标集群版本不得低于源集群版本,一般保持版本一致即可。
-
功能介绍 云搜索 服务的向量检索引擎集成了暴力检索、图索引(HNSW)、乘积量化、IVF-HNSW等多种向量索引,支持欧式、内积、余弦、汉明等多种相似度计算方式,召回率和检索性能均优于开源引擎。能够满足高性能、高精度、低成本、多模态等多种应用场景及需求。 向量检索支持原生Elasticsearch的所有能力,包括分布式、多副本、错误恢复、快照、权限控制等;兼容所有原生Elasticsearch生态,包括集群监测工具Cerebro,可视化工具Kibana,实时数据采集工具Logstash等;提供Python/Java/Go/C++等多种客户端语言支持。
-
原理说明 向量检索从本质上讲,其思维框架和传统的检索方法没有区别。为了提升向量检索的性能,通常需要解决以下两个问题: 减少候选向量集 和传统的文本检索类似,向量检索也需要某种索引结构来避免在全量的数据上做匹配,传统文本检索是通过倒排索引来过滤掉无关文档,而向量检索是通过对向量建立索引结构来绕过不相关的向量,减小需要考察的范围。 降低单个向量计算的复杂度 向量检索支持漏斗模型,先对所有向量进行量化和近似计算,筛选出一定量接近检索目标的数据集,然后基于筛选的数据集进行精细的计算和排序。本方法不需要对所有向量都进行复杂的计算,可以有效提高检索效率。 向量检索即在一个给定的向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。
-
场景描述 通过切换冷热数据,可以将部分现查要求秒级返回的数据放在高性能机器上面作为热数据,对于历史数据要求分钟级别返回的数据放在大容量低规格节点作为冷数据。冷热数据切换可以减低存储成本,提升搜索效率。 图1 切换冷热数据原理 在创建集群时,启用的冷数据节点会被打上“cold”标签,用来存放冷数据,数据节点会被打上“hot”标签,用于存放热数据。用户可以通过配置指定索引,将数据分配到冷数据节点上。只有集群存在冷数据节点时,数据节点才会被打上热标签。 冷数据节点只有在创建集群时可以选择启用,已建集群不支持添加冷数据节点,如果集群没有冷数据节点又想切换冷热数据,可以使用存算分离功能,具体操作请参见配置Elasticsearch集群存算分离。 冷数据节点支持节点数量扩缩容和磁盘存储容量的扩容,具体操作请参见扩缩容Elasticsearch集群。
-
通过索引生命周期管理实现存算分离 登录云搜索服务管理控制台。 在左侧导航栏,选择对应的集群类型,进入集群列表页面。 在集群列表页面中,单击集群操作列的“Kibana”登录Kibana页面。 在Kibana的左侧导航中选择“Dev Tools”,进入命令执行页面。 创建生命周期策略“hot_warm_policy”。 策略定义:当索引创建3天后,自动调用冻结索引API将数据转储到OBS;索引创建7天后,删除该索引。 PUT _opendistro/_ism/policies/hot_warm_policy { "policy": { "description": "hot warm delete workflow", "error_notification": null, "default_state": "hot", "states": [ { "name": "hot", "actions": [], "transitions": [ { "state_name": "warm", "conditions": { "min_index_age": "3d" } } ] }, { "name": "warm", "actions": [ { "freeze_low_cost": {} } ], "transitions": [ { "state_name": "delete", "conditions": { "min_index_age": "7d" } } ] }, { "name": "delete", "actions": [ { "delete": {} } ], "transitions": [] } ] } } 新建索引模板“template_hot_warm”。 模板定义:新建的所有“data”开头的索引会自动关联上生命周期策略“hot_warm_policy”。 PUT _template/template_hot_warm { "index_patterns": "data*", "settings": { "number_of_replicas": 5, "number_of_shards": 1, "opendistro.index_state_management.policy_id": "hot_warm_policy" }, "mappings": { "properties": { "name": { "type": "text" } } } } 表1 参数说明 参数 说明 number_of_shards 索引分片数 number_of_replicas 索引分片副本数 opendistro.index_state_management.policy_id 生命周期的策略名 新建一个索引“data-2022-06-06”,该索引会自动应用索引模板“template_hot_warm”,并通过索引模板的配置与生命周期策略“hot_warm_policy”相关联,实现索引在创建3天后冻结,7天后删除。 POST data-2022-06-06/_bulk {"index":{}} {"name":"name1"} {"index":{}} {"name":"name2"} {"index":{}} {"name":"name3"} {"index":{}} {"name":"name4"} {"index":{}} {"name":"name5"} {"index":{}} {"name":"name6"} 查询数据,确认数据是否实现自动存算分离。 在索引创建三天后查看冻结的索引: GET _cat/freeze_indices?s=i&v 正常情况下会显示3天以前的索引已经被冻结: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open data-2022-06-06 x8ab5NX6T3Ox_xoGUanogQ 1 1 6 0 7.6kb 3.8kb 在索引创建7天后,查看索引情况,正常情况下7天以前的索引已经被删除。
-
原理说明 向量检索从本质上讲,其思维框架和传统的检索方法没有区别。为了提升向量检索的性能,通常需要解决以下两个问题: 减少候选向量集 和传统的文本检索类似,向量检索也需要某种索引结构来避免在全量的数据上做匹配,传统文本检索是通过倒排索引来过滤掉无关文档,而向量检索是通过对向量建立索引结构来绕过不相关的向量,减小需要考察的范围。 降低单个向量计算的复杂度 向量检索支持漏斗模型,先对所有向量进行量化和近似计算,筛选出一定量接近检索目标的数据集,然后基于筛选的数据集进行精细的计算和排序。本方法不需要对所有向量都进行复杂的计算,可以有效提高检索效率。 向量检索即在一个给定的向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。
-
功能介绍 云搜索服务的向量检索引擎集成了暴力检索、图索引(HNSW)、乘积量化、IVF-HNSW等多种向量索引,支持欧式、内积、余弦、汉明等多种相似度计算方式,召回率和检索性能均优于开源引擎。能够满足高性能、高精度、低成本、多模态等多种应用场景及需求。 向量检索支持原生Elasticsearch的所有能力,包括分布式、多副本、错误恢复、快照、权限控制等;兼容所有原生Elasticsearch生态,包括集群监测工具Cerebro,可视化工具Kibana,实时数据采集工具Logstash等;提供Python/Java/Go/C++等多种客户端语言支持。
-
节点监控指标列表 监控的指标ID、指标名称、指标含义以及取值范围参见表2。 监控的测量对象:CSS集群 - 云服务节点 监控的监控周期(原始指标):1分钟 累计值:从节点启动时开始叠加数值,当节点重启后清零重新累计。 表2 云搜索服务节点支持的监控指标 指标ID 指标名称 指标含义 取值范围 jvm_heap_usage JVM堆使用率 节点JVM堆内存使用率。 单位:百分比 0-100% cpu_usage CPU利用率 CPU利用率。 单位:百分比 0-100% disk_util 磁盘使用率 统计测量对象的磁盘使用率。 单位:百分比。 0-100% load_average 节点Load值 操作系统中1分钟平均排队任务数。 ≥ 0 open_file_descriptors 已打开的文件描述符数 节点已打开的文件描述符数。 ≥ 0 max_file_descriptors 最大允许的文件描述符数 最大允许的文件描述符数。 ≥ 0 thread_pool_write_queue Write队列中总排队任务数 写入线程池中的排队任务数。 ≥ 0 thread_pool_search_queue Search队列中总排队任务数 搜索线程池中的排队任务数。 ≥ 0 thread_pool_force_merge_queue ForceMerge队列中总排队任务数 强制合并线程池中的排队任务数。 ≥ 0 thread_pool_write_rejected Write队列中总的已拒绝任务数 写入线程池中的已拒绝任务数。 ≥ 0 thread_pool_search_rejected Search队列中总的已拒绝任务数 搜索线程池中的已拒绝任务数。 ≥ 0 thread_pool_force_merge_rejected ForceMerge队列中总的已拒绝任务数 强制合并线程池中的已拒绝任务数。 ≥ 0 thread_pool_write_threads Write线程池总大小 写入线程池的大小。 ≥ 0 thread_pool_search_threads Search线程池总大小 搜索线程池的大小。 ≥ 0 thread_pool_force_merge_threads ForceMerge线程池总大小 强制合并线程池的大小。 ≥ 0 thread_pool_flush_queue Flush队列中总排队任务数 Flush线程池中的排队任务数。 ≥ 0 thread_pool_flush_rejected Flush队列中总的已拒绝任务数 Flush线程池中的已拒绝任务数。 ≥ 0 thread_pool_flush_threads Flush线程池总大小 Flush线程池的大小。 ≥ 0 thread_pool_generic_queue Generic队列中总排队任务数 Generic线程池中的排队任务数。 ≥ 0 thread_pool_generic_rejected Generic队列中总的已拒绝任务数 Generic线程池中的已拒绝任务数。 ≥ 0 thread_pool_generic_threads Generic线程池总大小 Generic线程池的大小。 ≥ 0 thread_pool_management_queue Management队列中总排队任务数 Management线程池中的排队任务数。 ≥ 0 thread_pool_management_rejected Management队列中总的已拒绝任务数 Management线程池中的已拒绝任务数。 ≥ 0 thread_pool_management_threads Management线程池总大小 Management线程池的大小。 ≥ 0 thread_pool_refresh_queue Refresh队列中总排队任务数 Refresh线程池中的排队任务数。 ≥ 0 thread_pool_refresh_rejected Refresh队列中总的已拒绝任务数 Refresh线程池中的已拒绝任务数。 ≥ 0 thread_pool_refresh_threads Refresh线程池总大小 Refresh线程池的大小。 ≥ 0 thread_pool_obs_searcher_queue OBS Searcher队列中总排队任务数 OBS Searcher线程池中的排队任务数。 ≥ 0 thread_pool_obs_searcher_rejected OBS Searcher队列中总的已拒绝任务数 OBS Searcher线程池中的已拒绝任务数。 ≥ 0 thread_pool_obs_searcher_threads OBS Searcher线程池总大小 OBS Searcher线程池的大小。 ≥ 0 thread_pool_obs_queue OBS队列中总排队任务数 OBS线程池中的排队任务数。 ≥ 0 thread_pool_obs_rejected OBS队列中总的已拒绝任务数 OBS线程池中的已拒绝任务数。 ≥ 0 thread_pool_obs_threads OBS线程池总大小 OBS线程池的大小。 ≥ 0 thread_pool_obs_upload_queue OBS Upload队列中总排队任务数 OBS Upload线程池中的排队任务数。 ≥ 0 thread_pool_obs_upload_rejected OBS Upload队列中总的已拒绝任务数 OBS Upload线程池中的已拒绝任务数。 ≥ 0 thread_pool_obs_upload_threads OBS Upload线程池总大小 OBS Upload线程池的大小。 ≥ 0 thread_pool_obs_download_queue OBS Download队列中总排队任务数 OBS Download线程池中的排队任务数。 ≥ 0 thread_pool_obs_download_rejected OBS Download队列中总的已拒绝任务数 OBS Download线程池中的已拒绝任务数。 ≥ 0 thread_pool_obs_download_threads OBS Download线程池总大小 OBS Download线程池的大小。 ≥ 0 free_fs_size 文件系统可用大小 CSS集群的文件系统可用大小。 单位:byte ≥ 0 bytes total_fs_size 文件系统总大小 CSS集群的文件系统总大小。 单位:byte ≥ 0 bytes jvm_old_gc_count JVM老年代总GC次数 “老年代”垃圾回收的运行次数。 ≥ 0 jvm_old_gc_time JVM老年代总GC时间 执行“老年代”垃圾回收所花费的时间。 单位:ms ≥ 0 ms jvm_young_gc_count JVM年轻代总GC次数 “年轻代”垃圾回收的运行次数。 ≥ 0 jvm_young_gc_time JVM年轻代GC时间 执行“年轻代”垃圾回收所花费的时间。 单位:ms ≥ 0 ms mem_free_in_bytes 可用内存空间 节点未使用的内存容量。 单位:byte ≥ 0 bytes mem_free_percent 可用内存比例 节点未使用的内存比例。 ≥ 0 mem_used_in_bytes 已用内存空间 节点已使用的内存容量。 单位:byte ≥ 0 bytes current_opened_http_count 当前已打开HTTP连接数 节点当前打开的HTTP连接数。 ≥ 0 total_opened_http_count 全部打开的HTTP连接数 节点全部打开的HTTP连接数。 ≥ 0 disk_read_requests_rate 磁盘读IOPS CSS集群节点的磁盘每秒读取数据的请求总次数。 ≥ 0 disk_write_requests_rate 磁盘写IOPS CSS集群节点的磁盘每秒写数据的请求总次数。 ≥ 0 disk_read_bytes_rate 磁盘读带宽 CSS集群节点的磁盘每秒读出数据量。 ≥ 0 disk_write_bytes_rate 磁盘写带宽 CSS集群节点的磁盘每秒写入数据量。 ≥ 0 shards_count 分片数量 CSS集群节点的分片数量 ≥ 0
-
集群监控指标列表 监控的指标ID、指标名称、指标含义以及取值范围参见表1。 监控的测量对象:CSS集群(本文介绍的是Elasticsearch集群和OpenSearch集群的监控指标列表) 监控的监控周期(原始指标):1分钟 累计值:从节点启动时开始叠加数值,当节点重启后清零重新累计。 表1 云搜索服务支持的监控指标 指标ID 指标名称 指标含义 取值范围 status 集群健康状态 该指标用于统计测量监控对象的状态。 0,1,2,3 0:集群是100%可用的。 1:数据是完整的,部分副本缺失。高可用性在某种程度上弱化,存在风险,请及时关注集群情况。 2:数据缺失,集群使用时将出现异常。 3:没有获取到集群状态。 disk_util 磁盘使用率 该指标用于统计测量对象的磁盘使用率。 单位:百分比 0-100% max_jvm_heap_usage 最大JVM堆使用率 CSS集群中各个节点的JVM堆使用率的最大值。 单位:百分比。 0-100% max_jvm_young_gc_time 最大JVM Young GC耗时 CSS集群中各个节点的JVM Young GC耗时累计值的最大值。 单位:ms ≥ 0 ms max_jvm_young_gc_count 最大JVM Young GC次数 CSS集群中各个节点的JVM Young GC次数累计值的最大值。 ≥ 0 max_jvm_old_gc_time 最大JVM Old GC耗时 CSS集群中各个节点的JVM Old GC耗时累计值的最大值。 单位:ms ≥ 0 ms max_jvm_old_gc_count 最大JVM Old GC次数 CSS集群中各个节点的JVM Old GC次数累计值的最大值。 ≥ 0 total_fs_size 文件系统总大小 CSS集群的文件系统总大小。 单位:byte ≥ 0 bytes free_fs_size 文件系统可用大小 CSS集群的文件系统可用大小。 单位:byte ≥ 0 bytes max_cpu_usage 最大CPU利用率 CSS集群中各个节点的CPU利用率的最大值。 单位:百分比 0-100% max_cpu_time_of_jvm_process 最大JVM进程使用的CPU时间 CSS集群中各个节点JVM进程使用CPU的时间累计值的最大值。 单位:ms ≥ 0 ms max_virtual_memory_size_of_jvm_process 最大JVM进程使用的虚拟内存大小 CSS集群中各个节点JVM进程可使用的虚拟内存大小的最大值。 单位:byte ≥ 0 bytes max_current_opened_http_count 最大当前打开的HTTP连接数 CSS集群中各个节点打开且尚未关闭的HTTP连接数的最大值。 ≥ 0 max_total_opened_http_count 最大全部打开的HTTP连接数 CSS集群中各个节点打开过的HTTP连接数累计值的最大值。 ≥ 0 indices_count 索引数量 CSS集群的索引数量。 ≥ 0 total_shards_count 分片数量 CSS集群的分片数量。 ≥ 0 primary_shards_count 主分片数量 CSS集群的主分片数量。 ≥ 0 docs_count 文档数量 CSS集群的文档数量。 ≥ 0 docs_deleted_count 被删除的文档数量 CSS集群的被删除的文档数量。 ≥ 0 nodes_count 节点数量 CSS集群的节点数量。 ≥ 0 data_nodes_count 数据节点数量 CSS集群的数据节点数量。 ≥ 0 coordinating_nodes_count 协调节点数量 CSS集群的协调节点数量。 ≥ 0 master_nodes_count Master节点数量 CSS集群的Master节点数量。 ≥ 0 ingest_nodes_count Client节点数量 CSS集群的Client节点数量。 ≥ 0 max_load_average 最大节点Load值 CSS集群中各个节点在操作系统中1分钟平均排队任务数的最大值。 ≥ 0 avg_cpu_usage 平均CPU使用率 CSS集群中各节点CPU利用率的平均值。 单位:百分比 0-100% avg_load_average 平均节点Load值 CSS集群中各节点在操作系统中1分钟平均排队任务数的平均值。 ≥ 0 avg_jvm_heap_usage 平均JVM堆使用率 CSS集群中各节点JVM堆内存使用率的平均值。 单位:百分比 0-100% max_open_file_descriptors 已打开的最大文件描述符数 CSS集群中各个节点已打开的文件描述符数的最大值。 ≥ 0 avg_open_file_descriptors 已打开的平均文件描述符数 CSS集群中各节点已打开的文件描述符数的平均值。 ≥ 0 sum_max_file_descriptors 最大允许的文件描述符数 CSS集群中各节点最大允许的文件描述符数之和。 ≥ 0 sum_open_file_descriptors 已打开的文件描述符数 CSS集群中各节点已打开的文件描述符数之和。 ≥ 0 sum_thread_pool_write_queue Write队列中总排队任务数 写入线程池中的排队任务数。 ≥ 0 sum_thread_pool_search_queue Search队列中总排队任务数 CSS集群中各节点在搜索线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_force_merge_queue ForceMerge队列中总排队任务数 CSS集群中各节点在强制合并线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_write_rejected Write队列中总的已拒绝任务数 CSS集群中各节点在写入线程池中的已拒绝任务数之和。 ≥ 0 sum_thread_pool_search_rejected Search队列中总的已拒绝任务数 CSS集群中各节点在搜索线程池中的已拒绝任务数之和。 ≥ 0 sum_thread_pool_force_merge_rejected Forcemerge队列中总的已拒绝任务数 CSS集群中各节点在强制合并线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_search_queue Search队列中最大排队任务数 CSS集群中各个节点在搜索线程池中的排队任务数的最大值。 ≥ 0 max_thread_pool_force_merge_queue ForceMerge队列中最大排队任务数 CSS集群中各个节点在强制合并线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_write_threads Write线程池总大小 CSS集群中各节点写入线程池的大小之和。 ≥ 0 sum_thread_pool_search_threads Search线程池总大小 CSS集群中各节点搜索线程池的大小之和。 ≥ 0 sum_thread_pool_force_merge_threads ForceMerge线程池总大小 CSS集群中各节点强制合并线程池的大小之和。 ≥ 0 avg_thread_pool_write_queue Write队列中平均排队任务数 CSS集群中各节点在写入线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_search_queue Search队列中平均排队任务数 CSS集群中各节点在搜索线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_force_merge_queue ForceMerge队列中平均排队任务数 CSS集群中各节点在强制合并线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_search_threads Search线程池平均大小 CSS集群中各节点搜索线程池的大小的平均值。 ≥ 0 avg_thread_pool_write_threads Write线程池平均大小 CSS集群中各节点写入线程池的大小的平均值。 ≥ 0 avg_thread_pool_force_merge_threads ForceMerge线程池平均大小 CSS集群中各节点强制合并线程池的大小的平均值。 ≥ 0 avg_thread_pool_write_rejected Write队列中平均已拒绝任务数 CSS集群中各节点写入线程池中的已拒绝任务数的平均值。 ≥ 0 sum_thread_pool_flush_queue Flush队列中总排队任务数 CSS集群中各个节点在Flush线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_flush_rejected Flush队列中总的已拒绝任务数 CSS集群中各节点在Flush线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_flush_queue Flush队列中最大排队任务数 CSS集群中各个节点在Flush线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_flush_threads Flush线程池总大小 CSS集群中各节点Flush线程池的大小之和。 ≥ 0 avg_thread_pool_flush_queue Flush队列中平均排队任务数 CSS集群中各节点在Flush线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_flush_threads Flush线程池平均大小 CSS集群中各节点在Flush线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_generic_queue Generic队列中总排队任务数 CSS集群中各个节点在Generic线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_generic_rejecte Generic队列中总的已拒绝任务数 CSS集群中各节点在Generic线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_generic_queue Generic队列中最大排队任务数 CSS集群中各个节点在Generic线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_generic_threads Generic线程池总大小 CSS集群中各节点Generic线程池的大小之和。 ≥ 0 avg_thread_pool_generic_queue Generic队列中平均排队任务数 CSS集群中各节点在Generic线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_generic_threads Generic线程池平均大小 CSS集群中各节点在Generic线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_management_queue Management队列中总排队任务数 CSS集群中各个节点在Management线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_management_rejected Management队列中总的已拒绝任务数 CSS集群中各节点在Management线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_management_queue Management队列中最大排队任务数 CSS集群中各个节点在Management线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_management_threads Management线程池总大小 CSS集群中各节点Management线程池的大小之和。 ≥ 0 avg_thread_pool_management_queue Management队列中平均排队任务数 CSS集群中各节点在Management线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_management_threads Management线程池平均大小 CSS集群中各节点在Management线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_refresh_queue Refresh队列中总排队任务数 CSS集群中各个节点在Refresh线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_refresh_rejected Refresh队列中总的已拒绝任务数 CSS集群中各节点在Refresh线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_refresh_queue Refresh队列中最大排队任务数 CSS集群中各个节点在Refresh线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_refresh_threads Refresh线程池总大小 CSS集群中各节点Refresh线程池的大小之和。 ≥ 0 avg_thread_pool_refresh_queue Refresh队列中平均排队任务数 CSS集群中各节点在Refresh线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_refresh_threads Refresh线程池平均大小 CSS集群中各节点在Refresh线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_obs_searcher_queue OBS Searcher队列中总排队任务数 CSS集群中各个节点在OBS Searcher线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_obs_searcher_rejected OBS Searcher队列中总的已拒绝任务数 CSS集群中各节点在OBS Searcher线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_obs_searcher_queue OBS Searcher队列中最大排队任务数 CSS集群中各个节点在OBS Searcher线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_obs_searcher_threads OBS Searcher线程池总大小 CSS集群中各节点OBS Searcher线程池的大小之和。 ≥ 0 avg_thread_pool_obs_searcher_queue OBS Searcher队列中平均排队任务数 CSS集群中各节点在OBS Searcher线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_obs_searcher_threads OBS Searcher线程池平均大小 CSS集群中各节点在OBS Searcher线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_obs_queue OBS队列中总排队任务数 CSS集群中各个节点在OBS线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_obs_rejected OBS队列中总的已拒绝任务数 CSS集群中各节点在OBS线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_obs_queue OBS队列中最大排队任务数 CSS集群中各个节点在OBS线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_obs_threads OBS线程池总大小 CSS集群中各节点OBS线程池的大小之和。 ≥ 0 avg_thread_pool_obs_queue OBS队列中平均排队任务数 CSS集群中各节点在OBS线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_obs_threads OBS线程池平均大小 CSS集群中各节点在OBS线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_obs_upload_queue OBS Upload队列中总排队任务数 CSS集群中各个节点在OBS Upload线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_obs_upload_rejected OBS Upload队列中总的已拒绝任务数 CSS集群中各节点在OBS Upload线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_obs_upload_queue OBS Upload队列中最大排队任务数 CSS集群中各个节点在OBS Upload线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_obs_upload_threads OBS Upload线程池总大小 CSS集群中各节点OBS Upload线程池的大小之和。 ≥ 0 avg_thread_pool_obs_upload_queue OBS Upload队列中平均排队任务数 CSS集群中各节点在OBS Upload线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_obs_upload_threads OBS Upload线程池平均大小 CSS集群中各节点在OBS Upload线程池中的排队任务数的平均值。 ≥ 0 sum_thread_pool_obs_download_queue OBS Download队列中总排队任务数 CSS集群中各个节点在OBS Download线程池中的排队任务数之和。 ≥ 0 sum_thread_pool_obs_download_rejected OBS Download队列中总的已拒绝任务数 CSS集群中各节点在OBS Download线程池中的已拒绝任务数之和。 ≥ 0 max_thread_pool_obs_download_queue OBS Download队列中最大排队任务数 CSS集群中各个节点在OBS Download线程池中的排队任务数的最大值。 ≥ 0 sum_thread_pool_obs_download_threads OBS Download线程池总大小 CSS集群中各节点OBS Download线程池的大小之和。 ≥ 0 avg_thread_pool_obs_download_queue OBS Download队列中平均排队任务数 CSS集群中各节点在OBS Download线程池中的排队任务数的平均值。 ≥ 0 avg_thread_pool_obs_download_threads OBS Download线程池平均大小 CSS集群中各节点在OBS Download线程池中的排队任务数的平均值。 ≥ 0 min_free_fs_size 最小可用存储空间 CSS集群中各个节点可用存储空间的最小值。 单位:byte ≥ 0 bytes avg_jvm_old_gc_count JVM老年代平均GC次数 CSS集群中各个节点“老年代”垃圾回收的运行次数的累计值的平均值。 ≥ 0 avg_jvm_old_gc_time JVM老年代平均GC时间 CSS集群中各个节点执行“老年代”垃圾回收所花费的时间累计值的平均值。 单位:ms ≥ 0 ms avg_jvm_young_gc_count JVM年轻代平均GC次数 CSS集群中各个节点“年轻代”垃圾回收的运行次数的累计值的平均值。 ≥ 0 avg_jvm_young_gc_time JVM年轻代平均GC时间 CSS集群中各个节点执行“年轻代”垃圾回收所花费的时间累计值的平均值。 单位:ms ≥ 0 ms avg_max_file_descriptors 最大允许的文件描述符数-平均值 CSS集群中各节点最大允许的文件描述符数的平均值。 ≥ 0 avg_mem_free_in_bytes 平均可用内存空间 CSS集群中各节点未使用的内存容量的平均值。 单位:byte ≥ 0 bytes avg_mem_free_percent 平均可用内存比例 CSS集群中各节点未使用的内存比例的平均值。 单位:百分比 0-100% avg_mem_used_in_bytes 平均已用内存空间 CSS集群中各节点已使用的内存容量的平均值。 单位:byte ≥ 0 bytes avg_mem_used_percent 平均已用内存比例 CSS集群中各节点已使用的内存比例的平均值。 单位:百分比 0-100% max_mem_free_in_bytes 最大可用内存空间 CSS集群中各个节点未使用的内存容量的最大值。 单位:byte ≥ 0 bytes max_mem_free_percent 最大可用内存比例 CSS集群中各个节点未使用的内存比例的最大值。 单位:百分比 0-100% max_mem_used_in_bytes 最大已用内存空间 CSS集群中各个节点已使用的内存容量的最大值。 单位:byte ≥ 0 bytes max_mem_used_percent 最大已用内存比例 CSS集群中各个节点已使用的内存比例的最大值。 单位:百分比 0-100% sum_jvm_old_gc_count JVM老年代总GC次数 CSS集群中各个节点“老年代”垃圾回收的运行次数的累计值之和。 ≥ 0 sum_jvm_old_gc_time JVM老年代总GC时间 CSS集群中各个节点执行“老年代”垃圾回收所花费的时间累计值之和。 单位:ms ≥ 0ms sum_jvm_young_gc_count JVM年轻代总GC次数 CSS集群中各个节点“年轻代”垃圾回收的运行次数的累计值之和。 ≥ 0 sum_jvm_young_gc_time JVM年轻代总GC时间 CSS集群中各个节点执行“年轻代”垃圾回收所花费的时间累计值之和。 单位:ms ≥ 0 ms sum_current_opened_http_count 当前已打开HTTP连接数 CSS集群中各个节点打开且尚未关闭的HTTP连接数之和。 ≥ 0 sum_total_opened_http_count 历史已打开HTTP连接数 CSS集群中各个节点打开过的HTTP连接数累计值之和。 ≥ 0 IndexingLatency 平均索引延迟 分片完成索引操作所需的平均时间。 单位:ms ≥ 0 ms IndexingRate 平均索引速率 入库TPS,集群每秒平均索引操作数。 ≥ 0 SearchLatency 平均查询延迟 分片完成搜索操作所需的平均时间。 单位:ms。 ≥ 0 ms SearchRate 平均查询速率 查询QPS,集群每秒平均查询操作数。 ≥ 0 task_max_running_time 最大Task运行时长 该指标为集群运行的所有task中,运行时长最长的task的耗时 ≥ 0 ms number_of_pending_tasks Pending Task排队任务数 CSS集群中待Master处理的task的排队任务数。 ≥ 0 sum_disk_read_requests_rate 磁盘读总IOPS CSS集群所有节点的磁盘每秒读取数据的请求总次数。 ≥ 0 sum_disk_write_requests_rate 磁盘写总IOPS CSS集群所有节点的磁盘每秒写数据的请求总次数。 ≥ 0 sum_disk_read_bytes_rate 磁盘读总带宽 CSS集群所有节点的磁盘每秒读出数据量。 ≥ 0 sum_disk_write_bytes_rate 磁盘写总带宽 CSS集群所有节点的磁盘每秒写入数据量。 ≥ 0
-
约束限制 备份与恢复索引功能上线之前(即2018年3月10日之前)创建的集群,无法创建快照。 第一次备份时,建议将所有索引数据进行备份。 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。 修改存储快照的OBS桶之后,集群将会从新的OBS桶中获取快照数据。 当集群处于“不可用”状态时,快照功能中除了恢复快照功能外,其他快照信息或功能只能查看,无法进行编辑。 备份与恢复过程中,支持集群扩容(如果是恢复至本集群,则本集群不支持扩容)、访问Kibana、查看监控、删除其他快照的操作。不支持重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。 CSS集群第一次快照是全量,后面再备份快照是在之前的快照基础上增量,CSS是增量快照逻辑,快照之间的文件会相互依赖。
-
SecuredHttpClientConfigCallback代码示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.apache.http.nio.conn.ssl.SSLIOSessionStrategy; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.common.Nullable; import java.util.Objects; class SecuredHttpClientConfigCallback implements RestClientBuilder.HttpClientConfigCallback { @Nullable private final CredentialsProvider credentialsProvider; /** * The {@link SSLIOSessionStrategy} for all requests to enable SSL / TLS encryption. */ private final SSLIOSessionStrategy sslStrategy; /** * Create a new {@link SecuredHttpClientConfigCallback}. * * @param credentialsProvider The credential provider, if a username/password have been supplied * @param sslStrategy The SSL strategy, if SSL / TLS have been supplied * @throws NullPointerException if {@code sslStrategy} is {@code null} */ SecuredHttpClientConfigCallback(final SSLIOSessionStrategy sslStrategy, @Nullable final CredentialsProvider credentialsProvider) { this.sslStrategy = Objects.requireNonNull(sslStrategy); this.credentialsProvider = credentialsProvider; } /** * Get the {@link CredentialsProvider} that will be added to the HTTP client. * * @return Can be {@code null}. */ @Nullable CredentialsProvider getCredentialsProvider() { return credentialsProvider; } /** * Get the {@link SSLIOSessionStrategy} that will be added to the HTTP client. * * @return Never {@code null}. */ SSLIOSessionStrategy getSSLStrategy() { return sslStrategy; } /** * Sets the {@linkplain HttpAsyncClientBuilder#setDefaultCredentialsProvider(CredentialsProvider) credential provider}, * * @param httpClientBuilder The client to configure. * @return Always {@code httpClientBuilder}. */ @Override public HttpAsyncClientBuilder customizeHttpClient(final HttpAsyncClientBuilder httpClientBuilder) { // enable SSL / TLS httpClientBuilder.setSSLStrategy(sslStrategy); // enable user authentication if (credentialsProvider != null) { httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } return httpClientBuilder; } }
-
集群对接负载均衡器 登录云搜索服务管理控制台。 在“集群管理”页面选择需要对接负载均衡器的集群,单击集群名称进入集群“基本信息”页面。 在左侧菜单栏,选择“负载均衡”,打开负载均衡开关,在弹窗中配置负载均衡基础信息。 表4 配置负载均衡 参数 说明 负载均衡器 选择前面创建的独享型负载均衡器。CSS集群属于托管资源,所选的负载均衡器必须开启“跨VPC后端”能力才能正常使用。 委托 选择 IAM 委托,当前账号授权CSS服务访问和使用ELB资源。 当首次配置委托时,可以单击“自动创建委托”新建委托“css-elb-agency”直接使用。 当已有自动创建的委托时,可以单击“委托一键授权”,删除委托中“ELB Administrator”系统角色或“ELB FullAccess”系统策略的权限,新增如下自定义策略授权委托到最小化权限。 "elb:loadbalancers:list", "elb:loadbalancers:get", "elb:certificates:list", "elb:healthmonitors:*", "elb:members:*", "elb:pools:*", "elb:listeners:*" “自动创建委托”和“委托一键授权”需要如下最小权限。 "iam:agencies:listAgencies", "iam:roles:listRoles", "iam:agencies:getAgency", "iam:agencies:createAgency", "iam:permissions:listRolesForAgency", "iam:permissions:grantRoleToAgency", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:revokeRoleFromAgency", "iam:roles:createRole" 使用委托需要如下最小权限。 "iam:agencies:listAgencies", "iam:agencies:getAgency", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:listRolesForAgency" 图1 开启负载均衡 单击“确定”,开启负载均衡。 在“监听器配置”区域,您可以单击右侧配置监听器的相关信息。 表5 配置监听器 参数 配置说明 前端协议 客户端与负载均衡监听器建立流量分发连接的协议。支持选择“HTTP”或“HTTPS”。 根据实际业务需要选择协议。 前端端口 客户端与负载均衡监听器建立流量分发连接的端口。 根据实际业务需要自定义。 SSL解析方式 客户端到服务器端认证方式。仅“前端协议”选择“HTTPS”才需要配置。 根据实际业务需要选择解析方式。 服务器证书 服务器证书用于SSL握手协商,需提供证书内容和私钥。仅“前端协议”选择“HTTPS”才需要配置服务器证书。 选择准备并上传自签名证书创建的服务器证书。 CA证书 CA证书又称客户端CA公钥证书,用于验证客户端证书的签发者。仅“SSL解析方式”选择“双向认证”时,才需要配置CA证书。 选择准备并上传自签名证书创建的CA证书。 在开启HTTPS双向认证功能时,只有当客户端能够出具指定CA签发的证书时,HTTPS连接才能成功。 图2 配置监听器 (可选)在监听器配置区域,单击“访问控制”后的“设置”跳转到负载均衡器的监听器列表,单击监听器访问控制列的“设置”,配置允许通过负载均衡实例访问集群的IP地址组,不设置的话默认允许所有的IP地址访问。 在健康检查区域,您可以查看各个节点IP的健康检查结果。 表6 健康检查结果状态说明 健康检查结果 说明 正常 节点IP连接正常。 异常 节点IP连接,不可用
-
ESSecuredClientWithCerDemo代码示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 import org.apache.commons.io.IOUtils; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.HttpHost; import org.apache.http.nio.conn.ssl.SSLIOSessionStrategy; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.builder.SearchSourceBuilder; import java.io.FileInputStream; import java.io.IOException; import java.security.KeyStore; import java.security.SecureRandom; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManagerFactory; public class ESSecuredClientWithCerDemo { private static final String KEY_STORE_PWD = ""; private static final String TRUST_KEY_STORE_PWD = ""; private static final String CA_JKS_PATH = "ca.jks"; private static final String CLIENT_JKS_PATH = "client.jks"; private static final String ELB_ADDRESS = "127.0.0.1"; private static final int ELB_PORT = 9200; private static final String CSS_USERNAME = "user"; private static final String CSS_PWD = ""; public static void main(String[] args) { // 建立客户端 RestHighLevelClient client = initESClient(ELB_ADDRESS, CSS_USERNAME, CSS_PWD); try { // 查询 match_all,相当于 {\"query\": {\"match_all\": {}}} SearchRequest searchRequest = new SearchRequest(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); searchRequest.source(searchSourceBuilder); // query SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); System.out.println("query result: " + searchResponse.toString()); SearchHits hits = searchResponse.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); } System.out.println("query success"); Thread.sleep(2000L); } catch (InterruptedException | IOException e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(client); } } private static RestHighLevelClient initESClient(String clusterAddress, String userName, String password) { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password)); SSLContext ctx = null; try { KeyStore ks = getKeyStore(CLIENT_JKS_PATH, KEY_STORE_PWD, "JKS"); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, KEY_STORE_PWD.toCharArray()); KeyStore tks = getKeyStore(CA_JKS_PATH, TRUST_KEY_STORE_PWD, "JKS"); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(tks); ctx = SSLContext.getInstance("SSL", "SunJSSE"); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom()); } catch (Exception e) { e.printStackTrace(); } SSLIOSessionStrategy sessionStrategy = new SSLIOSessionStrategy(ctx, new HostnameVerifier() { @Override public boolean verify(String arg0, SSLSession arg1) { return true; } }); SecuredHttpClientConfigCallback httpClientConfigCallback = new SecuredHttpClientConfigCallback(sessionStrategy, credentialsProvider); RestClientBuilder builder = RestClient.builder(new HttpHost(clusterAddress, ELB_PORT, "https")) .setHttpClientConfigCallback(httpClientConfigCallback); RestHighLevelClient client = new RestHighLevelClient(builder); return client; } private static KeyStore getKeyStore(String path, String pwd, String type) { KeyStore keyStore = null; FileInputStream is = null; try { is = new FileInputStream(path); keyStore = KeyStore.getInstance(type); keyStore.load(is, pwd.toCharArray()); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } return keyStore; } }
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格