云主机开年特惠28.8元/年,0元秒杀等你来抢!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 天翼云新春焕新季 NEW 云主机开年特惠28.8元/年,0元秒杀等你来抢!
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
  • MCP市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
模型推理服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V3.1
  • DeepSeek-R1-0528
  • DeepSeek-V3-0324
  • Qwen3-235B-A22B
  • Qwen3-32B
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      SSL VPN_相关内容
      • 使用限制
        本节主要介绍使用限制。 集群和节点 云容器引擎对单个用户的资源数量和容量限定了配额,默认情况下,您最多可以创建5个集群(每个Region下),每个集群中可以选择50节点、200节点、1000节点、2000节点几种规格。 非高可用模式的集群在控制节点故障后将不可用,影响业务功能,不适用于商用场景,建议您选择“高可用”模式。 集群创建时将默认创建名称带有“cce”标识的安全组规则,删除或修改后可能导致集群无法正常使用。 集群名称、集群规模、高可用开关、网络模型、网段配置、服务转发模式在集群创建后将无法修改,请谨慎选择。 CCE集群默认安装采集探针,方便您在Web界面查看集群资源的日志和监控信息。 集群一旦创建以后,不支持变更以下项: 变更集群的控制节点数量,例如非高可用集群(控制节点数量为1)变更为高可用集群(控制节点数量为3)。 变更控制节点可用区。 变更集群的网络配置,如所在的虚拟私有云VPC、子网、容器网段、服务网段、IPv6、kubeproxy代理(转发)模式。 变更网络模型,例如“容器隧道网络”更换为“VPC网络”。 CCE创建的ECS实例(节点)目前支持“按需计费”和“包年/包月”,其他资源(例如负载均衡)为按需计费。如果资源所属的服务支持将按需计费实例转换成包年/包月实例,您可以通过对应的控制台进行操作。 集群中纳管计费模式为“包年包月”的节点时,无法在CCE控制台为其续费,用户需前往ECS控制台单独续费。 由于ECS(节点)等CCE依赖的底层资源存在产品配额及库存限制,创建集群、扩容集群或者自动弹性扩容时,可能只有部分节点创建成功。 ECS(节点)规格要求:CPU ≥ 2核且内存 ≥ 4GB。 通过搭建VPN方式访问CCE集群,需要注意VPN网络和集群所在的VPC网段、容器使用网段不能冲突
        来自:
        帮助文档
        云容器引擎
        产品简介
        使用限制
      • 证书类型概览
        VPN网关类型 IPse连接: 认证类型 IPsec连接: 认证选择 是否需要证书 应用场景 国密 证书认证 上传的证书 需要上传国密证书,参见上传证书。 仅适用于支持国密算法的企业本地数据中心、企业办公网络与天翼云云VPC之间建立网络连接。 普通 密钥认证 适用于在企业本地数据中心、企业办公网络、互联网客户端与天翼云VPC之间建立网络连接。 普通 证书认证 自签(默认) 不需要上传证书,系统自动创建一套证书。 适用于在企业本地数据中心、企业办公网络、互联网客户端与天翼云VPC之间建立网络连接。 普通 证书认证 上传的证书 需要上传证书,参见上传证书。 适用于在企业本地数据中心、企业办公网络、互联网客户端与天翼云VPC之间建立网络连接。
        来自:
        帮助文档
        VPN连接
        用户指南
        证书管理
        证书类型概览
      • Java调用示例
        1. com.ffcs.ebp.ebpsdk.common.Response java package com.ffcs.ebp.ebpsdk.common; import java.util.Map; public class Response { private int statusCode; private String body; private Map headers; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode statusCode; } public String getBody() { return body; } public void setBody(String body) { this.body body; } public Map getHeaders() { return headers; } public void setHeaders(Map headers) { this.headers headers; } } 2. com.ffcs.ebp.ebpsdk.YunSign java package com.ffcs.ebp.ebpsdk; import com.ffcs.ebp.ebpsdk.common.Response; import org.apache.commons.lang.StringUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.; import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.; public class YunSign { private String url; private String body; private String ak; private String sk; private String uuId; private int temp; private String contentType; private String queryStr; private Map headerMap; private String afterQuery; public YunSign(String url, String ak, String sk, String uuId, String body, int temp, String contentType, String queryStr, Map headerMap) { this.url url; if(body.equals("{}")){ body ""; } this.body body; this.ak ak; this.sk sk; this.uuId uuId; this.temp temp; this.contentType contentType; this.queryStr queryStr; this.headerMap headerMap; } public Response toDo(String method, int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response response null; method method.toUpperCase(); switch (method) { case "POST": response doPost(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "GET": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByGetReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doGet(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "DELETE": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByDeleteReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doDelete(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "PUT": response doPut(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "PATCH": response doPatch(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "HEAD": response doHead(connectTimeout, connectionRequestTimeout, socketTimeout); break; } return response; } private String getSign(Date eopDate) { String calculateContentHash getSHA256(body); //报文原封不动进行sha256摘要 // System.out.println("calculateContentHash:" + calculateContentHash); SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); SimpleDateFormat DATEFORMATTER new SimpleDateFormat("yyyyMMdd"); String singerDate TIMEFORMATTER.format(eopDate); String singerDd DATEFORMATTER.format(eopDate); //header的key按照26字母进行排序, 以&作为连接符连起来 try { String CampmocalHeader String.format("ctyuneoprequestid:%sneopdate:%sn", this.uuId, singerDate); String sigture CampmocalHeader + "n" + this.afterQuery + "n" + calculateContentHash; // System.out.println("sigture:" + sigture); byte[] ktime HmacSHA256(singerDate.getBytes(), sk.getBytes()); // System.out.println("ktime:" + HexUtils.bytes2Hex(ktime)); byte[] kAk HmacSHA256(ak.getBytes(), ktime); // System.out.println("kAk:" + HexUtils.bytes2Hex(kAk)); byte[] kdate HmacSHA256(singerDd.getBytes(), kAk); // System.out.println("kdate:" + HexUtils.bytes2Hex(kdate)); String Signature Base64.getEncoder().encodeToString(HmacSHA256(sigture.getBytes("UTF8"), kdate)); // System.out.println("Signature:" + Signature); String signHeader String.format("%s Headersctyuneoprequestid;eopdate Signature%s", ak, Signature); // System.out.println("signHeader:" + signHeader); return signHeader; } catch (Exception e) { e.printStackTrace(); } return null; } / 在调用SSL之前需要重写验证方法,取消检测SSL 创建ConnectionManager,添加Connection配置信息 @return HttpClient 支持https / private static CloseableHttpClient sslClient() { try { // 在调用SSL之前需要重写验证方法,取消检测SSL X509TrustManager trustManager new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] xcs, String str) { } @Override public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; SSLContext ctx SSLContext.getInstance(SSLConnectionSocketFactory.TLS); ctx.init(null, new TrustManager[]{trustManager}, null); SSLConnectionSocketFactory socketFactory new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); // 创建Registry RequestConfig requestConfig RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARDSTRICT) .setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)) .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build(); Registry socketFactoryRegistry RegistryBuilder. create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", socketFactory).build(); // 创建ConnectionManager,添加Connection配置信息 PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager(socketFactoryRegistry); CloseableHttpClient closeableHttpClient HttpClients.custom().setConnectionManager(connectionManager) .setDefaultRequestConfig(requestConfig).build(); return closeableHttpClient; } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } public Response doGet(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); //创建HttpGet远程连接实例 HttpGet httpGet; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGet new HttpGet(this.url + "?" + this.afterQuery); } else { httpGet new HttpGet(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGet.setHeader("ContentType", this.contentType); httpGet.setHeader("ctyuneoprequestid", this.uuId); httpGet.setHeader("EopAuthorization", getSign(eopDate)); httpGet.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGet.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGet.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpGet.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpGet); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByGetReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response result new Response(); CloseableHttpClient client null; CloseableHttpResponse response null; try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL client sslClient(); } else { client HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpGetWithEntity远程连接实例 HttpGetWithEntity httpGetWithEntity; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGetWithEntity new HttpGetWithEntity(this.url + "?" + this.afterQuery); } else { httpGetWithEntity new HttpGetWithEntity(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为HttpGetWithEntity实例设置配置 httpGetWithEntity.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGetWithEntity.setHeader("ContentType", this.contentType); httpGetWithEntity.setHeader("ctyuneoprequestid", this.uuId); httpGetWithEntity.setHeader("EopAuthorization", getSign(eopDate)); httpGetWithEntity.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGetWithEntity.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGetWithEntity.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); httpGetWithEntity.setEntity(httpEntity); //执行请求操作,并拿到结果(同步阻塞) response client.execute(httpGetWithEntity); //获取结果实体 HttpEntity entity response.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! client) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPost(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpPost远程连接实例 HttpPost httpPost; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPost new HttpPost(this.url + "?" + this.afterQuery); } else { httpPost new HttpPost(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPost.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPost.setHeader("ContentType", this.contentType); httpPost.setHeader("ctyuneoprequestid", this.uuId); httpPost.setHeader("EopAuthorization", getSign(eopDate)); httpPost.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPost.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPost.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPost.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPost); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPut(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPut远程连接实例 HttpPut httpPut; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPut new HttpPut(this.url + "?" + this.afterQuery); } else { httpPut new HttpPut(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPut.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(20321900,01,05); httpPut.setHeader("ContentType", this.contentType); httpPut.setHeader("ctyuneoprequestid", this.uuId); httpPut.setHeader("EopAuthorization", getSign(eopDate)); httpPut.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPut.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPut.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPut.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPut); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPatch(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPatch远程连接实例 HttpPatch httpPatch; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPatch new HttpPatch(this.url + "?" + this.afterQuery); } else { httpPatch new HttpPatch(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPatch.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPatch.setHeader("ContentType", this.contentType); httpPatch.setHeader("ctyuneoprequestid", this.uuId); httpPatch.setHeader("EopAuthorization", getSign(eopDate)); httpPatch.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPatch.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPatch.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPatch.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPatch); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doDelete(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDelete httpDelete; if (StringUtils.isNotEmpty(this.afterQuery)) { httpDelete new HttpDelete(this.url + "?" + this.afterQuery); } else { httpDelete new HttpDelete(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpDelete.setHeader("ContentType", this.contentType); httpDelete.setHeader("ctyuneoprequestid", this.uuId); httpDelete.setHeader("EopAuthorization", getSign(eopDate)); httpDelete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpDelete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpDelete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpDelete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpDelete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByDeleteReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDeleteWithBody delete; if (StringUtils.isNotEmpty(this.afterQuery)) { delete new HttpDeleteWithBody(this.url + "?" + this.afterQuery); } else { delete new HttpDeleteWithBody(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); delete.setHeader("ContentType", this.contentType); delete.setHeader("ctyuneoprequestid", this.uuId); delete.setHeader("EopAuthorization", getSign(eopDate)); delete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { delete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : delete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); delete.setEntity(httpEntity); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 delete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(delete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doHead(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpHead远程连接实例 HttpHead httpHead; if (StringUtils.isNotEmpty(this.afterQuery)) { httpHead new HttpHead(this.url + "?" + this.afterQuery); } else { httpHead new HttpHead(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpHead.setHeader("ContentType", this.contentType); httpHead.setHeader("ctyuneoprequestid", this.uuId); httpHead.setHeader("EopAuthorization", getSign(eopDate)); httpHead.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpHead.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpHead.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpHead实例设置配置 httpHead.setConfig(requestConfig); // 执行head请求得到返回对象 response httpClient.execute(httpHead); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } private String toHex(byte[] data) { StringBuilder sb new StringBuilder(data.length 2); byte[] var2 data; int var3 data.length; for (int var4 0; var4 2) { String encodeStr null; encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + str; } } else { String[] s str.split(""); if (s.length > 2) { String encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } } } } } catch (Exception e) { e.printStackTrace(); } return afterQuery; } } 3. HexUtils.java java package com.ffcs.ebp.ebpsdk; public class HexUtils { private static final char[] HEXES { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; / byte数组 转换成 16进制小写字符串 / public static String bytes2Hex(byte[] bytes) { if (bytes null bytes.length 0) { return null; } StringBuilder hex new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } / 16进制字符串 转换为对应的 byte数组 / public static byte[] hex2Bytes(String hex) { if (hex null hex.length() 0) { return null; } char[] hexChars hex.toCharArray(); byte[] bytes new byte[hexChars.length / 2]; // 如果 hex 中的字符不是偶数个, 则忽略最后一个 for (int i 0; i headerMap new HashMap<>(); // headerMap.put("queryMetricDataInfo", "{"regionId":"cnsz1","dim":"instanceid,98cdcc8a8e544788ab9cc94ccee429c7","filter":"average","from":"1658473040","to":"1658473040","metricName":"netbitRecv","namespace":"AGT.ECS","period":"1"},"platform":"3"}"); // headerMap.put("platform", "3"); // headerMap.put("consoleUrl", " // headerMap.put("UserAgent", "3333433"); // headerMap.put("XForwardedFor", "1231313"); // headerMap.put("regionId", "100054c0416811e9a6690242ac110002"); // headerMap.put("prodInstId","9dcaf0157c604100af79bdb8271527bc"); //请求地址 String url " //query参数(?后面拼接的参数。没有就不填) aaaa&bbbb String queryStr "regionID41f64827xxxxxxxxxffa3a5deb5d15d"; //body参数(没有就不填) String body ""; //APPID String ak "9f82cacd3f8235c66edfs5e899f098e6"; //appkey String sk "MlgzESz430hJgTzA4lkjuJvDMMLTqwBQRicVqV62VM"; String uuId UUID.randomUUID().toString(); //连接超时 int connectTimeout 35000; //连接请求超时 int connectionRequestTimeout 35000; //socket超时 int socketTimeout 60000; YunSign yunSign new YunSign(url, ak, sk, uuId, body, temp, contentType, queryStr, headerMap); Response response yunSign.toDo(method, connectTimeout, connectionRequestTimeout, socketTimeout); System.out.println("应答头部 "); for (Map.Entry entry : response.getHeaders().entrySet()) { System.out.println(entry.getKey().toString() + ":" + entry.getValue().toString()); } System.out.println(); System.out.println("请求结果 "); System.out.println(response.getBody()); } }
        来自:
        帮助文档
        对象存储 ZOS
        API参考
        如何调用API
        Java调用示例
      • 延长监控剩余天数
        本文介绍如何续期域名监控服务。 监控剩余天数不充足时,可对域名监控服务进行“续期”,延长使用时长。 注意事项 续期后不支持退订,请充分评估业务需求后再进行操作。 操作步骤 1. 登录证书管理服务控制台。 2. 在左侧导航栏选择“SSL证书管理 > 域名监控服务”。 3. 在域名监控列表找到需要续期的域名,单击剩余天数列的“续期”。 4. 在弹出的对话框中,选择续期配额数量。 单次最多续期5个配额。 每个配额可续期365天,续期的天数将累加至原“监控剩余天数”。 5. 配置完成后,单击“确定”,完成操作。
        来自:
        帮助文档
        证书管理服务
        用户指南
        SSL证书
        域名监控服务
        延长监控剩余天数
      • 登录数据库
        本文介绍如何使用数据管理服务DMS登录数据库。 前提条件 已登录数据管理服务。 登录所用的数据库账号已经具备足够的库表访问权限。 操作步骤 1. 点击 数据资产 >实例管理 ,进入实例列表界面。 2. 在实例列表找到目标实例,点击 登录 按钮,弹出登录弹窗。 3. 在登录弹窗中输入数据库账号和密码. 4. 点击 确定 按钮完成登录。 5. 登录成功后,原列表中的 登录 按钮会变成 切换账户 。 说明 1、开启SSL的实例可能会登录失败。 2、在企业版中主要使用托管,只有dds实例需要进行登录操作
        来自:
        帮助文档
        数据管理服务
        用户指南
        数据资产
        实例管理
        实例列表
        登录数据库
      • 查询实例证书配置
        枚举参数 参数名 certSrc 枚举值 类型 说明 CUSTOMIZE String 自定义证书 DEFAULT String 服务端默认证书 参数名 authType 枚举值 类型 说明 DI String 单向认证 BI String 双向认证 请求示例 请求url 请求头header { "regionId":"bb9fdb42056f11eda1610242ac110002" } 请求体body 无 响应示例 { "statusCode":800, "returnObj": { "certSrc": "CUSTOMIZE", "authType": "DI", "serverCert": { "certId": "xxx" }, "clientCA": { "certId": "yyy" } } } 状态码 请参考 状态码 错误码 请参考 错误码
        来自:
        帮助文档
        分布式消息服务MQTT
        API参考
        API
        2022-04-13
        查询实例证书配置
      • 数据订阅
        本节主要介绍数据订阅 AOM支持用户订阅指标或者告警信息,订阅后可以将数据转发到用户配置的kafka或DMS的Topic中,供消费者消费转发的订阅的信息。 说明 最多可创建10个数据订阅规则。 创建订阅规则 步骤 1 在左侧导航栏中选择“配置管理 > 数据订阅”。 步骤 2 单击“创建订阅规则”,设置相关参数后,单击“确定”。 您可根据实际需求,选择订阅目标类型为“自定义Kafka”或“分布式消息服务DMS”。 1、订阅目标类型为“自定义Kafka”。 数据订阅规则参数说明 参数 说明 示例 规则名称 订阅规则名称。 输入:aomkafkatest。 订阅内容 支持“指标”和“告警”。 选择:指标。 订阅目标类型 选择“自定义Kafka”或“分布式消息服务DMS”。 自定义Kafka 订阅目标连接地址 用户自己的kafka地址,需要打通网络。格式为逗号分割的ipv4:port。例如: 192.168.0.1:9092,192.168.0.2:9092 根据实际情况填写。 a.(可选)进入到“规则详情”,单击 ,配置Kafka SASLSSL,参数如下表所示。 说明 AOM当前仅支持Kafka SASLSSL安全认证配置,如果目前实例已经开启Kafka SASLSSL,请打开此开关。 配置Kafka SASLSSL参数 参数 说明 示例 用户名 SASL用户名用于实例访问认证。 demo 密码 SASL密码用于实例访问认证,请妥善管理密码,系统无法获取您设置的密码内容。 客户端证书 请采用.pem格式的客户端证书 b.单击“验证并保存自定义Kafka配置信息”,验证自定义Kafka实例连通性。 c.选择数据发送topic后,单击“确定”。 2、订阅目标类型选择“分布式消息服务DMS”,请参考下表配置参数。 数据订阅规则参数说明 参数 说明 示例 规则名称 订阅规则名称 输入:aomkafkatest。 订阅内容 支持“指标”和“告警”。 选择:指标。 订阅目标类型 选择“自定义Kafka”或“分布式消息服务DMS”。 分布式消息服务DMS 实例 选择DMS实例,如没有DMS实例,请单击“创建DMS实例”,创建DMS实例。 kafkaaom7160 a. 进入到“规则详情”,单击“创建网络连接通道”。 b. 验证DMS实例连通性。 您需要确保在安全组"入方向规则"中,放通9011端口,源地址为"198.19.128.0/20"的网络流量。设置安全组规则操作如下: i. 登录管理控制台。 ii. 在左侧导航栏,单击 ,选择“网络 > 虚拟私有云 VPC”。 iii. 在左侧导航栏单击“访问控制 > 安全组”,在使用DMS所在的安全组右侧,单击“配置规则”。 iv. 在“入方向规则”页签下,单击“添加规则”,放通9011端口、源地址为“198.19.128.0/20”的网络流量。 c. 单击“验证并保存DMS配置信息”。 d. 选择数据发送topic后,单击“确定”。 数据订阅格式说明 AOM格式的指标JSON格式代码片断 package metric type MetricDatas struct { Metrics []Metrics json:"metrics" ProjectId string json:"projectid" } type Metrics struct { Metric Metric json:"metric" Values []Value json:"values" CollectTime int64 json:"collecttime" } type Metric struct { Namespace string json:"namespace" Dimensions []Dimension json:"dimensions" } type Value struct { Value interface{} json:"value" Type string json:"type" Unit string json:"unit" StatisticValues string json:"statisticvalues" MetricName string json:"metricname" } type Dimension struct { Name string json:"name" Value string json:"value" } kafka消息示例 key:, value:{"metrics":[{"metric":{"namespace":"PAAS.NODE","dimensions":[{"name":"nodeName","value":"testvsscopmaster1"},{"name":"nodeIP","value":"1.1.1.1"},{"name":"hostID","value":"75d9711147344c6cae9ef6111111111"},{"name":"nameSpace","value":"default"},{"name":"clusterId","value":"46a7bc0d1d8b11ea9b04333333333333333"},{"name":"clusterName","value":"testvss111"},{"name":"diskDevice","value":"vda"},{"name":"master","value":"true"}]},"values":[{"value":0,"type":"","unit":"Kilobytes/Second","statisticvalues":"","metricname":"diskReadRate"},{"value":30.267,"type":"","unit":"Kilobytes/Second","statisticvalues":"","metricname":"diskWriteRate"}],"collecttime":1597821030037}],"projectid":"111111111111111111111"} 告警数据格式说明 示例: { "events": [{ "id": "4346299651651991683", "startsat": 1597822250194, "endsat": 0, "arrivesat": 1597822250194, "timeout": 300000, "resourcegroupid": "312313123112222222222232131312131", "metadata": { "kind": "Pod", "eventseverity": "Major", "resourcetype": "service", "clusterId": "6add4ef5135811eaa5bf111111111", "eventtype": "alarm", "clusterName": "cceief4516140c96ca4a5f8d851111111", "namespace": "PAAS.NODE", "name": "test15769793809553052f5557bd7fqnfkm", "eventname": "调度失败
        来自:
        帮助文档
        应用运维管理
        用户指南
        配置管理
        数据订阅
      • 与Kafka、RabbitMQ专享版的差异
        本章节介绍了分布式消息服务RocketMQ与Kafka和RabbitMQ的差异。 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 支持。建议优先级大小设置在010之间。 延迟队列 支持 不支持 不支持 死信队列 支持 不支持 支持 消息重试 支持 不支持 不支持 消费模式 支持客户端主动拉取和服务端推送两种方式 客户端主动拉取 支持客户端主动拉取以及服务端推送两种模式 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 支持。RabbitMQ中可以采用Firehose或者rabbitmqtracing插件实现,但开启rabbitmqtracing插件会影响性能,建议只在定位问题过程中开启。 消息过滤 支持 支持 不支持,但可以自行封装。 多租户 支持 不支持 支持 多协议支持 兼容RocketMQ协议 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现,同时支持MQTT、STOMP等协议。 跨语言支持 支持多语言的客户端 采用Scala和Java编写,支持多种语言的客户端。 采用Erlang编写,支持多种语言的客户端。 流量控制 待规划 支持client和user级别,通过主动设置可将流控作用于生产者或消费者。 RabbitMQ的流控基于CreditBased算法,是内部被动触发的保护机制,作用于生产者层面。 消息顺序性 单队列(queue)内有序 支持单分区(partition)级别的顺序性。 不支持。需要单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能整体配合,才能实现消息有序。 安全机制 支持SSL认证 支持SSL、SASL身份认证和读写权限控制。 与Kafka相似 事务性消息 支持 支持 支持
        来自:
        帮助文档
        分布式消息服务RocketMQ
        产品简介
        与Kafka、RabbitMQ专享版的差异
      • 性能指标
        类型 指标 描述 主要评价指标 整体性能 平均响应时间,该值越小,则响应时间越短。 主要评价指标 服务可用性 访问成功率,该值越高,则可靠性越强。 网络指标 DNS解析时间 通过域名解析服务(DNS),将指定的域名解析成IP地址的消耗时间。 网络指标 TCP建连时间 浏览器或客户端和WEB服务器建立TCP/IP连接的消耗时间。 网络指标 SSL握手时间(按需) 浏览器或客户端和WEB服务器建立安全套接层(SSL)连接的消耗时间。 网络指标 首包时间 浏览器或客户端发送HTTP请求结束开始,到收到WEB服务器返回的第一个数据包的消耗时间。 网络指标 内容下载时间 监测一个页面时,从页面角度看,浏览器或客户端接收WEB服务器返回第一个数据包,到所有内容传输完成的时间。 CDN平台指标 回源率 回源率分为回源请求数比例及回源流量比例两种。 1. 回源请求数比例:指CDN节点上没有缓存、缓存过期和不可缓存的请求占全部请求记录的比例。 注意 对于开启分片回源功能的域名,因为CDN回源做了分片,而用户访问CDN没有分片,可能会出现CDN节点回源请求数远大于用户访问CDN的请求数的情况。这种情况下回源请求率的数据将没有参考意义。 2. 回源流量比例:回源流量是CDN节点回源请求内容时产生的流量。回源流量比回源流量/用户请求访问的流量,比值越低,性能越好。 CDN平台指标 缓存命中率 缓存命中率包括流量命中率和请求命中率。CDN缓存命中率低,会导致源站压力大,静态内容访问效率低。 统计方式: 流量命中率 1 回源流量/流量(5分钟粒度)。 请求命中率 1 回源请求数/请求数(5分钟粒度)。
        来自:
        帮助文档
        CDN加速
        产品简介
        性能指标
      • 与Kafka、RocketMQ的差异
        本文主要介绍分布式消息服务RabbitMQ与Kafka、RocketMQ的差异。 分布式消息服务RabbitMQ与Kafka、RocketMQ的差异,如下表。 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 支持。建议优先级大小设置在010之间。 延迟队列 支持 不支持 不支持 死信队列 支持 不支持 支持 消息重试 支持 不支持 不支持 消费模式 支持客户端主动拉取和服务端推送两种方式 客户端主动拉取 支持客户端主动拉取以及服务端推送两种模式 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 支持。RabbitMQ中可以采用Firehose或者rabbitmqtracing插件实现,但开启rabbitmqtracing插件会影响性能,建议只在定位问题过程中开启。 消息过滤 支持 支持 不支持,但可以自行封装。 多租户 支持 不支持 支持 多协议支持 兼容RocketMQ协议 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现,同时支持MQTT、STOMP等协议。 跨语言支持 支持多语言的客户端 采用Scala和Java编写,支持多种语言的客户端。 采用Erlang编写,支持多种语言的客户端。 流量控制 待规划 支持client和user级别,通过主动设置可将流控作用于生产者或消费者。 RabbitMQ的流控基于CreditBased算法,是内部被动触发的保护机制,作用于生产者层面。 消息顺序性 单队列(queue)内有序 支持单分区(partition)级别的顺序性。 不支持。需要单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能整体配合,才能实现消息有序。 安全机制 支持SSL认证 支持SSL、SASL身份认证和读写权限控制。 与Kafka相似 事务性消息 支持 支持 支持
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        与Kafka、RocketMQ的差异
      • 作业开发类
        解决方法 运行Spark作业前,调整hbase.client.scanner.timeout.period参数,(例如从60秒调高到120秒)。 登录Manage界面,选择“集群 > 服务 > HBase > 配置 > 全部配置”,搜索参数“hbase.client.scanner.timeout.period”,并修改参数值为“120000”(参数单位为毫秒)。 DataArts Studio调度Spark作业偶现失败如何处理? 问题现象 DataArts Studio调度spark作业,偶现失败,重跑失败,作业报错: Caused by: org.apache.spark.SparkException: Application application16195119263962586346 finished with failed status 解决方法 使用root用户登录Spark客户端节点,调高“sparkdefaults.conf”文件中“spark.driver.memory”参数值。 Flink任务运行失败,报错“java.lang.NoSuchFieldError: SECURITYSSLENCRYPTENABLED”如何处理? 问题现象 Flink任务运行失败,报错: Caused by: java.lang.NoSuchFieldError: SECURITYSSLENCRYPTENABLED 解决方法 客户代码里面打包的第三方依赖包和集群包冲突,提交到MRS集群运行失败,需修改相关的依赖包,并将pom文件中的开源版本的Hadoop包和Flink包的作用域设置为provide,添加完成后重新打包运行任务。 提交的Yarn作业在界面上查看不到如何处理? 问题现象 创建完Yarn作业后,以admin用户登录Manager界面查看不到运行的作业。 解决方法 admin用户为集群管理页面用户,检查是否有supergroup权限,通常需要使用具有supergroup权限的用户才可以查看作业。 使用提交作业的用户登录查看Yarn上的作业,不使用admin管理帐号查看。 如何修改现有集群的HDFS fs.defaultFS? 当前不建议在服务端修改或者新增集群内HDFS NameSpace(fs.defaultFS)。 如果只是为了客户端更好的识别,则一般可以通过修改客户端内“coresite.xml”,“hdfssite.xml”两个文件的相关参数进行实现。 提交Flink任务时launcherjob被Yarn终止如何处理?
        来自:
        帮助文档
        翼MapReduce
        常见问题
        操作类
        作业开发类
      • NAT网关与其他服务的关系
        本节主要介绍NAT产品与其它服务的关系 相关服务 交互功能 云专线 通过云专线接入VPC的本地服务器,可以通过公网NAT网关访问公网或为公网提供服务。 虚拟专用网络 通过VPN可以在远端用户和VPC之间建立一条安全加密的公网通信隧道。为通过公网NAT网关访问公网提供了更加安全的访问。 弹性云主机 公网NAT网关可以为弹性云主机提供访问公网或者为公网提供服务的能力。 虚拟私有云 虚拟私有云内的弹性云主机与Internet互连。 弹性IP 实现VPC中的云主机以公网NAT网关的形式共享弹性公网IP访问公网或为公网提供服务。 云监控 查看NAT网关的监控数据,还可以获取可视化监控图表。
        来自:
        帮助文档
        NAT网关
        产品简介
        NAT网关与其他服务的关系
      • 创建专属云Kafka
        前提条件: 1、提前开通专属云(计算独享型),并存留足够未分配的计算资源; 2、提前开通VPC、安全组等网络侧资源; 操作步骤: 步骤一: 登录天翼云账号,切换至专属云(计算独享型)节点; 如已购买了专属云(计算独享型),在控制台的右上角节点区域,可见有独立专属云“dec”标识的节点,选择用户需要进行Kafka购买的专属云节点进入。 图 带专属云“dec”标识的节点如下: 步骤二: 进入专属云节点后,在控制台中的产品列表中选择“分布式消息服务”,进入到服务控制台,在左侧菜单栏选择“Kafka专享版”,进入Kafka专享版实例列表页面。 图 专享版Kafka订购入口 步骤三: 点击“购买Kafka实例”,进入订购页面,按提示进行相关规格选择与配置。 1)计费方式为“包年包月”; 2)可用区:客户可自行根据资源池多AZ支持情况选择可用区进行创建。 说明:专享版Kafka的实例为集群模式,支持选择1个或者3个及以上可用区。不支持选择2个可用区,选择时需要注意;该可用区选择后不支持更换。 3)实例名称及企业项目:按命名规范自定义,也可以默认系统分配的名称; 4)Kafka版本:当前支持2种版本选择,2.3.0和1.1.0,推荐时间2.3.0版本; 5)CPU架构:当前仅支持“x86计算”,保持默认值即可; 图 购买Kafka订购页 6)选择具体的队列规格类型,在规格的描述与说明中会有该队列的底层资源类型、代理数量、分区上限、消费组数量,供客户与业务系统需求匹配规格。 说明:当前订购规格后,暂不支持规格变更,请在订购时做好业务整体需求评估。 7)选择存储空间:此处有2种存储可以选择,分别是公有云的云硬盘、专属分布式存储。存储的类型均支持高IO、超高IO。 说明:1、选择云硬盘时,具体价格以公有云的云硬盘价格为准; 2、选择转属分布式存储时,需提前已购买了专属云(存储独享型),在“可用存储”右侧的“存储池”列表中进行选择。 3、根据实际需要选择存储Kafka数据的总磁盘大小。 创建实例时会进行磁盘格式化,磁盘格式化会导致实际可用磁盘为总磁盘的93%~95%。 • 基准带宽为100MB/s时,存储空间取值范围:600GB ~ 90000GB。 • 基准带宽为300MB/s时,存储空间取值范围:1200GB ~ 90000GB。 • 基准带宽为600MB/s时,存储空间取值范围:2400GB ~ 90000GB。 • 基准带宽为1200MB/s时,存储空间取值范围:4800GB ~ 90000GB 图 订购页界面 图 选择云硬盘时存储类别 图 选择专属分布式存储时,需要提前购买专属存储,并在存储池列表中选择 8)选择私有云、安全组; 虚拟私有云可以为您的Kafka专享实例构建隔离的、能自主配置和管理的虚拟网络环境。 虚拟私有云和子网在Kafka专享版实例创建完成后,不支持修改。 安全组是一组对弹性云服务器的访问规则的集合,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。 可以单击右侧的“管理安全组”,跳转到网络控制台的“安全组”页面,查看或创建安全组。 9)设置Kafka Manager的用户名、密码; Kafka Manager是开源的kafka集群管理工具,实例创建成功后,实例详情页面会展示Kafka Manager登录地址,您可登录Kafka Manager页面,查看Kafka集群的监控、代理等信息。 10)选择订购时长; 11)点击“立即购买”之前,还可进入“更多配置”也进行高级配置。 1、SASLSSL开关,开启后则对数据进行加密传输,但会对性能造成下降; 客户端连接Kafka专享版实例时,是否开启SSL认证。开启Kafka SASLSSL,则数据加密传输,安全性更高。 创建实例后,Kafka SASLSSL开关不支持修改,请慎重选择。如果创建后需要修改,需要重新创建实例。 开启Kafka SASLSSL后,您需要设置连接Kafka专享版实例的用户名和密码。 2、自动创建Topic,开关开启后,Topic将根据配置API接口自动创建。 选择开启“Kafka自动创建Topic”,表示生产或消费一个未创建的Topic时,会自动创建一个包含3个分区和3个副本的Topic。 12)点击“立即购买”,进入支付前规格确认界面。显示详细kafka 实例信息,价格。 13)确认实例信息无误且阅读并同意服务协议后,点击“去支付”进入购买支付环节,完成付款后则开启Kafka创建。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 如果创建实例失败,在信息栏的“创建失败任务”中查看创建失败的实例。请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。 说明: 创建失败的实例,不会占用其他资源。
        来自:
        帮助文档
        专属云分布式消息服务Kafka
        快速入门
        创建专属云Kafka
      • 使用IAM授权的云服务
        云服务名称 区域 支持 IAM 支持企业项目 支持 IAM 支持企业项目 系统策略 内网DNS 全局 是 是 是 是 有 弹性负载均衡 全局 是 是 是 是 有 虚拟私有云 资源池 是 是 是 是 有 VPC终端节点 全局 是 是 是 是 有 NAT网关 资源池 是 是 是 是 有 共享带宽 资源池 是 是 是 是 有 弹性IP 资源池 是 是 是 是 有 对等连接 全局 是 是 是 是 有 云间高速(标准版) 全局 是 否 否 否 有 云专线 全局 是 是 否 否 有 VPN连接 资源池 是 是 是 是 有 天翼云SDWAN 全局 是 是 否 否 有
        来自:
        帮助文档
        统一身份认证(一类节点)
        产品概述
        使用IAM授权的云服务
      • 迁移前准备工作
        本章介绍迁移前需要做哪些准备工作。 已注册天翼云账号,并开通天翼云,登陆并完成实名认证。 注册天翼云账号并完成实名认证。 账号充值,且账号余额不少于100元。 建议您目的端账户余额不少于100元,避免迁移过程中欠费,导致迁移失败。主机迁移服务本身免费,但迁移过程中会创建按量付费资源并产生少量费用。详情参考100元余额说明。 已获取帐号迁移权限。 如果使用帐号登录,默认拥有迁移权限,可无需配置迁移权限;如果使用IAM用户登录,请创建用户组并授权进行授权。详情请参考创建用户并授权使用SMS。 已获取目的端帐号的AK/SK。 迁移时使用AK/SK进行鉴权认证,获取目的端帐号的AK/SK操作请参见如何获取AK/SK?(账号)或如何获取AK/SK?。 操作系统要求。 主机迁移服务支持迁移的源端服务器操作系统列表请参见Windows兼容性列表、Linux兼容性列表。 迁移网络要求。 1. 源端能连接到天翼云API Gateway(端口:443)。源端出网方向端口,建议全部开放。 2. 使用IPv6进行迁移时,要求源端支持IPv4/IPv6双栈网络。 3. 源端能连接到目的端。 1. 若使用弹性公网IP连接,目的端需要提前购买和配置正确的EIP。 2. 若使用专线或者VPN,需提前购买和配置正确的专线或VPN。 4. 目的端服务器所属安全组需要开放端口: 1. Windows系统需要开放TCP的8899端口、8900端口和22端口。 2. Linux系统文件级迁移开放22端口。 3. 以上端口,建议只对源端服务器开放。 4. 防火墙开放端口与操作系统开放端口保持一致。
        来自:
        帮助文档
        主机迁移服务SMS
        快速入门
        迁移前准备工作
      • 使用IPv6进行主机迁移
        本章介绍如何使用IPv6进行数据迁移。 迁移前准备 已注册天翼云账号,并开通天翼云,登陆并完成实名认证。 注册天翼云账号并完成实名认证。 账号充值,且账号余额不少于100元。 建议您目的端账户余额不少于100元,避免迁移过程中欠费,导致迁移失败。主机迁移服务本身免费,但迁移过程中会创建按量付费资源并产生少量费用。详情参考100元余额说明。 已获取帐号迁移权限。 如果使用帐号登录,默认拥有迁移权限,可无需配置迁移权限;如果使用IAM用户登录,请创建用户组并授权进行授权。详情请参考创建用户并授权使用SMS。 已获取目的端帐号的AK/SK。 迁移时使用AK/SK进行鉴权认证,获取目的端帐号的AK/SK操作请参见如何获取AK/SK?(账号)或如何获取AK/SK?。 操作系统要求。 主机迁移服务支持迁移的源端服务器操作系统列表请参见Windows兼容性列表、Linux兼容性列表。 迁移网络要求。 1. 源端能连接到天翼云API Gateway(端口:443)。源端出网方向端口,建议全部开放。 2. 使用IPv6进行迁移时,要求源端支持IPv4/IPv6双栈网络。 3. 源端能连接到目的端。 1. 若使用弹性公网IP连接,目的端需要提前购买和配置正确的EIP。 2. 若使用专线或者VPN,需提前购买和配置正确的专线或VPN。 4. 目的端服务器所属安全组需要开放端口: 1. Windows系统需要开放TCP的8899端口、8900端口和22端口。 2. Linux系统文件级迁移开放22端口。 3. 以上端口,建议只对源端服务器开放。 4. 防火墙开放端口与操作系统开放端口保持一致。
        来自:
        帮助文档
        主机迁移服务SMS
        最佳实践
        使用IPv6进行主机迁移
      • 迁移可用区
        关系数据库MySQL版迁移可用区功能支持将实例的部分或全部节点迁移至同一地域内的其他可用区。对于主备实例,将节点设置在不同的可用区可以使实例获得跨机房容灾能力。本文介绍关系数据库MySQL版的迁移可用区功能。 注意 仅西南1、华南2、华东1、华北2II类型资源池支持该功能,I类型资源池不支持该功能,具体支持情况以控制台页面展示为准。更多资源池信息,请参见功能概览。 前提条件 实例状态为运行中。 实例内核小版本为最新,如实例内核小版本非最新,请先升级数据库内核小版本。 约束限制 只读实例和代理节点不支持迁移可用区。 开启透明加密的实例不支持迁移可用区。 实例所在资源池需要有多个可用区才支持迁移可用区功能,单可用区的不支持迁移。 开启SSL数据加密的实例不支持迁移可用区,如需迁移,请先关闭SSL。 影响 迁移可用区过程中可能会出现数次闪断,请确保应用具有自动重连机制。 迁移可用区任务完成时间和用户设置的迁移策略与用户数据量相关。在发起迁移可用区请求后到迁移可用区结束过程中您将不可以进行重启、退订等操作。 如果迁移的目标可用区资源不足可能导致迁移可用区失败。 迁移可用区之后,将触发一次全量备份,以保证高频备份的增量备份功能正常。 迁移可用区后,数据库实例的节点信息发生变更,若实例已开启数据库代理,会回到系统配置,可以在数据库代理页面重新设置节点权重,以刷新后端的节点信息。
        来自:
        帮助文档
        关系数据库MySQL版
        用户指南
        实例管理
        迁移可用区
      • 配置常见关系数据库连接
        参数名 说明 取值样例 名称 连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。 mysqllink 数据库服务器 配置为要连接的数据库的IP地址或域名。 单击输入框后的“选择”,可获取用户的DWS、RDS等实例列表。 192.168.0.1 端口 配置为要连接的数据库的端口。 不同的数据库端口不同,请根据具体情况配置。例如: SQLServer默认端口:1433 PostgreSQL默认端口:5432 数据库名称 配置为要连接的数据库名称。 dbname 用户名 待连接数据库的用户。该数据库用户需要有数据表的读写权限,以及对元数据的读取权限。 cdm 密码 用户名密码。 使用Agent 是否选择通过Agent从源端提取数据。 是 Agent 单击“选择”,选择3.3.5.3管理Agent中已创建的Agent。 驱动版本 不同类型的关系数据库,需要适配不同的驱动。 一次请求行数 可选参数,单击“显示高级属性”后显示。 指定每次请求获取的行数,根据数据源端和作业数据规模的大小配置该参数。如果配置过大或过小,可能影响作业的时长。 1000 SSL加密 可选参数,支持通过SSL加密方式连接数据库,暂不支持自建的数据库。 RDS上的PostgreSQL数据库服务做了一些安全增强,在创建RDS上的PostgreSQL的连接时,该参数需要配置为“是”。 是 连接属性 可选参数,单击“添加”可增加多个指定数据源的JDBC连接器的属性,参考对应数据库的JDBC连接器说明文档进行配置。 说明 CDM作业默认打开了useCursorFetch开关,即JDBC连接器与关系型数据库的通信使用二进制协议。 sslmoderequire 引用符号 可选参数,连接引用表名或列名时的分隔符号,参考对应数据库的产品文档进行配置。 '
        来自:
        帮助文档
        数据治理中心 DataArts Studio
        用户指南
        数据集成
        管理连接
        配置常见关系数据库连接
      • 购买企业交换机
        本文帮助您快速熟悉购买企业交换机的操作方法。 前提条件 使用企业交换机之前,需要规划云下和云上所需的资源,资源规划请参考企业交换机工作原理。 企业交换机建立二层通信网络时,依赖云下IDC和云上VPC之间的三层网络,请提前使用云专线或者VPN,建立本端隧道子网和远端隧道子网之间的三层网络通信,具体请参见步骤一:使用云专线VPN连接三层网络。 约束与限制 企业交换机建立二层网络通信时,需要和IDC侧建立VXLAN隧道,IDC侧交换机必须支持VXLAN功能。 企业交换机会占用本端隧道子网的三个IP地址,用来做企业交换机实例主备节点的负载均衡,请您规划隧道子网的时候预留足够的IP地址。 操作步骤 1. 登录管理控制台。 2. 在系统首页,选择“网络>企业交换机”。 进入企业交换机页面。 3. 在界面右上角,单击“购买”。 进入企业交换机购买页面。 4. 根据界面提示,配置企业交换机的基本信息,配置参数请参见下表。 表参数说明 参数 参数说明 取值样例 区域 必选参数。 不同区域的云服务产品之间内网互不相通,请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 苏州 主可用区 必选参数。 企业交换机实例部署采用主备模式,此处选择主节点所在的可用区。 主可用区是当前承载流量的可用区,推荐与需要通信的云服务器部署在同一个可用区,从而实现更优访问性能。 可用区1 备可用区 必选参数。 企业交换机实例部署采用主备模式,此处选择备节点所在的可用区。 备可用区用于容灾备份,建议与主可用区不同。 可用区2 规格 必选参数。 当前支持的企业交换机规格如下: 小型 最大带宽:3 Gbit/s 最大发包数:500000 pps 连接子网数:1 中型 最大带宽:5 Gbit/s 最大发包数:1000000 pps 连接子网数:3 大型 最大带宽:10 Gbit/s 最大发包数:2000000 pps 连接子网数:6 注意 企业交换机创建完成后,不支持修改规格。 不同区域支持的企业交换机规格不同,实际以控制台显示为准。 大型 虚拟私有云 必选参数。 企业交换机所属VPC。 vpc01 隧道子网 必选参数。 企业交换机所属VPC的子网,为本端隧道子网,该子网需要与远端隧道子网建立三层网络通信。 隧道子网基于云专线或者VPN实现三层网络通信,包括本端隧道子网和远端隧道子网。企业交换机需要基于隧道子网之间的三层网络,为需要互通的云上和云下子网提供二层连接通道。 subnet01 本端隧道IP 必选参数。 此处为本端隧道IP,即云上VPC侧的隧道IP,当前支持自动分配或手动分配IP地址。 企业交换机需要和云下IDC建立VXLAN隧道实现二层网络通信,VXLAN隧道两端各需要一个隧道IP,包括本端隧道IP和远端隧道IP,两个IP地址不能冲突。 自动分配 名称 必选参数。 输入企业交换机的名称。要求如下:长度范围为1~64位。名称由中文、英文字母、数字、下划线()、中划线()、点(.)组成。 esw01 描述 可选参数。 您可以根据需要在文本框中输入对该企业交换机的描述信息。 5. 单击“立即购买”。 6. 在产品配置信息确认页面,再次核对企业交换机信息,确认无误后,单击“提交”,开始创建企业交换机。 企业交换机的创建过程一般需要3~6分钟,当企业交换机的状态为“运行中”时,表示创建成功。
        来自:
        帮助文档
        企业交换机
        用户指南
        企业交换机
        购买企业交换机
      • 自定义VLAN网络
        本章节主要介绍天翼云物理机的自定义VLAN网络。 未被系统默认使用的以太网卡(10GE,在物理机规格中定义)可用于自定义VLAN网络,物理上采用QinQ技术实现用户的网络隔离,提供额外的物理平面和网络带宽。用户能够自由划分所需的VLAN子网来分隔流量,适用于Oracle RAC、SAP HANA和VMware等场景。自定义VLAN网络的网卡是成对出现的,用户可以通过配置bond实现高可用。自定义VLAN网络当前不支持跨可用分区互通。 说明 QinQ:一种基于802.1Q封装的二层隧道协议,它将用户私网VLAN TAG封装在公网VLAN TAG中,报文带着两层TAG穿越服务商的骨干网络,从而为用户提供二层VPN隧道。
        来自:
        帮助文档
        物理机 DPS
        产品简介
        网络
        自定义VLAN网络
      • 天翼云AOne应用权限申请与使用情况说明
        权限名称 权限说明 具体场景或目的 NSCameraUsageDescription 摄像头访问权限 IM发送消息、个人信息上传头像、AI问答、视频会议、获取摄像头拍照发送图片附件。 NSPhotoLibraryUsageDescription 图片访问权限 IM发送消息、个人信息上传头像、AI问答、更换会议虚拟背景、获取相册发送图片附件。 NSMicrophoneUsageDescription 麦克风访问权限 AI问答、会议语音通话。 com.apple.developer.networking.networkextension 网络扩展权限(VPN、内容拦截等)权限 零信任/海外加速创建隧道的时候。 NSFaceIDUsageDescription 面容、指纹生物识别访问权限 用于登录的时候,使用生物识别的方式认证。 AppGroups 同一个开发者账号下的多个应用、扩展数据共享 允许同一个开发者账号下的多个应用、扩展(Extension)和主应用之间共享数据。 网络权限 授权APP访问网络 App需要发起网络请求的地方。
        来自:
        帮助文档
        边缘安全加速平台
        相关协议
        天翼云AOne应用权限申请与使用情况说明
      • 购买
        前提条件: 1、提前开通专属云(计算独享型),并存留足够未分配的计算资源; 2、提前开通VPC、安全组等网络侧资源; 购买操作步骤: 步骤一:登录天翼云账号,切换至专属云(计算独享型)节点; 如已购买了专属云(计算独享型),在控制台的右上角节点区域,可见有独立专属云“dec”标识的节点,选择用户需要进行Kafka购买的专属云节点进入。 图 带专属云“dec”标识的节点如下: 步骤二:进入专属云节点后,在控制台中的产品列表中选择“分布式消息服务”,进入到服务控制台,在左侧菜单栏选择“Kafka专享版”,进入Kafka专享版实例列表页面。 图 专享版Kafka订购入口 步骤三:点击“购买Kafka实例”,进入订购页面,按提示进行相关规格选择与配置。 1)计费方式为“包年包月”; 2)可用区:客户可自行根据资源池多AZ支持情况选择可用区进行创建。 说明:专享版Kafka的实例为集群模式,支持选择1个或者3个及以上可用区。不支持选择2个可用区,选择时需要注意;该可用区选择后不支持更换。 3)实例名称及企业项目:按命名规范自定义,也可以默认系统分配的名称; 4)Kafka版本:当前支持2种版本选择,2.3.0和1.1.0,推荐时间2.3.0版本; 5)CPU架构:当前仅支持“x86计算”,保持默认值即可; 图 购买Kafka订购页 6)选择具体的队列规格类型,在规格的描述与说明中会有该队列的底层资源类型、代理数量、分区上限、消费组数量,供客户与业务系统需求匹配规格。 说明:当前订购规格后,暂不支持规格变更,请在订购时做好业务整体需求评估。 7)选择存储空间:此处有2种存储可以选择,分别是公有云的云硬盘、专属分布式存储。存储的类型均支持高IO、超高IO。 说明:1、选择云硬盘时,具体价格以公有云的云硬盘价格为准; 2、选择转属分布式存储时,需提前已购买了专属云(存储独享型),在“可用存储”右侧的“存储池”列表中进行选择。 3、根据实际需要选择存储Kafka数据的总磁盘大小。 创建实例时会进行磁盘格式化,磁盘格式化会导致实际可用磁盘为总磁盘的93%~95%。 • 基准带宽为100MB/s时,存储空间取值范围:600GB ~ 90000GB。 • 基准带宽为300MB/s时,存储空间取值范围:1200GB ~ 90000GB。 • 基准带宽为600MB/s时,存储空间取值范围:2400GB ~ 90000GB。 • 基准带宽为1200MB/s时,存储空间取值范围:4800GB ~ 90000GB 图 订购页界面 图 选择云硬盘时存储类别 图 选择专属分布式存储时,需要提前购买专属存储,并在存储池列表中选择 8)选择私有云、安全组; 虚拟私有云可以为您的Kafka专享实例构建隔离的、能自主配置和管理的虚拟网络环境。 虚拟私有云和子网在Kafka专享版实例创建完成后,不支持修改。 安全组是一组对弹性云服务器的访问规则的集合,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。 可以单击右侧的“管理安全组”,跳转到网络控制台的“安全组”页面,查看或创建安全组。 9)设置Kafka Manager的用户名、密码; Kafka Manager是开源的kafka集群管理工具,实例创建成功后,实例详情页面会展示Kafka Manager登录地址,您可登录Kafka Manager页面,查看Kafka集群的监控、代理等信息。 10)选择订购时长; 11)点击“立即购买”之前,还可进入“更多配置”也进行高级配置。 1、SASLSSL开关,开启后则对数据进行加密传输,但会对性能造成下降; 客户端连接Kafka专享版实例时,是否开启SSL认证。开启Kafka SASLSSL,则数据加密传输,安全性更高。 创建实例后,Kafka SASLSSL开关不支持修改,请慎重选择。如果创建后需要修改,需要重新创建实例。 开启Kafka SASLSSL后,您需要设置连接Kafka专享版实例的用户名和密码。 2、自动创建Topic,开关开启后,Topic将根据配置API接口自动创建。 选择开启“Kafka自动创建Topic”,表示生产或消费一个未创建的Topic时,会自动创建一个包含3个分区和3个副本的Topic。 12)点击“立即购买”,进入支付前规格确认界面。显示详细kafka 实例信息,价格。 13)确认实例信息无误且阅读并同意服务协议后,点击“去支付”进入购买支付环节,完成付款后则开启Kafka创建。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 • 当实例的“状态”变为“运行中”时,说明实例创建成功。 • 如果创建实例失败,在信息栏的“创建失败任务”中查看创建失败的实例。请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。 说明: 创建失败的实例,不会占用其他资源。
        来自:
        帮助文档
        专属云分布式消息服务Kafka
        计费说明
        购买
      • 权限管理
        操作 GeminiDB FullAccess GeminiDB ReadOnlyAccess 创建实例 √ x 查询实例列表 √ √ 查询实例详情 √ √ 查询任务列表 √ √ 删除实例 √ x 重启实例 √ x 重置密码 √ x 变更实例安全组 √ x 修改数据库端口 √ x 绑定/解绑公网IP √ x 磁盘扩容 √ x 规格变更 √ x 节点扩容 √ x 节点缩容 √ x 修改备份策略 √ x 重命名实例 √ x 创建手动备份 √ x 查询备份列表 √ √ 恢复到新实例 √ x 删除备份 √ x 创建参数模板 √ x 查询参数模板列表 √ √ 修改参数模板 √ x 删除参数模板 √ x 查询企业项目配额管理列表 √ √ 修改企业项目配额 √ x 切换SSL开关 √ x 停止备份 √ x
        来自:
        帮助文档
        云数据库GeminiDB
        产品简介
        权限管理
      • 快速构建FTP站点(Windows)
        本文介绍了如何使用天翼云弹性云主机的Windows实例搭建FTP站点。该指导具体操作以Windows 2012 Standard R2 64位中文版为例。 Windows实例搭建FTP站点具体操作步骤 1. 添加IIS的角色和功能。 2. 创建FTP服务用户名及密码。 3. 设置共享文件权限。 4. 配置FTP站点。 5. 配置FTP防火墙。 6. 配置安全组规则及防火墙策略。 7. 客户端进行连接测试。 示例环境 实例类型:s3.large.2 2核 4G 通用型云主机 所在区域:山西 系统盘:40GB 操作系统:Windows 2012 Standard R2 64位中文版 公网弹性IP带宽:1Mbps 操作步骤 1. 添加IIS的角色和功能。 1. 登录弹性云主机。 2. 选择“开始 > 服务器管理器”。 3. 单击“添加角色和功能”。 4. 在弹出的“开始之前”对话框中,单击“下一步”。 5. 选择“基于角色或基于功能的安装”,单击“下一步”。 6. 选择需要部署FTP的服务器,单击“下一步”。 7. 选择“Web服务器(IIS)”,并在弹出的对话框中单击“添加功能”,然后单击“下一步”。 8. 连续单击“下一步”,到“角色服务”页面。 9. 选择“FTP服务器”以及“IIS管理控制台”,单击“下一步”。 10. 单击“安装”,开始部署服务角色。 11. 安装完成后,单击“关闭”。 1. 添加IIS的角色和功能 2. 添加IIS的角色和功能 3. 添加IIS的角色和功能 4. 添加IIS的角色和功能 2. 创建FTP服务用户名及密码。 1. 在“服务器管理器”中,选择“仪表板 > 工具 > 计算机管理”。 2. 选择“系统工具 > 本地用户和组 >用户”,在右侧空白处右击,并选择“新用户”。 3. 设置“用户名”和“密码”,此处用户名以“ftp”为例。 3. 设置共享文件权限。 需要在FTP站点为共享给用户的文件夹设置访问及修改等权限。 1. 在服务器上创建一个供FTP使用的文件夹,选择文件夹,并单击右键选择“属性”。此处以“share”文件夹为例。 2. 在“安全”页签,选择 “Everyone”,单击“编辑”。如果没有“Everyone”用户可以直接选择,需要先进行添加。 3. 选择“Everyone”,然后根据需要,选择“Everyone”的权限,并单击“确定”。此处以允许所有权限为例。 4. 配置FTP站点。 1. 在“服务器管理器”中,选择“仪表板 > 工具 >Internet Information Services (IIS)管理器 ”。 2. 选择“网站”并单击右键,然后选择“添加FTP站点”。 3. 在弹出的窗口中,填写FTP站点名称及共享文件夹的物理路径,然后单击“下一步”。此处站点名称以“ftp”为例。 4. 输入该弹性云主机的公网IP地址以及端口号,并设置SSL,单击“下一步”。 端口号默认为21,也可自行设置。 SSL根据需要进行设置。 无: 不需要SSL加密。 允许:允许FTP服务器与客户端的非SSL和SSL连接。 需要:需要对FTP服务器和客户端之间的通信进行SSL加密。 5. 设置身份认证和授权信息,并单击“完成”。 身份认证 匿名:允许任何仅提供用户名 “anonymous” 或 “ftp” 的用户访问内容。 基本:需要用户提供有效用户名和密码才能访问内容。但是基本身份验证通过网络传输密码时不加密,因此建议在确认客户端和FTP服务器之间的网络连接安全时使用此身份验证方法。 授权 允许访问 所有用户:所有用户均可访问相应内容。 匿名用户:匿名用户可访问相应内容。 指定角色或用户组:仅指定的角色或用户组的成员才能访问相应内容。如果选择此项,需要在下面输入框中输入指定的角色或用户组。 指定用户:仅指定的用户才能访问相应内容。如果选择此项,需要在下面输入框中输入指定的用户。 权限:选择经过授权的用户的“读取”和“写入”权限。 6. 绑定弹性云主机的公网IP。 选择“网站”,选中创建的FTP站点,单击“绑定”;在弹出的“网站绑定”窗口单击“添加”,然后在弹出的窗口中添加弹性云主机的私网IP地址,并单击“确定。 5. 配置FTP防火墙支持。 如果需要使用FTP服务器的被动模式,则需要配置FTP防火墙支持。 如果天翼云上的服务器需要通过公网IP地址访问天翼云上的实例搭建的FTP服务器时,需要配置FTP服务器的被动模式。 双击“FTP防火墙支持”,打开FTP防火墙支持的配置界面。 配置相关参数,数据通道端口范围:指定用于被动连接的端口范围。可指定的有效端口范围为102565535,请根据实际需求进行设置,此处配置50006000,防火墙的外部IP地址:输入该弹性云主机的公网IP地址,并单击“应用”。 重启云主机使防火墙配置生效。 6. 配置安全组规则及防火墙策略。 搭建好FTP站点后,需要在弹性云主机安全组的入方向添加一条放行FTP端口的规则,如果配置了“FTP防火墙支持”,需要在安全组中同时放行FTP站点使用的端口和FTP防火墙使用的数据通道端口。 服务器防火墙默认放行TCP的21端口用于FTP服务。如果选用其他端口,需要在防火墙中添加一条放行此端口的入站规则。 FTP模式 方向 协议 端口 源地址 主动模式 入方向 TCP 20端口和21端口 0.0.0.0/0 被动模式 入方向 TCP 21端口和1024~65535间的端口(根据上文配置,此处50006000) 0.0.0.0/0 7. 客户端进行连接测试。 打开客户端的计算机,在路径栏输入“ftp://FTP服务器IP 地址 :FTP 端口 ”(如果不填端口则默认访问21端口)。弹出输入用户名和密码的对话框表示配置成功,正确的输入用户名和密码后,即可对FTP文件进行相应权限的操作,share文件夹下创建工作事项.txt文件,在本地访问共享文件夹可以查看并下载。
        来自:
        帮助文档
        弹性云主机 ECS
        最佳实践
        搭建网站/应用最佳实践
        快速构建FTP站点(Windows)
      • 文档数据库服务开发规范
        本页介绍了文档数据库服务开发相关规范。 数据库连接 在使用文档数据库服务进行应用程序开发时,为了保证数据库连接的安全性和可靠性,需要遵守一些数据库连接规范。以下是一些常用的文档数据库服务连接规范: 使用URI进行连接:文档数据库服务支持使用URI(Uniform Resource Identifier)格式的连接字符串进行连接,这种格式可以简化连接参数的设置,例如: mongodb://username:password@hostname:port/database 其中,username 和 password 是登录数据库的用户名和密码,hostname 和 port 是文档数据库服务的服务器的地址和端口号,database 是要连接的数据库名称。 使用连接池:为了提高连接的效率和性能,可以使用连接池技术对文档数据库服务连接进行管理。连接池可以缓存连接对象,并在需要时重复利用,避免频繁创建和销毁连接对象。客户端连接数据库的时候,要计算业务一共有多少个客户端,每个客户端配置的连接池大小是多少,总的连接数不要超过当前实例能承受的最大连接数的80%。 不要使用过期的连接:文档数据库服务连接对象具有一定的生命周期,在使用完毕后应该及时关闭连接,避免占用过多的系统资源。同时,不要使用已经过期的连接对象,应该重新创建一个新的连接对象进行操作。 设置合适的超时时间:在连接文档数据库服务时,应该设置合适的超时时间,避免连接过程中出现异常或超时而导致应用程序出现问题。可以设置连接超时、读取超时、写入超时等不同类型的超时时间。 避免使用过多的连接:在应用程序中,应该避免使用过多的文档数据库服务连接,以免占用过多的系统资源。可以通过使用连接池、设置连接超时等方式来优化连接的使用。 使用SSL/TLS进行加密:为了提高数据库连接的安全性,可以使用SSL/TLS等加密协议对文档数据库服务连接进行加密传输,避免数据被窃取或篡改。
        来自:
        帮助文档
        文档数据库服务
        开发指南
        文档数据库服务使用规范
        文档数据库服务开发规范
      • 产品优势
        标准快速 全栈云服务集成一体 , 多种增值能力可选,大幅减少建设时间。 国产化和x86多种配置可选,满足客户不同需求场景。 标准产品规格及售卖模式,快速匹配客户需求。 到货后110个工作日即可完成产品部署交付,虚拟资源即开即用。 安全稳定 采用自研云底座,历经大规模客户业务验证。 数据多副本(双副本或三副本)、故障HA、快照与备份等多项技术保障数据高可靠。 高效管理 内置云管平台,可视化资源开通及运营管理。 可整合多一体机集群,提供混合多资源池管理能力。 支持VPN服务,帮助客户以低成本快速构建专有企业云网。 极简运维 多维度监控、告警数据,帮助用户提前发现业务运行隐患。 属地化运维和724小时在线服务,全方位解决客户后顾之忧。
        来自:
        帮助文档
        混合云一体机
        产品简介
        产品优势
      • 通用类
        本文汇总了使用企业交换机服务时常见的通用类问题。 企业交换机支持与其他云配置二层网络通信吗? 不支持。 企业交换机当前仅支持配置天翼云与IDC侧进行二层互通。 企业交换机创建后是否可以变更规格? 企业交换机创建完成后,不支持修改规格,请根据业务需要选择合适的企业交换机。 什么是二层连接子网? 二层连接子网是云上VPC与云下IDC准备建立二层互通的子网,包括本端二层连接子网和远端二层连接子网。 什么是隧道子网? 隧道子网基于云专线或者VPN实现三层网络通信,包括本端隧道子网和远端隧道子网。企业交换机需要基于隧道子网之间的三层网络,为需要互通的云上和云下子网提供二层连接通道。
        来自:
        帮助文档
        企业交换机
        常见问题
        通用类
      • 搭建微信公众号后台——收发文本消息
        升级默认pip版本 pip是通用的Python包管理工具。提供了对Python包的查找、下载、安装、卸载功能。Python3安装成功后自带pip3,但版本比较老,建议升级到pip最新版本。同时前面安装python3提示“Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS”错误,导致pip未成功安装,所以需要重新安装pip。 1、安装openssldevel包,使用命令: yum install openssldevel y 2、执行命令: make && make install 出现如下提示说明安装pip安装成功。 3、升级pip3,使用命令: pip3 install upgrade pip 出现如下提示说明升级pip到最新版本了。 安装Web.py框架 Web.py官方教程地址: pip3 install web.py0.40.dev0 安装WinSCP 通常情况下,我们在本地Windows操作系统上编辑代码,完成后再上传至ECS上(CentOS Linux系统)。WinSCP 是一个Windows环境下使用的SSH的开源图形化SFTP客户端, 同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。 WinSCP安装链接:
        来自:
        帮助文档
        弹性云主机 ECS
        最佳实践
        搭建微信公众号后台——收发文本消息
      • 网关服务优化策略
        本章节为您介绍如何进行网关服务优化。 网关服务优化策略可以用于优化外部应用访问。 新增优化策略 1. 登录综合安全网关实例。 2. 在左侧导航栏选择“SSL网关服务 > 网关高级设置”,选择“网关服务优化策略”页签。 3. 在实例页面左上角单击“新增优化策略”。 4. 在弹出的对话框中配置相关参数。 参数 参数说明 策略名 自定义需要新增的优化策略名。 IO超时 设置网关策略的IO超时值。 压缩 选择是否开启压缩。 缓存 选择是否开启缓存。 连接复用 选择是否开启连接复用。 5. 配置完成后单击“确定”即可完成新增。 相关操作 编辑优化策略:选择需要编辑的网关服务优化策略,单击“操作”列的“编辑”,在弹出的对话框中修改相关配置,编辑完成后单击“确定”即完成修改。
        来自:
        帮助文档
        云密评专区
        用户指南
        云密评专区—综合安全网关操作指南
        SSL网关服务
        网关服务优化策略
      • 大数据业务开发
        Hue连接hiveserver,不释放session,报错over max user connections如何处理? 适用版本:MRS 3.1.0及之前的MRS 3.x版本。 1.修改两个Hue节点的以下文件: /opt/Bigdata/FusionInsightPorter8. /install/FusionInsightHue /hue/apps/beeswax/src/beeswax/models.py 2.修改文件中的396和404行的值 q self.filter(owneruser, applicationapplication).exclude(guid'').exclude(secret'') 改为 q self.filter(owneruser, applicationapplication).exclude(guidNone).exclude(secretNone) 如何重置Kafka数据? 删除Kafka topic信息即重置Kafka数据,具体命令请参考: 删除topic: kafkatopics.sh delete zookeeper ZooKeeper集群业务IP:2181/kafka topic topicname 查询所有topic: kafkatopics.sh zookeeper ZooKeeper集群业务IP:2181/kafka list 执行删除命令后topic数据为空则此topic会立刻被删除,如果有数据则会标记删除,后续Kafka会自行进行实际删除。 Kafka目前支持的访问协议类型有哪些? 当前支持4种协议类型的访问:PLAINTEXT、SSL、SASLPLAINTEXT、SASLSSL。 消费Kafka Topic时报错“Not Authorized to access group XXX”如何处理? 该问题是由于集群的Ranger鉴权和集群自带的ACL鉴权冲突导致。Kafka集群使用自带的ACL进行权限访问控制,且集群的Kafka服务也开启Ranger鉴权控制时,该组件所有鉴权将由Ranger统一管理,原鉴权插件设置的权限将会失效,导致ACL权限授权未生效。可通过关闭Kafka的Ranger鉴权并重启Kafka服务来处理该问题。操作步骤如下: 1.登录FusionInsight Manager页面,选择“集群 > Kafka”。 2.在服务“概览”页面右上角单击“更多”,选择“停用Ranger鉴权”。在弹出的对话框中输入密码,单击“确定”,操作成功后单击“完成”。 3.在服务“概览”页面右上角单击“更多”,选择“重启服务”,重启Kafka服务。
        来自:
        帮助文档
        翼MapReduce
        常见问题
        操作类
        大数据业务开发
      • 与其他服务的关系
        云硬盘服务 可以将云硬盘挂载至物理机,并可以随时扩容云硬盘容量。 虚拟私有云 为物理机提供一个逻辑上完全隔离的专有网络,您还可以在VPC中定义安全组、VPN、IP地址段、带宽等网络特性。用户可以通过VPC方便地管理、配置内部网络,进行安全、快捷的网络变更。同时,用户可以自定义安全组内与组间物理机的访问规则,加强物理机的安全保护。 镜像服务 您可以通过镜像创建物理机,提高物理机的部署效率。 云监控服务 当您开通了物理机后,安装telescope软件并完成相关配置,即可在云监控服务查看物理机的监控数据,还可以获取可视化监控图表。如何配置物理机带内监控,请参考《主机监控配置》。
        来自:
      • 产品优势
        Web应用防火墙对网站业务流量进行多维度检测和防护,降低数据被篡改、失窃的风险。 精准高效的威胁检测 采用规则和AI双引擎架构,默认集成最新的防护规则和优秀实践。 企业级用户策略定制,支持拦截页面自定义、多条件的CC防护策略配置、海量IP黑名单等,使网站防护更精准。 0day漏洞快速修复 专业安全团队724小时运营,实现紧急0day漏洞2小时内修复完成,帮助用户快速抵御最新威胁。 保护用户数据隐私 支持用户对攻击日志中的账号、密码等敏感信息进行脱敏。 支持PCIDSS标准的SSL安全配置。 支持TLS协议版本和加密套件的配置。
        来自:
        帮助文档
        Web应用防火墙(独享版)
        产品介绍
        产品优势
      • 1
      • ...
      • 23
      • 24
      • 25
      • 26
      • 27
      • ...
      • 39
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      天翼云新春焕新季

      云主机开年特惠28.8元/年,0元秒杀等你来抢!

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      出海产品促销专区

      爆款云主机低至2折,高性价比,不限新老速来抢购!

      天翼云奖励推广计划

      加入成为云推官,推荐新用户注册下单得现金奖励

      产品推荐

      物理机 DPS

      轻量型云主机

      弹性伸缩服务 AS

      弹性高性能计算 E-HPC

      天翼云CTyunOS系统

      AI Store

      公共算力服务

      模型推理服务

      应用托管

      推荐文档

      常见问题

      《非经营性互联网信息服务备案管理办法》(信息产业部令第33号)

      入门教程③:远程桌面无法复制粘贴问题

      普通连接

      RDP/VNC访问

      产品定义

      管理只读实例

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号