• 关于

    单字符串无法连接

    的搜索结果

回答

1、整数直接输入数字即可,例如:1002、长整数数字后面加上字母 L,例如:100L3、浮点数直接输入带小数的数值,例如:3.144、布尔数用 true 或 false 来表示,当然也可以是一个比较条件,例如:true、a>b5、日期缺省用连接符‘-’分开的年月日表示法,例如:2018-1-31。但是在表达式中引用时,得用日期函数转换。例如:=date(“2018-1-31”)。注意:用连接符‘-’分开的年月日是集算器缺省的格式,可以通过菜单“工具 > 选项”打开选项对话框,在“环境”页面的“日期格式”的一致,否则集算器无法解析,就会被当成普通字符串,而在表达式中引用时,就会报解析异常。6、时间缺省用冒号‘:’分开的时分秒表示法,例如:20:30:50。同样地,在表达式中需要用时间函数来转换。例如:=time(“20:30:50”)。注意:和日期类型一样,时间的格式也必须和选项对话框中的“时间格式”选项设置的格式一致。7、字符串直接输入字符串即可,例如: Hello,world!。但是对于有歧义的字符,比如电话号码,直接输入时,会被当成长整数,此时需要用单引号开头表示后面跟的是字符串,例如:’13901020888。在表达式中时则需要加上双引号。下图是这些基本数据类型的一个汇总:

游客zfuudxzgqv7jq 2019-12-02 01:58:03 0 浏览量 回答数 0

问题

应该返回false的用户输入返回true

养狐狸的猫 2019-12-01 20:00:45 8 浏览量 回答数 0

回答

公共返回参数 所有请求均返回JSON格式数据,有如下公共字段: 名称 类型 是否必需 描述 code 整型 是 错误码,和HTTP状态码一致(但有扩展)。 2xx 表示成功。 4xx 表示请求有误。 5xx 表示后端有误。 具体请参见公共错误码。 msg 字符串 是 错误的进一步描述。 requestId 字符串 是 唯一标识该请求的ID,可用于定位问题。 data 整型/字符串/JSON对象 否 API(业务)相关的返回数据。出错情况下,该字段可能为空。一般来说,该字段为一个JSON结构体或数组。 公共错误码 错误代码 HTTP 状态码 描述 OK 200 请求成功。 PROCESSING 280 任务正在执行中,建议您等待一段时间(例如5s)后再查询结果。 BAD_REQUEST 400 请求有误,通常由于请求参数不正确导致,请仔细检查请求参数。 NOT_ALLOWED 401 请求失败,通常是由于使用了不安全的图片/视频/语音链接地址。 FORBIDDEN 403 请求访问失败,通常由于您的图片/视频/语音链接无法访问导致,请确认公网是否可访问,并且无防盗链策略。 NOT_FOUND 404 待检测内容未找到,通常是由于您的图片/视频/语音内容无法下载导致,请确认内容可通过公网访问到。 DOWNLOAD_FAILED 480 下载失败,请确认待检测内容的大小、分辨率(如果有)在API的限制范围内。 GENERAL_ERROR 500 一般是服务端临时出错。建议重试,若持续返回该错误码,请通过工单联系我们。 DB_FAILED 580 数据库操作失败。建议重试,若持续返回该错误码,请通过工单联系我们。 TIMEOUT 581 超时。建议重试,若持续返回该错误码,请通过工单联系我们。 CACHE_FAILED 585 缓存出错。建议重试,若持续返回该错误码,请通过工单联系我们。 ALGO_FAILED 586 算法出错。请通过工单联系我们。 MQ_FAILED 587 中间件出错。请通过工单联系我们。 EXCEED_QUOTA 588 请求频率超出配额。默认配额:图片检测50张/秒,视频检测20路/秒,语音检测20路/秒,文本检测100条/秒。如果需要调整配额,请通过工单联系我们。 说明 关于价格说明,请参见内容安全产品定价。 TOO_LARGE 589 待检测内容过大,请确保检测的内容在API的限制范围内。建议重试,若持续返回该错误码,请通过工单联系我们。 BAD_FORMAT 590 待检测内容格式错误,请确保检测的内容在API的限制范围内。 CONNECTION_POOL_FULL 591 连接池满。请通过工单联系我们。 DOWNLOAD_TIMEOUT 592 下载超时,下载时间限制为3s,请确保检测的内容大小在API的限制范围内。 EXPIRED 594 任务过期,如taskId过期。 CATCH_FRAME_FAILED 595 截帧失败,请通过工单联系我们。 PERMISSION_DENY 596 账号未授权,账号欠费,账号未开通,账号被禁,具体可以参考返回的msg。

保持可爱mmm 2020-03-27 19:01:45 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

如何保护MS SSAS 2005以便通过Internet进行HTTP远程访问?

心有灵_夕 2019-12-29 12:55:30 0 浏览量 回答数 1

回答

错误(error )是指人们在使用软、硬件的时候,软、硬件不能正常操作的一种现象。由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(error code),软、硬件在运行中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式给操作者,操作者通过错误代码识别,快速找到软、硬件不能正常操作的具体原因。windows错误代码列举1100 已经到达磁带的物理尽头。1101 磁带访问到文件标记。1102 到达磁带或分区首部。1103 磁带访问到文件组的末尾。1104 磁带上没有其他数据。1105 磁带无法分区。1106 访问多重卷分区的新磁带时,当前的区块大小不正确。1107 加载磁带时,找不到磁带分区信息。1108 无法锁定媒体退出功能。1109 无法卸载媒体。1110 驱动器中的媒体已经更改。1111 已经复位I/O 总线。1112 驱动器中没有媒体。1113 在目标多字节代码页中不存在对单码字符的映射。1114 动态链接库 (DLL) 初始化例程失败。1115 正在关闭系统。1116 无法终止系统关机,因为没有进行中的关机操作。1117 由于 I/O 设备出现错误,无法运行该请求。1118 串行设备初始化失败。将卸载串行驱动程序。1119 无法打开正与其他设备共享中断请求 (IRQ) 的设备。至少有一个使用该 IRQ 的设备已经打开。1120 由于再次写入串行口,串行 I/O 操作已结束。(IOCTL_SERIAL_XOFF_COUNTER 为零。)1121 由于超时,串行 I/O 操作已结束。 (IOCTL_SERIAL_XOFF_COUNTER 未达到零。)1122 在软盘上找不到标识符地址标记。1123 软盘扇区标识符字段与软盘控制器磁道地址不匹配。1124 软盘控制器报告软盘驱动程序不能识别的错误。1125 软盘控制器返回的结果和注册的不一致。1126 访问硬盘时,再校准操作失败,再试一次后也无法操作。1127 访问硬盘时,磁盘操作失败,再试一次后仍没有作用。1128 访问硬盘时,需要重启动磁盘控制器,但仍未成功。1129 磁带已卷到尽头。1130 可用的服务器存储区不足,无法执行该命令。1131 检测到潜在的死锁情况。1132 指定的基址或文件偏移量没有正确对齐。1140 试图更改系统电源状态的操作被另一应用程序或驱动程序禁止。1141 系统 BIOS 无法更改系统电源状态。1142 试图在一文件上创建超过系统允许数额的链接。1150 指定的程序需要新的 Windows 版本。1151 指定的程序不是 Windows 或 MS-DOS 程序。1152 无法启动指定程序的多个实例。1153 指定的程序是为 Windows 的早期版本编写的。1154 运行此应用程序所需的某个库文件已损。1155 没有应用程序与该操作中所指定的文件关联。1156 将命令发送到应用程序时出现错误。1157 找不到运行此应用程序所需的某个库文件。1158 当前进程已使用了 Window 管理器对象的系统允许的所有句柄。1159 消息只能与同步操作一起使用。1160 指出的源元素没有媒体。1161 指出的目标元素已包含媒体。1162 指出的元素不存在。1163 指出的元素是未显示的存储资源的一部分。1164 指出的设备需要重新初始化,因为硬件有错误。1165 设备显示在尝试进一步操作之前需要清除。1166 设备显示它的门仍是打开状态。1167 设备没有连接。1168 找不到元素。1169 索引中没有同指定项相匹配的项。1170 在对象上不存在指定的属性集。1171 传递到 GetMouseMovePoints 的点不在缓冲区中。1172 跟踪(工作站)服务没运行。1173 找不到卷 ID。1175 无法删除要被替换的文件。1176 无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。1177 无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。1178 卷更改记录被删除。1179 卷更改记录服务不处于活动中。1180 找到一份文件,但是可能不是正确的文件。1181 日志项已从日志中删除。1200 指定的设备名无效。1201 设备当前虽然未连接,但它是记忆连接。1202 试图记起已经记住的设备。1203 网络供应商不接受给定的网络路径。1204 指定的网络供应商名无效。1205 无法打开网络连接配置文件。1206 网络连接配置文件已损坏。1207 无法列举非包容类。1208 出现扩展错误。1209 指定组名的格式无效。1210 指定计算机名的格式无效。1211 指定事件名的格式无效。1212 指定域名的格式无效。1213 指定服务名的格式无效。1214 指定网络名的格式无效。1215 指定共享名的格式无效。1216 指定密码的格式无效。1217 指定的邮件名无效。1218 指定邮件目的地的格式无效。1219 所提供的凭据与现有凭据设置冲突。1220 试图与网络服务器建立会话,但与该服务器建立的会话太多。1221 网络上的其他计算机已经使用该工作组或域名。1222 网络不存在或者没有启动。1223 用户已经取消该操作。1224 所要求的操作无法在已经打开用户映射区域的文件中运行。1225 远程系统拒绝网络连接。1226 已经关闭网络连接。1227 网络传输的终点已经有一个地址与其关联。1228 网络终点尚未与地址关联。1229 试图在不存在的网络连接中操作。1230 试图在活动的网络连接上进行无效操作。1231-1233不能访问网络位置。有关网络疑难解答的信息,请参阅 Windows 帮助。1234 远程系统的目标网络端点没有运行任何服务。1235 该请求已经终止。1236 本地系统已经终止网络连接。1237 无法完成操作。请再试一次。1238 无法创建到该服务器的连接,因为已经到达了该帐户同时连接的最大数目。1239 试图在该帐户未授权的时间内登录。1240 尚未授权此帐户从该站登录网络。1241 网络地址无法用于要求的操作。1242 服务已经注册。1243 指定的服务不存在。1244 由于尚未验证用户身份,无法执行要求的操作。1245 由于用户尚未登录网络,无法运行要求的操作。指定的服务不存在。1246 继续工作。1247 完成初始化操作后,试图再次运行初始化操作。1248 没有其他本地设备。1249 指定的站点不存在。1250 具有指定名称的域控制器已经存在。1251 只有连接到服务器上时,才支持该操作。1252 即使没有改动,组策略框架也应该调用扩展。1253 指定的用户没有一个有效的配置文件。1254 Microsoft Small Business Server 不支持此操作。1300 不是对所有的调用方分配引用特权。1301 帐户名与安全标识符之间的映射未完成。1302 没有为该帐户明确地设置系统配额限制。1303 没有可用的密钥。返回已知的密钥。1304 密码太复杂,无法转换成 LAN Manager 密码。返回的 LAN Manager 密码是空字符串。1305 修订级别未知。1306 表示两个修订级别不兼容。1307 无法将此安全标识符指定为该对象的拥有者。1308 无法将此安全标识符指定为主要的对象组。1309 当前并未模拟客户的线程试图操作模拟令牌。1310 不可以禁用该组。1311 没有可用的登录服务器处理登录请求。1312 指定的登录会话不存在。该会话可能已终止。1313 指定的权限不存在。1314 客户不保留请求的权限。1315 提供的名称不是正确的帐户名称格式。1316 指定的用户已经存在。1317 指定的用户不存在。1318 指定的组已经存在。1319 指定的组不存在。1320 或者指定的用户帐户已经是某个特定组的成员,或者也可能指定的组非空而不能被删除。1321 指定的用户帐户不是所指定组帐户的成员。1322 上次保留的管理帐户无法关闭或删除。1323 无法更新密码。所输入的密码不正确。1324 无法更新密码。所提供的新密码包含不可用于密码的值。1325 无法更新密码。为新密码提供的值不符合字符域的长度、复杂性或历史要求。1326 登录失败: 用户名未知或密码错误。1327 登录失败: 用户帐户限制。1328 登录失败: 违反帐户登录时间限制。1329 登录失败: 禁止用户登录到该计算机上。1330 登录失败: 指定的帐户密码已过期。1331 登录失败: 当前禁用帐户。1332 未完成帐户名与安全性标识符之间的映射。1333 一次请求的本地用户标识符(LUID)太多。1334 没有其他可用的本地用户标识符(LUID)。1335 对这个特定使用来说,安全标识符的子部分是无效的。1336 访问控制清单(ACL)结构无效。1337 安全标识符结构无效。1338 安全描述符结构无效。1340 无法创建继承的访问控制列表(ACL)或访问控制项目(ACE)。1341 当前已禁用服务器。1342 当前已启用服务器。1343 所提供的值是无效的标识符授权值。1344 没有更多的内存用于更新安全信息。1345 指定的属性无效,或指定的属性与整个组的属性不兼容。1346 或者没有提供所申请的模仿级别,或者提供的模仿级别无效。1347 无法打开匿名级安全性符号。1348 所请求的验证信息类别无效。1349 该类符号不能以所尝试的方式使用。1350 无法在没有相关安全性的对象上运行安全操作。1351 未能从域控制器读取配置信息,或者是因为机器不可使用,或者是访问被拒绝。 错误(error )是指人们在使用软、硬件的时候,软、硬件不能正常操作的一种现象。由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(error code),软、硬件在运行中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式给操作者,操作者通过错误代码识别,快速找到软、硬件不能正常操作的具体原因。windows错误代码列举1100 已经到达磁带的物理尽头。1101 磁带访问到文件标记。1102 到达磁带或分区首部。1103 磁带访问到文件组的末尾。1104 磁带上没有其他数据。1105 磁带无法分区。1106 访问多重卷分区的新磁带时,当前的区块大小不正确。1107 加载磁带时,找不到磁带分区信息。1108 无法锁定媒体退出功能。1109 无法卸载媒体。1110 驱动器中的媒体已经更改。1111 已经复位I/O 总线。1112 驱动器中没有媒体。1113 在目标多字节代码页中不存在对单码字符的映射。1114 动态链接库 (DLL) 初始化例程失败。1115 正在关闭系统。1116 无法终止系统关机,因为没有进行中的关机操作。1117 由于 I/O 设备出现错误,无法运行该请求。1118 串行设备初始化失败。将卸载串行驱动程序。1119 无法打开正与其他设备共享中断请求 (IRQ) 的设备。至少有一个使用该 IRQ 的设备已经打开。1120 由于再次写入串行口,串行 I/O 操作已结束。(IOCTL_SERIAL_XOFF_COUNTER 为零。)1121 由于超时,串行 I/O 操作已结束。 (IOCTL_SERIAL_XOFF_COUNTER 未达到零。)1122 在软盘上找不到标识符地址标记。1123 软盘扇区标识符字段与软盘控制器磁道地址不匹配。1124 软盘控制器报告软盘驱动程序不能识别的错误。1125 软盘控制器返回的结果和注册的不一致。1126 访问硬盘时,再校准操作失败,再试一次后也无法操作。1127 访问硬盘时,磁盘操作失败,再试一次后仍没有作用。1128 访问硬盘时,需要重启动磁盘控制器,但仍未成功。1129 磁带已卷到尽头。1130 可用的服务器存储区不足,无法执行该命令。1131 检测到潜在的死锁情况。1132 指定的基址或文件偏移量没有正确对齐。1140 试图更改系统电源状态的操作被另一应用程序或驱动程序禁止。1141 系统 BIOS 无法更改系统电源状态。1142 试图在一文件上创建超过系统允许数额的链接。1150 指定的程序需要新的 Windows 版本。1151 指定的程序不是 Windows 或 MS-DOS 程序。1152 无法启动指定程序的多个实例。1153 指定的程序是为 Windows 的早期版本编写的。1154 运行此应用程序所需的某个库文件已损。1155 没有应用程序与该操作中所指定的文件关联。1156 将命令发送到应用程序时出现错误。1157 找不到运行此应用程序所需的某个库文件。1158 当前进程已使用了 Window 管理器对象的系统允许的所有句柄。1159 消息只能与同步操作一起使用。1160 指出的源元素没有媒体。1161 指出的目标元素已包含媒体。1162 指出的元素不存在。1163 指出的元素是未显示的存储资源的一部分。1164 指出的设备需要重新初始化,因为硬件有错误。1165 设备显示在尝试进一步操作之前需要清除。1166 设备显示它的门仍是打开状态。1167 设备没有连接。1168 找不到元素。1169 索引中没有同指定项相匹配的项。1170 在对象上不存在指定的属性集。1171 传递到 GetMouseMovePoints 的点不在缓冲区中。1172 跟踪(工作站)服务没运行。1173 找不到卷 ID。1175 无法删除要被替换的文件。1176 无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。1177 无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。1178 卷更改记录被删除。1179 卷更改记录服务不处于活动中。1180 找到一份文件,但是可能不是正确的文件。1181 日志项已从日志中删除。1200 指定的设备名无效。1201 设备当前虽然未连接,但它是记忆连接。1202 试图记起已经记住的设备。1203 网络供应商不接受给定的网络路径。1204 指定的网络供应商名无效。1205 无法打开网络连接配置文件。1206 网络连接配置文件已损坏。1207 无法列举非包容类。1208 出现扩展错误。1209 指定组名的格式无效。1210 指定计算机名的格式无效。1211 指定事件名的格式无效。1212 指定域名的格式无效。1213 指定服务名的格式无效。1214 指定网络名的格式无效。1215 指定共享名的格式无效。1216 指定密码的格式无效。1217 指定的邮件名无效。1218 指定邮件目的地的格式无效。1219 所提供的凭据与现有凭据设置冲突。1220 试图与网络服务器建立会话,但与该服务器建立的会话太多。1221 网络上的其他计算机已经使用该工作组或域名。1222 网络不存在或者没有启动。1223 用户已经取消该操作。1224 所要求的操作无法在已经打开用户映射区域的文件中运行。1225 远程系统拒绝网络连接。1226 已经关闭网络连接。1227 网络传输的终点已经有一个地址与其关联。1228 网络终点尚未与地址关联。1229 试图在不存在的网络连接中操作。1230 试图在活动的网络连接上进行无效操作。1231-1233不能访问网络位置。有关网络疑难解答的信息,请参阅 Windows 帮助。1234 远程系统的目标网络端点没有运行任何服务。1235 该请求已经终止。1236 本地系统已经终止网络连接。1237 无法完成操作。请再试一次。1238 无法创建到该服务器的连接,因为已经到达了该帐户同时连接的最大数目。1239 试图在该帐户未授权的时间内登录。1240 尚未授权此帐户从该站登录网络。1241 网络地址无法用于要求的操作。1242 服务已经注册。1243 指定的服务不存在。1244 由于尚未验证用户身份,无法执行要求的操作。1245 由于用户尚未登录网络,无法运行要求的操作。指定的服务不存在。1246 继续工作。1247 完成初始化操作后,试图再次运行初始化操作。1248 没有其他本地设备。1249 指定的站点不存在。1250 具有指定名称的域控制器已经存在。1251 只有连接到服务器上时,才支持该操作。1252 即使没有改动,组策略框架也应该调用扩展。1253 指定的用户没有一个有效的配置文件。1254 Microsoft Small Business Server 不支持此操作。1300 不是对所有的调用方分配引用特权。1301 帐户名与安全标识符之间的映射未完成。1302 没有为该帐户明确地设置系统配额限制。1303 没有可用的密钥。返回已知的密钥。1304 密码太复杂,无法转换成 LAN Manager 密码。返回的 LAN Manager 密码是空字符串。1305 修订级别未知。1306 表示两个修订级别不兼容。1307 无法将此安全标识符指定为该对象的拥有者。1308 无法将此安全标识符指定为主要的对象组。1309 当前并未模拟客户的线程试图操作模拟令牌。1310 不可以禁用该组。1311 没有可用的登录服务器处理登录请求。1312 指定的登录会话不存在。该会话可能已终止。1313 指定的权限不存在。1314 客户不保留请求的权限。1315 提供的名称不是正确的帐户名称格式。1316 指定的用户已经存在。1317 指定的用户不存在。1318 指定的组已经存在。1319 指定的组不存在。1320 或者指定的用户帐户已经是某个特定组的成员,或者也可能指定的组非空而不能被删除。1321 指定的用户帐户不是所指定组帐户的成员。1322 上次保留的管理帐户无法关闭或删除。1323 无法更新密码。所输入的密码不正确。1324 无法更新密码。所提供的新密码包含不可用于密码的值。1325 无法更新密码。为新密码提供的值不符合字符域的长度、复杂性或历史要求。1326 登录失败: 用户名未知或密码错误。1327 登录失败: 用户帐户限制。1328 登录失败: 违反帐户登录时间限制。1329 登录失败: 禁止用户登录到该计算机上。1330 登录失败: 指定的帐户密码已过期。1331 登录失败: 当前禁用帐户。1332 未完成帐户名与安全性标识符之间的映射。1333 一次请求的本地用户标识符(LUID)太多。1334 没有其他可用的本地用户标识符(LUID)。1335 对这个特定使用来说,安全标识符的子部分是无效的。1336 访问控制清单(ACL)结构无效。1337 安全标识符结构无效。1338 安全描述符结构无效。1340 无法创建继承的访问控制列表(ACL)或访问控制项目(ACE)。1341 当前已禁用服务器。1342 当前已启用服务器。1343 所提供的值是无效的标识符授权值。1344 没有更多的内存用于更新安全信息。1345 指定的属性无效,或指定的属性与整个组的属性不兼容。1346 或者没有提供所申请的模仿级别,或者提供的模仿级别无效。1347 无法打开匿名级安全性符号。1348 所请求的验证信息类别无效。1349 该类符号不能以所尝试的方式使用。1350 无法在没有相关安全性的对象上运行安全操作。1351 未能从域控制器读取配置信息,或者是因为机器不可使用,或者是访问被拒绝。

1652919821114713 2019-12-02 00:43:41 0 浏览量 回答数 0

问题

【精品问答】python技术1000问(1)

问问小秘 2019-12-01 21:57:48 455812 浏览量 回答数 21

回答

本文适用基于API URL发起HTTP/HTTPS GET请求的用户,如果您使用的是SDK可以跳过此环节。 发起API请求的URL由不同参数拼凑而成,有固定的请求结构。URL中包含公共参数、您的签名机制和某个API的具体参数。每篇API文档均给出了URL请求示例供您参考,但是为了方便显示,我们并没有编码这些URL示例,您需要在发起请求前自行编码。我们根据您的签名验证了请求后,会返回结果。接口调用成功会显示返回参数,调用失败则显示相应报错,您可以根据公共错误码和具体API错误码分析排查。 公共参数分为公共请求参数和公共返回参数。 公共请求参数 名称 类型 是否必需 描述 Action String 是 API的名称。取值参见API概览。 AccessKeyId String 是 访问密钥ID。AccessKey用于调用API,而用户密码用于登录OOS 管理控制台 Signature String 是 您的签名。取值参见签名机制。 SignatureMethod String 是 签名方式。取值范围:HMAC-SHA1。 SignatureVersion String 是 签名算法版本。取值范围:1.0。 SignatureNonce String 是 签名唯一随机数。用于防止网络重放攻击,建议您每一次请求都使用不同的随机数。 Timestamp String 是 请求的时间戳。按照时间格式标准表示,并需要使用UTC时间,格式为yyyy-MM-ddTHH:mm:ssZ。示例:2019-06-01T12:00:00Z表示北京时间2019年06月01日12点00分00秒。 Version String 是 API 的版本号,格式为 YYYY-MM-DD。取值范围:2019-06-01。 Format String 是 返回参数的语言类型。取值范围:json。 请求示例 https://oos.cn-hangzhou.aliyuncs.com/?Action=XXXXXX &Format=json &Version=2019-06-01 &Signature=cWgxtKc9dQWgSMB7OEhtOkq%2B9AM%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=479a2bf5-8045-11e9-8d42-6c96cfdd1fa1 &SignatureVersion=1.0 &AccessKeyId=key-test &Timestamp=2019-05-27T06%3A04%3A25Z … 公共返回参数 名称 类型 描述 RequestId String 请求ID。无论调用接口成功与否,我们都会返回请求ID。 阿里云OOS API支持基于URL发起HTTP/HTTPS GET请求。请求参数需要包含在URL中。本文列举了GET请求中的结构解释,并提供了OOS的服务接入地址(Endpoint)。 结构示例 以下为CreateTemplate一条未编码的URL请求示例: https://oos.cn-hangzhou.aliyuncs.com/?Action=CreateTemplate &TemplateName=YourTemplateName &<公共请求参数> https指定了请求通信协议。 oos.cn-hangzhou.aliyuncs.com指定了OOS的服务接入地址(Endpoint)。 Action=CreateTemplate指定了要调用的API,TemplateName=YourTemplateName是CreateTemplate规定的参数。 <公共请求参数>是系统规定的公共参数。 通信协议 支持HTTP或HTTPS协议请求通信。为了获得更高的安全性,推荐您使用HTTPS协议发送请求。 涉及敏感数据时,如用户密码和SSH密钥对,推荐使用HTTPS协议。例如,在StartExecution中指定敏感参数时。 接入地址 OOS API的服务接入地址,参见以下表格。为较少网络延时,建议您根据业务调用来源配置接入地址。 华东1(杭州) oos.cn-hangzhou.aliyuncs.com 华北2(北京) oos.cn-beijing.aliyuncs.com 华北5(呼和浩特) oos.cn-huhehaote.aliyuncs.com 华北3(张家口) oos.cn-zhangjiakou.aliyuncs.com 中国香港 oos.cn-hongkong.aliyuncs.com 华东2(上海) oos.cn-shanghai.aliyuncs.com 华南1(深圳) oos.cn-shenzhen.aliyuncs.com 印度(孟买) oos.ap-south-1.aliyuncs.com 美国(弗吉尼亚) oos.us-east-1.aliyuncs.com 德国(法兰克福) oos.eu-central-1.aliyuncs.com 英国(伦敦) oos.eu-west-1.aliyuncs.com 请求参数 您需要通过Action参数指定目标操作,例如Action=CreateTemplate。还需要指定接口的其他参数以及公共请求参数。 字符编码 请求及返回结果都使用UTF-8字符集编码。 对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKeyID和AccessKeySecret对称加密验证实现。 AccessKey相当于用户密码,AccessKey用于调用API,而用户密码用于登录OOS控制台。其中AccessKeyID是访问者身份,AccessKeySecret是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。 说明 我们提供了多种编程语言的SDK及第三方SDK,可以免去您签名的烦恼。更多详情,请下载SDK。 构造规范化请求字符串 排序参数。排序规则以首字母顺序排序,排序参数包括公共请求参数和接口自定义参数,不包括公共请求参数中的Signature参数。 说明 当使用GET方法提交请求时,这些参数就是请求URL中的参数部分,即URL中?之后由&连接的部分。 编码参数。使用UTF-8字符集按照RFC3986规则编码请求参数和参数取值,编码规则如下: 字符A~Z、a~z、0~9以及字符 -、_、.、~不编码。 其它字符编码成%XY的格式,其中XY是字符对应ASCII码的16进制。示例:半角双引号(")对应%22。 扩展的UTF-8字符,编码成%XY%ZA…的格式。 空格( )编码成%20,而不是加号(+)。该编码方式与application/x-www-form-urlencoded MIME格式编码算法相似,但又有所不同。如果您使用的是Java标准库中的java.net.URLEncoder,可以先用标准库中percentEncode编码,随后将编码后的字符中加号(+)替换为%20、星号()替换为%2A、%7E替换为波浪号(~),即可得到上述规则描述的编码字符串。 private static final String ENCODING = "UTF-8"; private static String percentEncode(String value) throws UnsupportedEncodingException { return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("", "%2A").replace("%7E", "~") : null; } 使用等号(=)连接编码后的请求参数和参数取值。 使用与号(&)连接编码后的请求参数,注意参数排序与步骤一:构造规范化请求字符串一致。 现在,您得到了规范化请求字符串(CanonicalizedQueryString),其结构遵循请求结构。 构造签名字符串 构造待签名字符串StringToSign。您可以同样使用percentEncode处理上一步构造的规范化请求字符串,规则如下: StringToSign= HTTPMethod + "&" + //HTTPMethod:发送请求的 HTTP 方法,例如 GET。 percentEncode("/") + "&" + //percentEncode("/"):字符(/)UTF-8 编码得到的值,即 %2F。 percentEncode(CanonicalizedQueryString) //您的规范化请求字符串。 按照RFC2104的定义,计算待签名字符串StringToSign的HMAC-SHA1值。示例使用的是Java Base64编码方法。 Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) ) 添加根据RFC3986规则编码后的参数Signature到规范化请求字符串URL中。 说明 计算签名时,RFC2104规定的Key值是您的AccessKeySecret并加上与号(&),其ASCII值为38。 示例 1. 参数拼接法 以调用ListTemplates查询模板为例。假设您获得了AccessKeyID=testid以及AccessKeySecret=testsecret,签名流程如下所示: 构造规范化请求字符串。 AccessKeyId=testid&Action=ListTemplates&Format=json&SignatureMethod=HMAC-SHA1&SignatureNonce=9a3fdf30-8049-11e9-8875-6c96cfdd1fa1&SignatureVersion=1.0&Timestamp=2019-05-27T06%3A35%3A22Z&Version=2019-06-01 构造待签名字符串StringToSign,详情请参见步骤二:构造签名字符串。 GET&%2F&AccessKeyId%3Dtestid&Action%3DListTemplates&Format%3Djson&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D9a3fdf30-8049-11e9-8875-6c96cfdd1fa1&SignatureVersion%3D1.0&Timestamp%3D2019-05-27T06%253A35%253A22Z&Version%3D2019-06-01 计算签名值。因为AccessKeySecret=testsecret,用于计算的Key为testsecret&,计算得到的签名值为 1FcsD6/AvH2KugeowoCJSi8lBd8=。示例使用的是Java Base64编码方法。 Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) ) 添加RFC3986规则编码后的Signature=1FcsD6%2FAvH2KugeowoCJSi8lBd8%3D到步骤一:构造规范化请求字符串的URL中。 http://oos.cn-hangzhou.aliyuncs.com/?SignatureVersion=1.0&Format=json&Timestamp=2019-05-27T06%3A35%3A22Z&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&Version=2019-06-01&Signature=1FcsD6%2FAvH2KugeowoCJSi8lBd8%3D&Action=ListTemplates&SignatureNonce=9a3fdf30-8049-11e9-8875-6c96cfdd1fa1 通过以上URL,您可以使用浏览器、curl或者wget等工具发起HTTP请求调用ListTemplates,查询您的模板。 示例 2. 编程语言法 依然以调用ListTemplates查询模板为例。假设您获得了AccessKeyID=testid以及AccessKeySecret=testsecret,并且假定所有请求参数放在一个Java Map<String, String>对象里。 预定义编码方法。 private static final String ENCODING = "UTF-8"; private static String percentEncode(String value) throws UnsupportedEncodingException { return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null; } 预定义编码时间格式Timestamp。参数Timestamp必须符合时间格式规范,并需要使用UTC时间,时区为+0。 private static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static String formatIso8601Date(Date date) { SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT); df.setTimeZone(new SimpleTimeZone(0, "GMT")); return df.format(date); } 构造请求字符串。 final String HTTP_METHOD = "GET"; Map parameters = new HashMap(); // 输入请求参数 parameters.put("Action", "ListTemplates"); parameters.put("Version", "2019-06-01"); parameters.put("AccessKeyId", "testid"); parameters.put("Timestamp", formatIso8601Date(new Date())); parameters.put("SignatureMethod", "HMAC-SHA1"); parameters.put("SignatureVersion", "1.0"); parameters.put("SignatureNonce", UUID.randomUUID().toString()); parameters.put("Format", "JSON"); // 排序请求参数 String[] sortedKeys = parameters.keySet().toArray(new String[]{}); Arrays.sort(sortedKeys); final String SEPARATOR = "&"; // 构造 stringToSign 字符串 StringBuilder stringToSign = new StringBuilder(); stringToSign.append(HTTP_METHOD).append(SEPARATOR); stringToSign.append(percentEncode("/")).append(SEPARATOR); StringBuilder canonicalizedQueryString = new StringBuilder(); for(String key : sortedKeys) { // 这里注意编码 key 和 value canonicalizedQueryString.append("&") .append(percentEncode(key)).append("=") .append(percentEncode(parameters.get(key))); } // 这里注意编码 canonicalizedQueryString stringToSign.append(percentEncode( canonicalizedQueryString.toString().substring(1))); 签名。因为 AccessKeySecret=testsecret,所以用于计算HMAC的Key为testsecret&,计算得到的签名值为1FcsD6/AvH2KugeowoCJSi8lBd8=。 // 以下是一段计算签名的示例代码 final String ALGORITHM = "HmacSHA1"; final String ENCODING = "UTF-8"; key = "testsecret&"; Mac mac = Mac.getInstance(ALGORITHM); mac.init(new SecretKeySpec(key.getBytes(ENCODING), ALGORITHM)); byte[] signData = mac.doFinal(stringToSign.getBytes(ENCODING)); String signature = new String(Base64.encodeBase64(signData)); 增加签名参数后,按照RFC3986规则编码后的URL如下所示: http://oos.cn-hangzhou.aliyuncs.com/?SignatureVersion=1.0&Format=json&Timestamp=2019-05-27T06%3A35%3A22Z&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&Version=2019-06-01&Signature=1FcsD6%2FAvH2KugeowoCJSi8lBd8%3D&Action=ListTemplates&SignatureNonce=9a3fdf30-8049-11e9-8875-6c96cfdd1fa1 使用浏览器、curl或者wget等工具发送HTTP请求。 { "Templates": [ { "Hash": "9ea05673ea6c7d03fe8707ddd3d347d74f9e47963538097d120583c0b5385edf", "Description": "", "TemplateName": "demo", "ShareType": "Private", "Tags": [], "TemplateFormat": "JSON", "CreatedBy": "1000008528360000", "CreatedDate": "2019-06-01T12:00:00Z", "TemplateVersion": "v1", "TotalExecutionCount": 1 },...], "NextToken": "gAAAAABc5pnvl_meBuZkGEbZNmzTOA1RotEjFs4q8q2fICes_oGk4qenxGB5UeyXYWa5eF4TeZLQMpnVc6rmhr2BC0Kahyx1P5brt_fQvLFTLBEcXQzzqsWwxDS-Y1xL7pkhOOgU_K3Z0-dMQHOkIQwWhodp4qutzKNO7gQ-EPWQvM1ugrGkonFDe_bV3TckHyHqgJDTLwk8Swfm1NvnZTXg9AH8YLvhu0fTK8sgXI6nBkvqTkozedWFhq8jmH1SFbs1yVZoKoKpFaYV6-vuTFcUO9G9-5W0YVdfliTuEOf42QHtkWLZ8jj1Xhmk9rTBYjb7P4KmRm7b7UhQ6FamvpVv9vXlCQvWAafnPgT98ViFlr6z7ByNHrI=", "RequestId": "8B813042-7F00-45CE-AF8C-85CCEEFC6BA2", "MaxResults": 50 } 返回结果列举了模板信息。 返回结果为JSON格式。为了便于查看和美观,API文档返回示例均有换行和缩进等处理,实际返回结果无换行和缩进处理。 正常返回示例 接口调用成功后会返回接口返回参数和请求ID,我们称这样的返回为正常返回。HTTP状态码为2xx。 JSON示例 { "RequestId": "AC467B38-3910-447D-87BC-AC049166F216" /* 返回结果数据 */ } 异常返回示例 接口调用出错后,会返回错误码、错误信息和请求ID,我们称这样的返回为异常返回。HTTP状态码为4xx或者5xx。 您可以根据接口错误码,参考公共错误码以及API错误中心排查错误。当您无法排查错误时,可以提交工单联系我们,并在工单中注明服务节点HostId和RequestId。 JSON示例 { "RequestId": "A40CFF28-407A-40B5-B6A5-AC049166F216", /* 请求 ID / "HostId": "oos.cn-hangzhou.aliyuncs.com", / 服务节点 / "Code": "InvalidNextToken", / 错误码 / "Message": "NextToken is invalid" / 错误信息 / } 公共错误码 错误代码 HTTP状态码 错误信息 描述 InvalidVersion 400 Specified parameter Version is not valid. 给定的Version非法。请检查URL中指定的Version的正确性。 InvalidAction.NotFound 400 Specified api is not found, please check your url and method. 给定的API不存在。请检查URL中指定的Action的正确性。 Throttling.User 400 Request was denied due to user flow control. 访问频率太高导致流控。 InvalidParameter 400 内容随校验场景不同而不同,如 TemplateName can not contain “” 参数非法。请根据错误信息来检查指定参数的正确性。 User.NoPermission 400 User has no permission to do the action: ({api_name}) 用户没有调用某个API的权限。请检查是否在RAM中给当前用户赋予了OOS的API的权限。 InvalidStsToken 400 Invalid STS token to do the action: ({api_name}) 给定的STS Token非法。 ExpiredStsToken 400 Expired STS token to do the action: ({api_name}) 给定的STS Token过期。 MissingParameter 400 The Parameter ({name}) was not provided. 缺少必填参数。 QuotaExceed 400 The Quota ({key}) exceeded ({value}). 特定属性(如模板数量、正在运行的执行数等)超过上限。 InvalidAccountType 400 The account type ({account_type}) was not supported. 不支持给定的账号类型。 TemplateValidationError 400 {reason} 模板约束,如参数类型、数值等,校验不通过。 InvalidFunctionParameters 400 The specified function {fn_name}’s parameters are incorrect. 模板中使用函数时给定的参数校验错误。请检查参数的数量和值。 InvalidTemplateReference 400 The specified reference {resource} (in {key}) is incorrect. 模板内参数引用不正确。 UnknownUserParameter 400 The parameter ({key}) was not defined in engine. 模板中给定的参数未定义或不被支持。 InvalidTimerTriggerParameter 400 The parameter ({key}) is invalid TimerTrigger动作的给定参数非法。 InvalidTemplateParameter 400 The parameter ({key}) has no attributes. 模板中的Parameters类型非法,必须为字典。

1934890530796658 2020-03-24 11:32:55 0 浏览量 回答数 0

问题

Xpath-使用带有部分文本的多个属性的复合语句

montos 2020-03-26 19:07:02 1 浏览量 回答数 1

回答

这是由于当使用host参数为“localhost”连接Mysql服务时,会优先使用“sock文件”进行连接,而不是使用“IP:端口”进行连接,而mysql尝试使用“sock文件”进行连接时,却无法获取“sock文件”的位置。 要解决此错误,有两种解决方法: 将连接参数“host”的值由“localhost”改成“127.0.0.1”; 按下面方法,在“/etc/mysql.cnf”中指定“sock文件”位置。 一、查看mysql服务的socket文件位置:   mysql socket文件的位置是在/etc/my.cnf中设置的,cat /etc/my.cnf内容如下: [mysqld] datadir=/storage/aiezu.com/mysql socket=/storage/aiezu.com/mysql/mysql.sock user=mysql   其中socket等于的路径就是socket文件的位置,我们只要修改my.cnf文件,告诉mysql,mysqldump,mysqladmin等mysql服务的socket位置在哪里就可以了,文件中可以看出,我的socket文件位置为:"/storage/aiezu.com/mysql/mysql.sock"。   二、修改my.cnf文件解决问题:   在/etc/my.cnf文件中添加如下内容,并重启mysqld服务,即可解决mysql、mysqldump、mysqladmin的“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”问题: [mysqld] datadir=/storage/aiezu.com/mysql socket=/storage/aiezu.com/mysql/mysql.sock [mysql] socket=/storage/aiezu.com/mysql/mysql.sock [client] socket=/storage/aiezu.com/mysql/mysql.sock [mysqldump] socket=/storage/aiezu.com/mysql/mysql.sock [mysqladmin] socket=/storage/aiezu.com/mysql/mysql.sock 三、php连接mysql服务提示"Can't connect to local MySQL server through socket..."的解决方法:   有时候mysql服务正常运行,用户名密码也完全正确,使用php的mysql_connect函数却连接不了mysql,调用php的mysql_error()函数提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”,这是我们需要修改/etc/php.ini文件。   在/etc/php.ini文件中"[MySQL]"项下找到"mysql.default_socket",并设置其值指向正确的mysql服务socket文件即可,如: [MySQL] ...省略n行... mysql.default_socket = "/storage/aiezu.com/mysql/mysql.sock" 四、python连接mysql提示"Can't connect to local MySQL server through socket..."的解决方法:   在连接mysql数据库函数中指定socket文件,如下: #!/usr/bin/python from MySQLdb import connect conn = connect(db="pzy", user="root", host="localhost", unix_socket="/storage/aiezu.com/mysql/mysql.sock") cur = conn.cursor() count=cur.execute("show databases") print 'there has %s dbs' % count conn.commit() conn.close() 五、 php pdo连接mysql提示"Can't connect to local MySQL server through socket..."的解决方法:   同样在连接字符串添加mysql socket文件的位置即可,如下: query("SELECT * FROM qrtest"); while($row = $rs->fetch()){ print_r($row); } ?> 如还有疑问,请联系客服 到阿里云会员中心提交工单,让售后帮你检查看看。 或点击右侧的浮标:联系我们 更多阿里云帮助文档 https://help.aliyun.com 希望对您有帮助!

阿里朵 2019-12-02 03:03:28 0 浏览量 回答数 0

问题

订阅日志服务数据的用户手册

云栖大讲堂 2019-12-01 20:56:31 1339 浏览量 回答数 0

问题

分析型数据库发展历史/Release Note是什么?

nicenelly 2019-12-01 21:24:52 1080 浏览量 回答数 0

问题

分析型数据库发展历史/Release Note是什么?

nicenelly 2019-12-01 21:08:38 1273 浏览量 回答数 0

回答

前提条件 您需要开通容器服务和访问控制(RAM)服务。 登录 容器服务管理控制台和RAM 管理控制台开通相应的服务。 说明 用户账户需有 100 元的余额并通过实名认证,否则无法创建按量付费的 ECS 实例和负载均衡。 随集群一同创建的负载均衡实例只支持按量付费的方式。 Kubernetes 集群仅支持专有网络 VPC。 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。请在创建集群前确认您的配额。如果您需要提高配额,请提交工单申请。 每个账号默认最多可以创建 5 个集群(所有地域下),每个集群中最多可以添加 40 个节点。如果您需要创建更多的集群或者节点,请提交工单申请。 说明 Kubernetes 集群中,VPC 默认路由条目不超过 48 条,意味着 Kubernetes 集群使用 VPC 时,默认节点上限是 48 个,如果需要更大的节点数,需要您先对目标 VPC 开工单,提高 VPC 路由条目,再对容器服务提交工单。 每个账号默认最多可以创建 100 个安全组。 每个账号默认最多可以创建 60 个按量付费的负载均衡实例。 每个账号默认最多可以创建 20 个EIP。 创建安全沙箱容器 Kubernetes 集群时,以下界面参数需要按照表中的要求配置,否则创建的集群将无法使用安全沙箱容器的场景。 参数 配置 可用区 目前只有神龙实例支持安全沙箱容器,请确保所选可用区有神龙实例。 kubernetes 版本 1.14.6-aliyun.1 或更高版本。 容器运行时 安全沙箱容器 Worker 实例 新增实例 节点类型 包年包月 实例规格 神龙裸金属服务器(神龙) 挂载数据盘 请至少挂载一块不小于 200GiB 的数据盘,建议 1T+。 操作系统类型 Linux 网络插件 Terway 操作步骤 登录容器服务管理控制台。 在控制台左侧导航栏中,选择集群 > 集群,进入集群列表页面。 单击页面右上角的创建 Kubernetes 集群,在弹出的选择集群模板页面,选择标准托管集群页面,并单击创建,进入Kubernetes 托管版页面。 集群配置页面 完成集群配置。 完成集群基础选项配置。 配置项 描述 集群名称 填写集群的名称。 说明 集群名称应包含 1~63 个字符,可包含数字、汉字、英文字符或连字符(-)。 Kubernetes 版本 选择 1.14.6-aliyun.1 或更高版本。 容器运行时 必须选择安全沙箱容器。 地域 选择集群所在的地域。 资源组 将鼠标悬浮于页面上方的账号全部资源,选择集群所在的资源组。这里显示选择的资源组。 专有网络 设置集群的网络。 说明 Kubernetes 集群仅支持专有网络。您可以在已有 VPC 列表中选择所需的 VPC。如果没有您需要的专有网络,可以通过单击创建专有网络进行创建,请参见创建专有网络。 虚拟交换机 设置虚拟交换机。 说明 您可以在已有虚拟交换机列表中,根据可用区选择 1-3 个交换机 。如果没有您需要的交换机,可以通过单击创建虚拟交换机进行创建,请参见创建交换机。 网络插件 安全沙箱容器集群的网络类型目前仅支持 Terway 。具体请参见如何使用Terway网络插件。 指定 Terway 网络插件需要为 Pod 选择可用的 VSwitch,这些 VSwitch 的网段掩码必须小于或等于 19,例如 172.17.128.0/19;当集群创建 Pod 时,会为 Pod 从选定的那些 VSwitch 网段中分配 IP。 Pod 虚拟交换机 您需要为 Pod 分配 IP 的虚拟交换机。每个 Pod 虚拟交换机分别对应一个 Worker 实例的虚拟交换机。 Service CIDR 您需要指定 Service CIDR,网段不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复,创建成功后不能修改。而且 Service 地址段也不能和 Pod 地址段重复,有关 Kubernetes 网络地址段规划的信息,请参见VPC下 Kubernetes 的网络地址段规划。 配置 SNAT 设置是否为专有网络配置 SNAT 网关。 说明 如果您使用的 VPC 中当前已有 NAT 网关,容器服务会使用已有的 NAT 网关。 如果 VPC 中没有 NAT 网关,系统会默认自动为您创建一个 NAT 网关。如果您不希望系统自动创建 NAT 网关,可以取消勾选页面下方的为专有网络配置 SNAT。此时您需要自行配置 NAT 网关实现 VPC 安全访问公网环境,或者手动配置 SNAT,否则 VPC 内实例将不能正常访问公网,会导致集群创建失败。 公网访问 设置是否开放使用 EIP 暴露 API Server。 说明 API Server 提供了各类资源对象(Pod,Service 等)的增删改查及 watch 等 HTTP Rest 接口。 如果选择开放,会创建一个 EIP,并挂载到内网 SLB 上。此时,Master 节点的 6443 端口(对应 API Server)暴露出来,用户可以在外网通过 kubeconfig 连接或操作集群。 如果选择不开放,则不会创建 EIP,用户只能在 VPC 内部用 kubeconfig 连接并操作集群。 RDS 白名单 设置 RDS 白名单。将节点 IP 添加到 RDS 实例的白名单中。 说明 允许白名单 RDS 访问 Kubernetes 集群,RDS 必须在当前集群的 VPC 内。 自定义安全组 设置安全组。单击请选择安全组,在弹出的页面选中目标安全组,单击确定。 详细内容请参见安全组概述。 说明 当前只有白名单用户可使用该功能。提交工单申请使用。 完成集群高级选项配置。 配置项 描述 kube-proxy 代理模式 支持 iptables 和 IPVS 两种模式。 iptables:成熟稳定的 kube-proxy 代理模式,Kubernetes service 的服务发现和负载均衡使用 iptables 规则配置,但性能一般,受规模影响较大,适用于集群存在少量的 service。 IPVS:高性能的 kube-proxy 代理模式,Kubernetes service 的服务发现和负载均衡使用 Linux ipvs 模块进行配置,适用于集群存在大量的 service,对负载均衡有高性能要求的场景。 标签 为集群绑定标签。输入键和对应的值,单击添加。 说明 键是必需的,而 值 是可选的,可以不填写。 键不能是 aliyun、http:// 、https:// 开头的字符串,不区分大小写,最多 64 个字符。 值不能是 http:// 或 https://,可以为空,不区分大小写,最多 128 个字符。 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。 如果一个资源已经绑定了 20 个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。 集群本地域名 设置是否配置集群本地域名。 说明 默认域名为 cluster.local,可自定义域名。域名由两段组成,每段不超过 63 个字符,且只能使用大小写字母和数字,不能为空。 集群删除保护 设置是否启用集群删除保护。为防止通过控制台或 API 误释放集群。 单击下一步:Worker 配置,完成 Worker 节点配置。 说明 安全沙箱容器场景下, Worker 节点仅支持神龙工作节点,选择神龙型号为 ecs.ebmg5s.24xlarge 完成 Work 节点基础选项配置。 配置项 描述 Worker 实例 只支持新增实例,暂不支持添加已有实例。 付费类型 神龙实例付费模式只支持包年包月,不支持按量付费。 购买时长 选择包年包月时,需设置购买时长。目前支持选择 1、2、3、6 和12 个月。 自动续费 选择包年包月时,需设置是否自动续费。 实例规格 目前机型仅支持神龙裸金属服务器(神龙),该机型的实例规格均可使用。 已选规格 已选的实例规格。只能选择一个规格。 数量 新增 Worker 实例的数量。 系统盘 支持 SSD 云盘和高效云盘。 挂载数据盘 支持 SSD 云盘、高效云盘和普通云盘。 说明 挂载的数据盘用于存储节点上所有容器的根文件系统。因此,请至少挂载一块不小于 200 GiB 的数据盘,建议 1T 以上。 操作系统 安全沙箱容器集群仅支持 Linux 系统。 登录方式 设置密钥。 您需要在创建集群的时候选择密钥对登录方式,单击新建密钥对,跳转到 ECS 云服务器控制台,创建密钥对,参见创建SSH密钥对。密钥对创建完毕后,设置该密钥对作为登录集群的凭据。 设置密码。 登录密码:设置节点的登录密码。 确认密码:确认设置的节点登录密码。 密钥对 设置高级选项。 配置项 描述 实例保护 设置是否启用实例保护。 说明 为防止通过控制台或 API 误释放集群节点,默认启用实例保护。 实例自定义数据 请参见生成实例自定义数据。 自定义镜像 不要选择自定义镜像。安全沙箱容器集群不支持使用自定义镜像。 自定义节点名称 是否开启自定义节点名称。 节点名称由前缀 + 节点 IP 地址子串 + 后缀三部分组成: 前缀和后缀均可由.分隔的一个或多个部分构成,每个部分可以使用小写字母、数字和-,且首尾必须为小写字母和数字。 IP 地址段长度指截取节点 IP 地址末尾的位数,取值范围 5-12。 例如:节点 IP 地址为192.168.0.55,指定前缀为 aliyun.com,IP 地址段长度为 5,后缀为 test,则节点名称为aliyun.com00055test。 CPU Policy 设置 CPU policy。 none:默认策略,表示启用现有的默认 CPU 亲和方案。 static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占性。 污点(Taints) 为集群内所有Worker节点添加污点。 单击下一步:组件配置,完成组件配置。 配置项 描述 Ingress 设置是否安装 Ingress 组件。默认勾选安装 Ingress 组件 ,请参见 Ingress 支持。 说明 如果您勾选创建 Ingress Dashboard,则需要同步安装日志服务组件。 存储插件 设置存储插件,支持 Flexvolume 和 CSI。Kubernetes 集群通过 Pod 可自动绑定阿里云云盘、NAS、 OSS 存储服务。请参见存储管理-Flexvolume 和存储管理-CSI。 云监控插件 设置是否启用云监控插件。您可以选择在 ECS 节点上安装云监控插件,从而在云监控控制台查看所创建 ECS 实例的监控信息。 日志服务 设置是否启用日志服务,您可使用已有 Project 或新建一个 Project。 勾选使用日志服务,会在集群中自动配置日志服务插件。创建应用时,您可通过简单配置,快速使用日志服务,详情参见使用日志服务进行Kubernetes日志采集。 工作流引擎 设置是否使用 AGS。 如果勾选 AGS,则创建集群时系统自动安装 AGS 工作流插件。 如果不勾选,则需要手动安装 AGS 工作流插件,请参见AGS命令行帮助。 可选组件 在系统组件之外,还可以选择安装容器服务提供的其他组件。 单击创建集群,在弹出的当前配置确认页面,单击创建,启动部署。 说明 一个包含多节点的 Kubernetes 集群的创建时间一般约为十分钟。 执行结果 集群创建成功后,您可以在容器服务管理控制台的 Kubernetes 集群列表页面查看所创建的集群。集群列表 您可以单击集群操作列的查看日志,进入集群日志信息页面查看集群的日志信息。 您也可以在集群日志信息页面中,单击资源栈事件查看更详细的信息。集群日志详情 在集群列表页面中,找到刚创建的集群,单击操作列中的管理,查看集群的基本信息和连接信息。集群基本信息 其中: API Server 公网连接端点:Kubernetes 的 API Server 对公网提供服务的地址和端口,可以通过此服务在用户终端使用 kubectl 等工具管理集群。 API Service 内网连接端点:Kubernetes 的 API server 对集群内部提供服务的地址和端口,此 IP 为负载均衡的地址。 Pod网络CIDR:Kubernetes 的 Pod CIDR 定义集群内 Pod 的网段范围。 Service CIDR:Kubernetes 的 Service CIDR 定义集群内暴露服务的网段范围。 测试域名:为集群中的服务提供测试用的访问域名。服务访问域名后缀是 <cluster_id>.<region_id>.alicontainer.com。 kube-proxy 代理模式:Kubernetes service 的服务发现和负载均衡需要通过服务代理进行配置,支持 iptables 和 IPVS 两种模式。 节点 Pod 数量:单个节点可运行 Pod 数量的上限,默认值为 128。 您可以通过kubectl连接Kubernetes集群,执行 kubectl get node查看集群的节点信息。集群结果

huc_逆天 2020-03-26 18:16:45 0 浏览量 回答数 0

回答

您可以通过容器服务控制台非常方便的创建安全沙箱容器集群。 前提条件 您需要开通容器服务和访问控制(RAM)服务。 登录 容器服务管理控制台和RAM 管理控制台开通相应的服务。 说明 用户账户需有 100 元的余额并通过实名认证,否则无法创建按量付费的 ECS 实例和负载均衡。 随集群一同创建的负载均衡实例只支持按量付费的方式。 Kubernetes 集群仅支持专有网络 VPC。 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。请在创建集群前确认您的配额。如果您需要提高配额,请提交工单申请。 每个账号默认最多可以创建 5 个集群(所有地域下),每个集群中最多可以添加 40 个节点。如果您需要创建更多的集群或者节点,请提交工单申请。 说明 Kubernetes 集群中,VPC 默认路由条目不超过 48 条,意味着 Kubernetes 集群使用 VPC 时,默认节点上限是 48 个,如果需要更大的节点数,需要您先对目标 VPC 开工单,提高 VPC 路由条目,再对容器服务提交工单。 每个账号默认最多可以创建 100 个安全组。 每个账号默认最多可以创建 60 个按量付费的负载均衡实例。 每个账号默认最多可以创建 20 个EIP。 创建安全沙箱容器 Kubernetes 集群时,以下界面参数需要按照表中的要求配置,否则创建的集群将无法使用安全沙箱容器的场景。 参数 配置 可用区 目前只有神龙实例支持安全沙箱容器,请确保所选可用区有神龙实例。 kubernetes 版本 1.14.6-aliyun.1 或更高版本。 容器运行时 安全沙箱容器 Worker 实例 新增实例 节点类型 包年包月 实例规格 神龙裸金属服务器(神龙) 挂载数据盘 请至少挂载一块不小于 200GiB 的数据盘,建议 1T+。 操作系统类型 Linux 网络插件 Terway 操作步骤 登录容器服务管理控制台。 在控制台左侧导航栏中,选择集群 > 集群,进入集群列表页面。 单击页面右上角的创建 Kubernetes 集群,在弹出的选择集群模板页面,选择标准托管集群页面,并单击创建,进入Kubernetes 托管版页面。 集群配置页面 完成集群配置。 完成集群基础选项配置。 配置项 描述 集群名称 填写集群的名称。 说明 集群名称应包含 1~63 个字符,可包含数字、汉字、英文字符或连字符(-)。 Kubernetes 版本 选择 1.14.6-aliyun.1 或更高版本。 容器运行时 必须选择安全沙箱容器。 地域 选择集群所在的地域。 资源组 将鼠标悬浮于页面上方的账号全部资源,选择集群所在的资源组。这里显示选择的资源组。 专有网络 设置集群的网络。 说明 Kubernetes 集群仅支持专有网络。您可以在已有 VPC 列表中选择所需的 VPC。如果没有您需要的专有网络,可以通过单击创建专有网络进行创建,请参见创建专有网络。 虚拟交换机 设置虚拟交换机。 说明 您可以在已有虚拟交换机列表中,根据可用区选择 1-3 个交换机 。如果没有您需要的交换机,可以通过单击创建虚拟交换机进行创建,请参见创建交换机。 网络插件 安全沙箱容器集群的网络类型目前仅支持 Terway 。具体请参见如何使用Terway网络插件。 指定 Terway 网络插件需要为 Pod 选择可用的 VSwitch,这些 VSwitch 的网段掩码必须小于或等于 19,例如 172.17.128.0/19;当集群创建 Pod 时,会为 Pod 从选定的那些 VSwitch 网段中分配 IP。 Pod 虚拟交换机 您需要为 Pod 分配 IP 的虚拟交换机。每个 Pod 虚拟交换机分别对应一个 Worker 实例的虚拟交换机。 Service CIDR 您需要指定 Service CIDR,网段不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复,创建成功后不能修改。而且 Service 地址段也不能和 Pod 地址段重复,有关 Kubernetes 网络地址段规划的信息,请参见VPC下 Kubernetes 的网络地址段规划。 配置 SNAT 设置是否为专有网络配置 SNAT 网关。 说明 如果您使用的 VPC 中当前已有 NAT 网关,容器服务会使用已有的 NAT 网关。 如果 VPC 中没有 NAT 网关,系统会默认自动为您创建一个 NAT 网关。如果您不希望系统自动创建 NAT 网关,可以取消勾选页面下方的为专有网络配置 SNAT。此时您需要自行配置 NAT 网关实现 VPC 安全访问公网环境,或者手动配置 SNAT,否则 VPC 内实例将不能正常访问公网,会导致集群创建失败。 公网访问 设置是否开放使用 EIP 暴露 API Server。 说明 API Server 提供了各类资源对象(Pod,Service 等)的增删改查及 watch 等 HTTP Rest 接口。 如果选择开放,会创建一个 EIP,并挂载到内网 SLB 上。此时,Master 节点的 6443 端口(对应 API Server)暴露出来,用户可以在外网通过 kubeconfig 连接或操作集群。 如果选择不开放,则不会创建 EIP,用户只能在 VPC 内部用 kubeconfig 连接并操作集群。 RDS 白名单 设置 RDS 白名单。将节点 IP 添加到 RDS 实例的白名单中。 说明 允许白名单 RDS 访问 Kubernetes 集群,RDS 必须在当前集群的 VPC 内。 自定义安全组 设置安全组。单击请选择安全组,在弹出的页面选中目标安全组,单击确定。 详细内容请参见安全组概述。 说明 当前只有白名单用户可使用该功能。提交工单申请使用。 完成集群高级选项配置。 配置项 描述 kube-proxy 代理模式 支持 iptables 和 IPVS 两种模式。 iptables:成熟稳定的 kube-proxy 代理模式,Kubernetes service 的服务发现和负载均衡使用 iptables 规则配置,但性能一般,受规模影响较大,适用于集群存在少量的 service。 IPVS:高性能的 kube-proxy 代理模式,Kubernetes service 的服务发现和负载均衡使用 Linux ipvs 模块进行配置,适用于集群存在大量的 service,对负载均衡有高性能要求的场景。 标签 为集群绑定标签。输入键和对应的值,单击添加。 说明 键是必需的,而 值 是可选的,可以不填写。 键不能是 aliyun、http:// 、https:// 开头的字符串,不区分大小写,最多 64 个字符。 值不能是 http:// 或 https://,可以为空,不区分大小写,最多 128 个字符。 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。 如果一个资源已经绑定了 20 个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。 集群本地域名 设置是否配置集群本地域名。 说明 默认域名为 cluster.local,可自定义域名。域名由两段组成,每段不超过 63 个字符,且只能使用大小写字母和数字,不能为空。 集群删除保护 设置是否启用集群删除保护。为防止通过控制台或 API 误释放集群。 单击下一步:Worker 配置,完成 Worker 节点配置。 说明 安全沙箱容器场景下, Worker 节点仅支持神龙工作节点,选择神龙型号为 ecs.ebmg5s.24xlarge 完成 Work 节点基础选项配置。 配置项 描述 Worker 实例 只支持新增实例,暂不支持添加已有实例。 付费类型 神龙实例付费模式只支持包年包月,不支持按量付费。 购买时长 选择包年包月时,需设置购买时长。目前支持选择 1、2、3、6 和12 个月。 自动续费 选择包年包月时,需设置是否自动续费。 实例规格 目前机型仅支持神龙裸金属服务器(神龙),该机型的实例规格均可使用。 已选规格 已选的实例规格。只能选择一个规格。 数量 新增 Worker 实例的数量。 系统盘 支持 SSD 云盘和高效云盘。 挂载数据盘 支持 SSD 云盘、高效云盘和普通云盘。 说明 挂载的数据盘用于存储节点上所有容器的根文件系统。因此,请至少挂载一块不小于 200 GiB 的数据盘,建议 1T 以上。 操作系统 安全沙箱容器集群仅支持 Linux 系统。 登录方式 设置密钥。 您需要在创建集群的时候选择密钥对登录方式,单击新建密钥对,跳转到 ECS 云服务器控制台,创建密钥对,参见创建SSH密钥对。密钥对创建完毕后,设置该密钥对作为登录集群的凭据。 设置密码。 登录密码:设置节点的登录密码。 确认密码:确认设置的节点登录密码。 密钥对 设置高级选项。 配置项 描述 实例保护 设置是否启用实例保护。 说明 为防止通过控制台或 API 误释放集群节点,默认启用实例保护。 实例自定义数据 请参见生成实例自定义数据。 自定义镜像 不要选择自定义镜像。安全沙箱容器集群不支持使用自定义镜像。 自定义节点名称 是否开启自定义节点名称。 节点名称由前缀 + 节点 IP 地址子串 + 后缀三部分组成: 前缀和后缀均可由.分隔的一个或多个部分构成,每个部分可以使用小写字母、数字和-,且首尾必须为小写字母和数字。 IP 地址段长度指截取节点 IP 地址末尾的位数,取值范围 5-12。 例如:节点 IP 地址为192.168.0.55,指定前缀为 aliyun.com,IP 地址段长度为 5,后缀为 test,则节点名称为aliyun.com00055test。 CPU Policy 设置 CPU policy。 none:默认策略,表示启用现有的默认 CPU 亲和方案。 static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占性。 污点(Taints) 为集群内所有Worker节点添加污点。 单击下一步:组件配置,完成组件配置。 配置项 描述 Ingress 设置是否安装 Ingress 组件。默认勾选安装 Ingress 组件 ,请参见 Ingress 支持。 说明 如果您勾选创建 Ingress Dashboard,则需要同步安装日志服务组件。 存储插件 设置存储插件,支持 Flexvolume 和 CSI。Kubernetes 集群通过 Pod 可自动绑定阿里云云盘、NAS、 OSS 存储服务。请参见存储管理-Flexvolume 和存储管理-CSI。 云监控插件 设置是否启用云监控插件。您可以选择在 ECS 节点上安装云监控插件,从而在云监控控制台查看所创建 ECS 实例的监控信息。 日志服务 设置是否启用日志服务,您可使用已有 Project 或新建一个 Project。 勾选使用日志服务,会在集群中自动配置日志服务插件。创建应用时,您可通过简单配置,快速使用日志服务,详情参见使用日志服务进行Kubernetes日志采集。 工作流引擎 设置是否使用 AGS。 如果勾选 AGS,则创建集群时系统自动安装 AGS 工作流插件。 如果不勾选,则需要手动安装 AGS 工作流插件,请参见AGS命令行帮助。 可选组件 在系统组件之外,还可以选择安装容器服务提供的其他组件。 单击创建集群,在弹出的当前配置确认页面,单击创建,启动部署。 说明 一个包含多节点的 Kubernetes 集群的创建时间一般约为十分钟。 执行结果 集群创建成功后,您可以在容器服务管理控制台的 Kubernetes 集群列表页面查看所创建的集群。集群列表 您可以单击集群操作列的查看日志,进入集群日志信息页面查看集群的日志信息。 您也可以在集群日志信息页面中,单击资源栈事件查看更详细的信息。集群日志详情 在集群列表页面中,找到刚创建的集群,单击操作列中的管理,查看集群的基本信息和连接信息。集群基本信息 其中: API Server 公网连接端点:Kubernetes 的 API Server 对公网提供服务的地址和端口,可以通过此服务在用户终端使用 kubectl 等工具管理集群。 API Service 内网连接端点:Kubernetes 的 API server 对集群内部提供服务的地址和端口,此 IP 为负载均衡的地址。 Pod网络CIDR:Kubernetes 的 Pod CIDR 定义集群内 Pod 的网段范围。 Service CIDR:Kubernetes 的 Service CIDR 定义集群内暴露服务的网段范围。 测试域名:为集群中的服务提供测试用的访问域名。服务访问域名后缀是 <cluster_id>.<region_id>.alicontainer.com。 kube-proxy 代理模式:Kubernetes service 的服务发现和负载均衡需要通过服务代理进行配置,支持 iptables 和 IPVS 两种模式。 节点 Pod 数量:单个节点可运行 Pod 数量的上限,默认值为 128。 您可以通过kubectl连接Kubernetes集群,执行 kubectl get node查看集群的节点信息。集群结果 上一篇:概述

1934890530796658 2020-03-26 18:10:44 0 浏览量 回答数 0

回答

问题描述 使用SSH登录Linux实例时,提示如下错误信息,导致无法正常连接Linux实例。 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is ae:6e:68:4c:97:a6:91:81:11:38:8d:64:ff:92:13:50. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:70 RSA host key for x.x.x.x has changed and you have requested strict checking. Host key verification failed. 若客户端为Windows环境,以常见的SSH客户端为例,连接时提示如下错误。 X.X.X.X (端口:XX)的主机密钥与本地主机密钥数据库中保存的不一致。主机密钥已更改或有人试图监听此连接。若无法确定,建议取消此连接。 问题原因 Linux实例进行过重装系统,账户信息变更等使其SSH公钥变更,造成客户端保存的公钥指纹与服务器端不一致,导致SSH认证失败拒绝登录。 解决方案 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 本文相关Linux配置及说明已在CentOS 6.5 64 位操作系统中进行过测试。其它操作系统版本配置可能有所差异,具体情况请参阅相应操作系统官方文档。 客户端为Windows环境 如果客户端是Windows环境,而且使用SSH客户端Putty连接Windows实例,您可以参考以下步骤进行操作。 启动Putty。 在登录页面,单击 Delete,删除登录会话。 Image2.png 重新使用用户名及密码登录实例,确认保存新的公钥指纹后,即可成功登录。 注:您也可以在弹出相关告警信息时,单击 接收并保存,让程序自动更新密钥指纹信息,即可成功登录实例。 客户端为Linux环境 如果客户端是Linux环境,您可以参考以下步骤进行操作。 执行如下命令,进入对应账号的known_hosts文件。 vi ~/.ssh/known_hosts 按 i 键进入编辑模式。 删除Linux实例IP对应的条目,如下图所示。 TB1yJ8YJVXXXXXqXFXXXXXXXXXX.png 输入:wq保存并退出。 重新连接Linux实例,确认保存新的公钥指纹后,即可成功登录。 更多信息 由于公钥一般较长,采用RSA算法时长达1024位,为了简便起见,通过对其MD5计算,生成一个128位的字符串用于信息对比,称为公钥指纹。 相关文档 若还有问题没解决,请参考如下文档,做进一步的排查分析。 云服务器 ECS Linux SSH 无法登录问题排查指引 适用于 云服务器 ECS 如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。

1934890530796658 2020-03-25 23:07:37 0 浏览量 回答数 0

回答

本文以专有版Kubernetes集群为例,介绍如何使用控制台快速创建Kubernetes集群。 前提条件 登录容器服务管理控制台 、RAM 管理控制台和弹性伸缩控制台开通相应的服务。 关于使用限制和说明,参见创建Kubernetes集群。 背景信息 本例将演示如何快速创建一个Kubernetes集群,部分配置采用默认或最简配置。 操作步骤 登录容器服务管理控制台。 在控制台左侧导航栏中,选择集群 > 集群,进入集群列表页面。 单击页面右上角的创建Kubernetes集群,在弹出的选择集群模板页面中,选择标准专有集群。单击创建,进入Kubernetes专有版 的集群配置页面。 创建k8s 配置集群参数。 本例中大多数配置保留默认值,具体的配置如下。 配置项 配置说明 集群名称 名称为1-63个字符,可包含数字、汉字、英文字符,或"-"。 地域 集群所处地域。 资源组 集群所处的资源组。 Kubernetes版本和容器运行时 显示容器运行时和Kubernetes版本,您可根据需要选择Kubernetes版本。 专有网络 集群的专有网络。 您可以在已有VPC列表中选择所需的VPC 。 如果您使用的VPC中当前已有NAT网关,容器服务会使用已有的NAT网关。 如果VPC中没有NAT网关,系统会默认自动为您创建一个NAT网关。如果您不希望系统自动创建NAT网关,可以取消勾选页面下方的为专有网络配置SNAT。 说明 若选择不自动创建NAT网关,您需要自行配置NAT网关实现VPC安全访问公网环境,或者手动配置SNAT,否则VPC内实例将不能正常访问公网,会导致集群创建失败。 虚拟交换机 集群的虚拟交换机。您可以在已有vswitch列表中选择所需的vswitch 。 您可以根据需要,选择1~3个 vswitch。推荐您选择3个vswitch。 网络插件 支持Flannel和Terway,默认启用Flannel。具体可参见如何使用Terway网络插件。 Pod网络CIDR和Service CIDR 具体如何规划可参见VPC下Kubernetes的网络地址段规划。 节点IP数量 可分配给一个节点的IP数量。 配置SNAT 可选,若不选择,需要自行配置NAT网关,或手动配置SNAT。 公网访问 如果选择开放,会创建一个EIP,并挂载到内网SLB上。此时,Master节点的6443端口(对应API Server)暴露出来,用户可以在外网通过kubeconfig连接或操作集群。 若选择不开放,不会创建EIP,用户只能在VPC内部用kubeconfig连接/操作集群。 SSH登录 选择开放公网 SSH 登录,您可以 SSH 访问集群。 选择不开放公网 SSH 登录,将无法通过 SSH 访问集群,也无法通过 kubectl 连接集群。您可手动进行配置,具体操作参见SSH访问Kubernetes集群 。 RDS白名单 将节点 IP 添加到 RDS 实例的白名单。 自定义安全组 设置安全组。单击请选择安全组,在弹出的页面选中目标安全组,单击确定。 详细内容请参见安全组概述。 说明 当前只有白名单用户可使用该功能。提交工单申请使用。 高级选项(集群配置) kube-proxy代理模式:支持 iptables 和 IPVS 两种模式。 iptables:成熟稳定的kube-proxy代理模式,Kubernetes service的服务发现和负载均衡使用iptables规则配置,但性能一般,受规模影响较大,适用于集群存在少量的service。 IPVS:高性能的kube-proxy代理模式,Kubernetes service的服务发现和负载均衡使用Linux ipvs模块进行配置,适用于集群存在大量的service,对负载均衡有高性能要求的场景。 标签:为集群绑定标签。 说明 键是必需的,而 值 是可选的,可以不填写。 键 不能是aliyun、http:// 、https://开头的字符串,不区分大小写,最多64个字符。 值 不能是http://或https://,可以为空,不区分大小写,最多128个字符。 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。 如果一个资源已经绑定了20个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。 集群本地域名: 默认域名为cluster.local,可自定义域名。 集群CA:设置是否开启集群CA。 如果勾选自定义集群CA,可以将CA证书添加到Kubernetes集群中,加强服务端和客户端之间信息交互的安全性。 集群删除保护:为防止通过控制台或API误释放集群。默认启用集群删除保护。 Master节点配置 选择付费类型、实例数量、实例规格和系统盘。 付费类型:支持按量付费和包年包月。 选择包年包月付费类型时,您可以设置购买时长及自动续费时长。 Master实例数量:选择3个或5个实例。 实例规格:参见实例规格族。 系统盘:支持SSD云盘和高效云盘。 Worker节点配置 您可选择新增实例或添加已有实例。若选择新增实例,可进行如下配置。 实例规格:支持选择多个实例规格。参见实例规格族。 已选规格:选中的规格呈现在这里。 数量:新增Worker实例的数量。 系统盘:支持SSD云盘和高效云盘。 挂载数据盘:支持SSD云盘和高效云盘。 说明 挂载数据盘时,支持云盘加密。 操作系统:操作系统类型支持 CentOS 7.7 和 AliyunLinux 2.1903。 登录方式:支持设置密钥和密码,关于使用密钥登录的信息,参见SSH密钥对访问Kubernetes集群。 高级选项(Worker配置) 实例保护:设置是否启用实例保护。 说明 为防止通过控制台或 API 误释放集群节点,默认启用实例保护。 实例自定义数据: 自定义镜像: 自定义节点名称: 节点服务端口范围:设置节点服务端口范围。默认端口范围为30000-32767。 CPU Policy:设置CPU Policy。 none:默认策略,表示启用现有的默认CPU亲和方案。 static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占性。 污点(Taints):为集群内所有Worker节点添加污点。 Ingress 在节点上安装Ingress组件。 说明 如果您勾选创建 Ingress Dashboard,则需要同步安装日志服务组件。 存储插件 设置存储插件,支持Flexvolume和CSI。详情请参见存储管理-Flexvolume 和存储管理-CSI。 云监控插件 在节点上安装云监控插件,可以在云监控控制台查看所创建ECS实例的监控信息。 日志服务 您可使用已有Project或新建一个Project。 勾选使用日志服务,会在集群中自动配置日志服务插件。创建应用时,您可通过简单配置,快速使用日志服务,详情参见使用日志服务进行Kubernetes日志采集。 工作流引擎 设置是否使用AGS。 如果勾选AGS,则创建集群时系统自动安装AGS工作流插件。 如果不勾选,则需要手动安装AGS工作流插件,请参见AGS命令行帮助。 单击创建集群,启动部署。 集群创建成功后,您可以在容器服务管理控制台的Kubernetes集群列表页面查看所创建的集群。 查看集群创建结果

1934890530796658 2020-03-26 11:41:08 0 浏览量 回答数 0

回答

索引,索引!!!为经常查询的字段建索引!! 但也不能过多地建索引。insert和delete等改变表记录的操作会导致索引重排,增加数据库负担。优化目标1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by, group by,distinct … 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算)。当我们的 IO 优化做到一定阶段之后,降低 CPU 计算也就成为了我们 SQL 优化的重要目标优化方法改变 SQL 执行计划 明确了优化目标之后,我们需要确定达到我们目标的方法。对于 SQL 语句来说,达到上述2个目标的方法其实只有一个,那就是改变 SQL 的执行计划,让他尽量“少走弯路”,尽量通过各种“捷径”来找到我们需要的数据,以达到 “减少 IO 次数” 和 “降低 CPU 计算” 的目标分析复杂的SQL语句explain 例如: mysql> explain select from (select from ( select * from t3 where id=3952602) a) b; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY system NULL NULL NULL NULL 1 2 DERIVED system NULL NULL NULL NULL 1 3 DERIVED t3 const PRIMARY,idx_t3_id PRIMARY 4 1 很显然这条SQL是从里向外的执行,就是从id=3 向上执行.show show tables或show tables from database_name; // 显示当前数据库中所有表的名称 show databases; // 显示mysql中所有数据库的名称 show columns from table_name from database_name; 或MySQL show columns from database_name.table_name; // 显示表中列名称 show grants for user_name@localhost; // 显示一个用户的权限,显示结果类似于grant 命令 show index from table_name; // 显示表的索引 show status; // 显示一些系统特定资源的信息,例如,正在运行的线程数量 show variables; // 显示系统变量的名称和值show processlist; // 显示系统中正在运行的所有进程,也就是当前正在执行的查询。 show table status; // 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间 show privileges; // 显示服务器所支持的不同权限 show create database database_name; // 显示create database 语句是否能够创建指定的数据库 show create table table_name; // 显示create database 语句是否能够创建指定的数据库 show engies; // 显示安装以后可用的存储引擎和默认引擎。 show innodb status; // 显示innoDB存储引擎的状态 show logs; // 显示BDB存储引擎的日志 show warnings; // 显示最后一个执行的语句所产生的错误、警告和通知 show errors; // 只显示最后一个执行语句所产生的错误关于enum 存在争议。 对于取值有限且固定的字段,推荐使用enum而非varchar。但是!!其他数据库可能不支持,导致了难于迁移的问题。开启缓存查询 对于完全相同的sql,使用已经存在的执行计划,从而跳过解析和生成执行计划的过程。 应用场景:有一个不经常变更的表,且服务器收到该表的大量相同查询。对于频繁更新的表,查询缓存是不适合的 Mysql 判断是否命中缓存的办法很简单,首先会将要缓存的结果放在引用表中,然后使用查询语句,数据库名称,客户端协议的版本等因素算出一个hash值,这个hash值与引用表中的结果相关联。如果在执行查询时,根据一些相关的条件算出的hash值能与引用表中的数据相关联,则表示查询命中 查询必须是完全相同的(逐字节相同)才能够被认为是相同的。另外,同样的查询字符串由于其它原因可能认为是不同的。使用不同的数据库、不同的协议版本或者不同 默认字符集的查询被认为是不同的查询并且分别进行缓存。 下面sql查询缓存认为是不同的: SELECT * FROM tbl_name Select * from tbl_name 缓存机制失效的场景 如果查询语句中包含一些不确定因素时(例如包含 函数Current()),该查询不会被缓存,不确定因素主要包含以下情况 · 引用了一些返回值不确定的函数 · 引用自定义函数(UDFs)。 · 引用自定义变量。 · 引用mysql系统数据库中的表。 · 下面方式中的任何一种: SELECT ...IN SHARE MODE SELECT ...FOR UPDATE SELECT ...INTO OUTFILE ... SELECT ...INTO DUMPFILE ... SELECT * FROM ...WHERE autoincrement_col IS NULL · 使用TEMPORARY表。 · 不使用任何表。 · 用户有某个表的列级别权限。额外的消耗 如果使用查询缓存,在进行读写操作时会带来额外的资源消耗,消耗主要体现在以下几个方面 · 查询的时候会检查是否命中缓存,这个消耗相对较小 · 如果没有命中查询缓存,MYSQL会判断该查询是否可以被缓存,而且系统中还没有对应的缓存,则会将其结果写入查询缓存 · 如果一个表被更改了,那么使用那个表的所有缓冲查询将不再有效,并且从缓冲区中移出。这包括那些映射到改变了的表的使用MERGE表的查询。一个表可以被许多类型的语句更改,例如INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE。 对于InnoDB而言,事物的一些特性还会限制查询缓存的使用。当在事物A中修改了B表时,因为在事物提交之前,对B表的修改对其他的事物而言是不可见的。为了保证缓存结果的正确性,InnoDB采取的措施让所有涉及到该B表的查询在事物A提交之前是不可缓存的。如果A事物长时间运行,会严重影响查询缓存的命中率 查询缓存的空间不要设置的太大。 因为查询缓存是靠一个全局锁操作保护的,如果查询缓存配置的内存比较大且里面存放了大量的查询结果,当查询缓存失效的时候,会长时间的持有这个全局锁。因为查询缓存的命中检测操作以及缓存失效检测也都依赖这个全局锁,所以可能会导致系统僵死的情况静态表速度更快定长类型和变长类型 CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间,当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。 VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。varchar存储变长数据,但存储效率没有CHAR高。 如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。VARCHAR和TEXT、BlOB类型 VARCHAR,BLOB和TEXT类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸。 BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有65535字节的最大限制;TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它。 一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。 BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。 在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行,而对TEXT值是大小写不敏感的。换句话说,一个TEXT是一个大小写不敏感的BLOB。 效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char char和varchar可以有默认值,text不能指定默认值静态表和动态表 静态表字段长度固定,自动填充,读写速度很快,便于缓存和修复,但比较占硬盘,动态表是字段长度不固定,节省硬盘,但更复杂,容易产生碎片,速度慢,出问题后不容易重建。当只需要一条数据的时候,使用limit 1 表记录中的一行尽量不要超过一个IO单元 区分in和exist select * from 表A where id in (select id from 表B)这句相当于select from 表A where exists(select from 表B where 表B.id=表A.id)对于表A的每一条数据,都执行select * from 表B where 表B.id=表A.id的存在性判断,如果表B中存在表A当前行相同的id,则exists为真,该行显示,否则不显示 区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。 所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况复杂多表尽量少用join MySQL 的优势在于简单,但这在某些方面其实也是其劣势。MySQL 优化器效率高,但是由于其统计信息的量有限,优化器工作过程出现偏差的可能性也就更多。对于复杂的多表 Join,一方面由于其优化器受限,再者在 Join 这方面所下的功夫还不够,所以性能表现离 Oracle 等关系型数据库前辈还是有一定距离。但如果是简单的单表查询,这一差距就会极小甚至在有些场景下要优于这些数据库前辈。尽量用join代替子查询 虽然 Join 性能并不佳,但是和 MySQL 的子查询比起来还是有非常大的性能优势。 MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句在临时表中查询记录。查询完毕后,MySQL需要插销这些临时表。所以在MySQL中可以使用连接查询来代替子查询。连接查询不需要建立临时表,其速度比子查询要快。尽量少排序 排序操作会消耗较多的 CPU 资源,所以减少排序可以在缓存命中率高等 IO 能力足够的场景下会较大影响 SQL 的响应时间。 对于MySQL来说,减少排序有多种办法,比如: 上面误区中提到的通过利用索引来排序的方式进行优化 减少参与排序的记录条数 非必要不对数据进行排序尽量避免select * 大多数关系型数据库都是按照行(row)的方式存储,而数据存取操作都是以一个固定大小的IO单元(被称作 block 或者 page)为单位,一般为4KB,8KB… 大多数时候,每个IO单元中存储了多行,每行都是存储了该行的所有字段(lob等特殊类型字段除外)。 所以,我们是取一个字段还是多个字段,实际上数据库在表中需要访问的数据量其实是一样的。 也有例外情况,那就是我们的这个查询在索引中就可以完成,也就是说当只取 a,b两个字段的时候,不需要回表,而c这个字段不在使用的索引中,需要回表取得其数据。在这样的情况下,二者的IO量会有较大差异。尽量少or 当 where 子句中存在多个条件以“或”并存的时候,MySQL 的优化器并没有很好的解决其执行计划优化问题,再加上 MySQL 特有的 SQL 与 Storage 分层架构方式,造成了其性能比较低下,很多时候使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果。尽量用 union all 代替 union union 和 union all 的差异主要是前者需要将两个(或者多个)结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的 CPU 运算,加大资源消耗及延迟。所以当我们可以确认不可能出现重复结果集或者不在乎重复结果集的时候,尽量使用 union all 而不是 union。尽量早过滤 在 SQL 编写中同样可以使用这一原则来优化一些 Join 的 SQL。比如我们在多个表进行分页数据查询的时候,我们最好是能够在一个表上先过滤好数据分好页,然后再用分好页的结果集与另外的表 Join,这样可以尽可能多的减少不必要的 IO 操作,大大节省 IO 操作所消耗的时间。避免类型转换 这里所说的“类型转换”是指 where 子句中出现 column 字段的类型和传入的参数类型不一致的时候发生的类型转换: 人为在column_name 上通过转换函数进行转换直接导致 MySQL(实际上其他数据库也会有同样的问题)无法使用索引,如果非要转换,应该在传入的参数上进行转换,由数据库自己进行转换, 如果我们传入的数据类型和字段类型不一致,同时我们又没有做任何类型转换处理,MySQL 可能会自己对我们的数据进行类型转换操作,也可能不进行处理而交由存储引擎去处理,这样一来,就会出现索引无法使用的情况而造成执行计划问题。优先优化高并发的 SQL,而不是执行频率低某些“大”SQL 对于破坏性来说,高并发的 SQL 总是会比低频率的来得大,因为高并发的 SQL 一旦出现问题,甚至不会给我们任何喘息的机会就会将系统压跨。而对于一些虽然需要消耗大量 IO 而且响应很慢的 SQL,由于频率低,即使遇到,最多就是让整个系统响应慢一点,但至少可能撑一会儿,让我们有缓冲的机会。从全局出发优化,而不是片面调整 尤其是在通过调整索引优化 SQL 的执行计划的时候,千万不能顾此失彼,因小失大。尽可能对每一条运行在数据库中的SQL进行 explain 知道 SQL 的执行计划才能判断是否有优化余地,才能判断是否存在执行计划问题。在对数据库中运行的 SQL 进行了一段时间的优化之后,很明显的问题 SQL 可能已经很少了,大多都需要去发掘,这时候就需要进行大量的 explain 操作收集执行计划,并判断是否需要进行优化。尽量避免where子句中对字段进行null值的判断 会导致引擎放弃索引,进而进行全表扫描。 尽量不要给数据库留null值,尽可能地使用not null填充数据库。可以为每个null型的字段设置一个和null对应的实际内容表述。避免在where中使用!=, >, <操作符 否则引擎放弃使用索引,进行全表扫描。常用查询字段建索引避免在where中使用or imagein和not in关键词慎用,容易导致全表扫面 对连续的数值尽量用between通配符查询也容易导致全表扫描避免在where子句中使用局部变量 sql只有在运行时才解析局部变量。而优化程序必须在编译时访问执行计划,这时并不知道变量值,所以无法作为索引的输入项。 image避免在where子句中对字段进行表达式操作 会导致引擎放弃使用索引 image避免在where子句中对字段进行函数操作 image不要where子句的‘=’左边进行函数、算术运算或其他表达式运算 系统可能无法正确使用索引避免update全部字段 只update需要的字段。频繁调用会引起明显的性能消耗,同时带来大量日志。索引不是越多越好 一个表的索引数最好不要超过6个尽量使用数字型字段而非字符型 因为处理查询和连接时会逐个比较字符串的每个字符,而对于数字型而言只需要比较一次就够了。尽可能用varchar/nvarchar代替char/nchar 变长字段存储空间小,对于查询来说,在一个相对较小的字段内搜索效率更高。。。?避免频繁创建和删除临时表,减少系统表资源消耗select into和create table 新建临时表时,如果一次性插入数据量很大,使用select into代替create table,避免造成大量log,以提高速度。 如果数据量不大,为了缓和系统表的资源,先create table,再insert。 拆分大的DELETE和INSERT语句 因为这两个操作是会锁表的,对于高访问量的站点来说,锁表时间内积累的访问数、数据库连接、打开的文件数等等,可能不仅仅让WEB服务崩溃,还会让整台服务器马上挂了。 所以,一定要拆分,使用LIMIT条件休眠一段时间,批量处理。

wangccsy 2019-12-02 01:50:30 0 浏览量 回答数 0

问题

使用表格存储的表的建议有哪些

云栖大讲堂 2019-12-01 20:57:03 1070 浏览量 回答数 0

问题

基础语言百问-Python

薯条酱 2019-12-01 20:12:27 56807 浏览量 回答数 30

回答

在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的String面试题难倒了无数的开发者。所以说,常量池是Java体系中一个非常重要的概念。 谈到常量池,在Java体系中,共用三种常量池。分别是字符串常量池、Class常量池和运行时常量池。 本文先来介绍一下到底什么是Class常量池。 什么是Class文件 在Java代码的编译与反编译那些事儿中我们介绍过Java的编译和反编译的概念。我们知道,计算机只认识0和1,所以程序员写的代码都需要经过编译成0和1构成的二进制格式才能够让计算机运行。 我们在《深入分析Java的编译原理》中提到过,为了让Java语言具有良好的跨平台能力,Java独具匠心的提供了一种可以在所有平台上都能使用的一种中间代码——字节码(ByteCode)。 有了字节码,无论是哪种平台(如Windows、Linux等),只要安装了虚拟机,都可以直接运行字节码。 同样,有了字节码,也解除了Java虚拟机和Java语言之间的耦合。这话可能很多人不理解,Java虚拟机不就是运行Java语言的么?这种解耦指的是什么? 其实,目前Java虚拟机已经可以支持很多除Java语言以外的语言了,如Groovy、JRuby、Jython、Scala等。之所以可以支持,就是因为这些语言也可以被编译成字节码。而虚拟机并不关心字节码是有哪种语言编译而来的。 Java语言中负责编译出字节码的编译器是一个命令是javac。 javac是收录于JDK中的Java语言编译器。该工具可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机的字节码。 如,我们有以下简单的HelloWorld.java代码: public class HelloWorld { public static void main(String[] args) { String s = "Hollis"; } } 通过javac命令生成class文件: javac HelloWorld.java 生成HelloWorld.class文件:  如何使用16进制打开class文件:使用 vim test.class ,然后在交互模式下,输入:%!xxd 即可。 可以看到,上面的文件就是Class文件,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。 要想能够读懂上面的字节码,需要了解Class类文件的结构,由于这不是本文的重点,这里就不展开说明了。 读者可以看到,HelloWorld.class文件中的前八个字母是cafe babe,这就是Class文件的魔数(Java中的”魔数”) 我们需要知道的是,在Class文件的4个字节的魔数后面的分别是4个字节的Class文件的版本号(第5、6个字节是次版本号,第7、8个字节是主版本号,我生成的Class文件的版本号是52,这时Java 8对应的版本。也就是说,这个版本的字节码,在JDK 1.8以下的版本中无法运行)在版本号后面的,就是Class常量池入口了。 Class常量池 Class常量池可以理解为是Class文件中的资源仓库。 Class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池(constant pool table),用于存放编译器生成的各种字面量(Literal)和符号引用(Symbolic References)。 由于不同的Class文件中包含的常量的个数是不固定的,所以在Class文件的常量池入口处会设置两个字节的常量池容量计数器,记录了常量池中常量的个数。  当然,还有一种比较简单的查看Class文件中常量池的方法,那就是通过javap命令。对于以上的HelloWorld.class,可以通过 javap -v HelloWorld.class 查看常量池内容如下:  从上图中可以看到,反编译后的class文件常量池中共有16个常量。而Class文件中常量计数器的数值是0011,将该16进制数字转换成10进制的结果是17。 原因是与Java的语言习惯不同,常量池计数器是从0开始而不是从1开始的,常量池的个数是10进制的17,这就代表了其中有16个常量,索引值范围为1-16。 常量池中有什么 介绍完了什么是Class常量池以及如何查看常量池,那么接下来我们就要深入分析一下,Class常量池中都有哪些内容。 常量池中主要存放两大类常量:字面量(literal)和符号引用(symbolic references)。 字面量 前面说过,运行时常量池中主要保存的是字面量和符号引用,那么到底什么字面量? 在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。 以上是关于计算机科学中关于字面量的解释,并不是很容易理解。说简单点,字面量就是指由字母、数字等构成的字符串或者数值。 字面量只可以右值出现,所谓右值是指等号右边的值,如:int a=123这里的a为左值,123为右值。在这个例子中123就是字面量。 int a = 123; String s = "hollis"; 上面的代码事例中,123和hollis都是字面量。 本文开头的HelloWorld代码中,Hollis就是一个字面量。 符号引用 常量池中,除了字面量以外,还有符号引用,那么到底什么是符号引用呢。 符号引用是编译原理中的概念,是相对于直接引用来说的。主要包括了以下三类常量: * 类和接口的全限定名 * 字段的名称和描述符 * 方法的名称和描述符 这也就可以印证前面的常量池中还包含一些com/hollis/HelloWorld、main、([Ljava/lang/String;)V等常量的原因了。 Class常量池有什么用 前面介绍了这么多,关于Class常量池是什么,怎么查看Class常量池以及Class常量池中保存了哪些东西。有一个关键的问题没有讲,那就是Class常量池到底有什么用。 首先,可以明确的是,Class常量池是Class文件中的资源仓库,其中保存了各种常量。而这些常量都是开发者定义出来,需要在程序的运行期使用的。 在《深入理解Java虚拟》中有这样的表述: Java代码在进行Javac编译的时候,并不像C和C++那样有“连接”这一步骤,而是在虚拟机加载Class文件的时候进行动态连接。也就是说,在Class文件中不会保存各个方法、字段的最终内存布局信息,因此这些字段、方法的符号引用不经过运行期转换的话无法得到真正的内存入口地址,也就无法直接被虚拟机使用。当虚拟机运行时,需要从常量池获得对应的符号引用,再在类创建时或运行时解析、翻译到具体的内存地址之中。关于类的创建和动态连接的内容,在虚拟机类加载过程时再进行详细讲解。 前面这段话,看起来很绕,不是很容易理解。其实他的意思就是: Class是用来保存常量的一个媒介场所,并且是一个中间场所。在JVM真的运行时,需要把常量池中的常量加载到内存中。 至于到底哪个阶段会做这件事情,以及Class常量池中的常量会以何种方式被加载到具体什么地方,会在本系列文章的后续内容中继续阐述。欢迎关注我的博客(http://www.hollischuang.com) 和公众号(Hollis),即可第一时间获得最新内容。 另外,关于常量池中常量的存储形式,以及数据类型的表示方法本文中并未涉及,并不是说这部分知识点不重要,只是Class字节码的分析本就枯燥,作者不想在一篇文章中给读者灌输太多的理论上的内容。感兴趣的读者可以自行Google学习,如果真的有必要,我也可以单独写一篇文章再深入介绍。 参考资料 《深入理解java虚拟机》 《Java虚拟机原理图解》 1.2.2、Class文件中的常量池详解(上)

montos 2020-06-02 10:12:18 0 浏览量 回答数 0

回答

首先“缓存”Cache这个东西是干什么的,我们应该先有些基本的了解。要是不太明白的可以看看网上的解释:http://baike.baidu.com/view/907.htm 简单讲,阿里云OCS提供的功能就是提供对热点数据的高速访问。在使用OCS之前(或者在使用任何一种缓存服务之前),我们都应该明白关于缓存的这么几点: 缓存里的数据不是持久化保存的,也就是说它像是电脑里的内存,而不像硬盘;我们不能指望OCS里的数据一直保存不丢失。如果你真的需要存储持久化的数据,也许你应该出门左转找阿里云OSS(开发存储服务); 缓存里存的应该是“热点”数据。遵循常常出现的“20-80法则”,通常程序应用中都有一定比例的数据常常被请求访问,这就是所谓的热点数据,OCS正是为这种数据设计存在的。假定我们的程序中有100个数据,每次访问这些数据的概率完全是均匀分布的1/100,那么使用缓存的效果就不会太好,因为这其中不存在热点数据。 数据逐出。我们可以决定哪些数据是热点数据被放到缓存当中,但是如果我们的缓存容量不够大,这些热点数据中某些最近较少被用到的数据还是会被“挤出去”,这种行为叫做数据逐出。如果想减少出现这种情况,我们可以购买更高容量的OCS。 -------------------------         在开始使用之前,关于阿里云OCS,我们还需要知道以下这些事: 阿里云OCS仅支持阿里云内网访问,不支持公网访问。也就是说,我们用办公室或者家里的电脑(都属于公网)是无法连上阿里云OCS的。为什么会这样呢?因为缓存服务的根本目标是要提供低延迟的高速访问,而从公网电脑来连接OCS服务器的场景下,公网的网络环境是不可控的,可能出现延迟很高甚至断连接的情况,这使得缓存服务无法保证“高速、低延迟”的基本特性,所以阿里云OCS是不支持公网直接访问的。如果觉得高延迟的情况对于我们的应用也能接受,那么我们应该去选择阿里云其他的产品(比如OSS开放存储服务),而不应该选择OCS缓存服务。 阿里云OCS需要与ECS(阿里云服务器)配合使用,而且只能与本地区节点的ECS连通。这一点与上一条相关。OCS只能从阿里云内网访问,也就是说我们只能从阿里云ECS上才能访问并使用OCS服务。所以我们在官网购买OCS的时候,会看到提示信息说需要至少有一台ECS才能买OCS。另外,阿里云ECS是分地区节点的,比如北京、杭州、青岛等,我们在购买OCS缓存的时候也要选相应的地区节点。北京的ECS只能访问北京的OCS,而不能访问杭州或青岛的OCS。 阿里云OCS是按购买量收费的,而不是按使用量收费。这点需要提醒新同学们注意,在我们购买了OCS缓存之后,计费就已经开始了,即使我们还没有真正使用缓存。也就是说,我们买了1G的OCS缓存后,即使目前使用量为0,系统也会按照1G的标准来计费。所以我们在购买OCS的时候,要选取适合我们业务数据需要的缓存档位。当然了,阿里云OCS也提供在线升降缓存容量的功能。也就是说,如果我们在使用了一段时间之后,发现购买的OCS缓存不够用了(或者缓存使用量太低),我们可以在线的对已有的OCS实例进行升档(或者降档),而OCS缓存服务不会被中断。 阿里云OCS对于存贮的对象大小是有限制的。缓存通常对其内部存储的数据尺寸是有限制的,阿里云OCS也一样。目前OCS支持存储的数据对象的上限是1,000,000Byte。如果要存的值超过这个限制,我们应该考虑把数据压缩,或从逻辑上分成不同键存储的几个值。 ------------------------- 现在我们开始在阿里云官网上购买OCS实例  http://buy.aliyun.com/ocs  首先我们需要已经有了一台阿里云ECS,否则我们无法在这个页面成功购买OCS。购买的第一步,我们先要确定选择买哪个地区的OCS;这个很重要,如上面所说,如果我们的ECS是属于北京,而我们在这里购买了杭州的OCS,那么这两者是无法配合协同工作的。所以,在购买OCS的时候一定要选择应用服务器ECS所在地区的OCS。下一步是要选择OCS缓存容量。我们要购买多大的缓存,这个取决于我们对自身业务应用中热点数据总量大小的判断。如果一时难以准确判断数据量,也不用担心:我们可以先买一个大致容量的OCS(比如1GB),随后在使用过程中,通过OCS控制台提供的监控功能,我们可以了解到目前OCS缓存的使用量等数据,然后可以自主的调整所需的缓存量,购买更大的缓存(比如升到5GB)或者减少已购的缓存量(比如降到512MB),阿里云会根据我们选择的新配置来调整对应的收费。此外在选择缓存容量的时候,要知道不同容量的缓存档位对应着不同的性能配额,具体来说包括两个指标:吞吐量带宽与每秒请求处理数(QPS)。比如以现在的配额标准,1GB的OCS缓存对应5MB/sec的吞吐量带宽和3000次/sec的请求处理峰值。当我们使用OCS的时候,如果数据量传输的带宽超过了5MB/s, 或者每秒的请求数超过了3000次,都会触发性能配额控制机制,导致某些请求无法返回正常结果。在确定了地区和缓存容量之后,我们就可以直接下单购买OCS了。 ------------------------- 在成功购买OCS之后,我们的联系邮箱和手机都会收到OCS创建成功的通知,里面会包括OCS的实例ID和初始密码(关于密码的用处后面会讲到)。我们现在登录OCS控制台, http://ocs.console.aliyun.com/ 就可以看到已经购买到的OCS实例列表。在列表页面上对应OCS实例的后面点击“管理”,就可以进入该OCS实例的详情页,看到更多的详细信息。 ------------------------- 我们现在已经有了一个OCS缓存实例,现在是时候试玩OCS了。要使用OCS就要写一点程序代码,不过不用担心,我们在这里采用“Happy-Path”的方法,从最简单的操作开始,让新上手的菜鸟们能马上就有一个能调用OCS缓存服务的程序。OCS提供缓存服务,它并不要求我们的程序是哪种语言来写的。我们这里先以Java程序为例,写一个最简单的“Hello World”。(其他编程语言的例子,我们随后附上。)第一步,登录你的阿里云ECS服务器,在上面安装Java JDK和你常用的IDE(比如Eclipse)。一定要记得我们之前说过的,只有在阿里云内网的ECS服务器上,才能访问我们的OCS实例。所以,用家里或是公司的电脑执行下面的代码示例是看不到结果的。 Java JDK和Eclipse都很容易从网上找到下载,比如 http://download.eclipse.org/ 或者 http://www.onlinedown.net/soft/32289.htm 第二步,在把Java开发环境准备好了之后,下载第一个代码示例(Sample-Code-1第三步,在Eclipse里面打开刚下载的OcsSample1.java,我们要根据自己的OCS实例信息修改几个地方。        我们每个人买到的OCS实例的ID都是不重复的,其对应的阿里云内网地址也是独一无二的,这些信息都在OCS控制台上显示出来。我们在同自己的OCS实例建立连接的时候,需要根据这些信息修改OcsSample1.java中的对应地方。         public static void main(String[] args) {                                        final String host = "b2fd2f89f49f11e3.m.cnqdalicm9pub001.ocs.aliyuncs.com"; //控制台上的“内网地址”                   final String port ="11211";       //默认端口 11211,不用改                   final String username = "b2fd2f89f49f11e3"; //控制台上的“访问账号”                   final String password = "my_password"; //邮件或短信中提供的“密码”                   …… …… ……       信息修改完毕,我们可以运行自己的程序了。运行main函数,我们会在Eclipse下面的console窗口看到下面这样的结果(请忽略可能出现的红色INFO调试信息): OCS Sample CodeSet操作完成!Get操作: Open Cache Service,  from www.Aliyun.com     OK,搞定!我们已经成功的连接上了阿里云的OCS并且调用缓存服务成功,就这么简单。-------------------------我们已经成功运行了第一个调用阿里云OCS缓存服务的Sample程序OcsSample1.java,现在我们看看这个程序里都做了什么。                                  …… …… ……                            System.out.println("OCS Sample Code");                                                        //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据,                             //这个数据对应的value是字符串 Open Cache Service,  from www.Aliyun.com                            OperationFuture future = cache.set("ocs", 1000," Open Cache Service,  from www.Aliyun.com");                            //向OCS中存若干个数据,随后可以在OCS控制台监控上看到统计信息                            for(int i=0;i<100;i++){                                String key="key-"+i;                                String value="value-"+i;                                 //执行set操作,向缓存中存数据                                cache.set(key, 1000, value);                            }                             System.out.println("Set操作完成!");                             future.get();  //  确保之前(cache.set())操作已经结束                         //执行get操作,从缓存中读数据,读取key为"ocs"的数据                            System.out.println("Get操作:"+cache.get("ocs"));                            …… …… …… 从这些代码中可以看出: 1. 我们在建立与OCS缓存服务器的连接后,先是向缓存中存(set)了一个“key-value”(键值对)形式的数据,这个数据的key是字符串“ocs”,其对应的value也是字符串;2. 接着我们继续向缓存中存(set)了100个其他简单的“key-value”数据。3. 最后我们进行功能验证。根据之前给定的key,从缓存中获取(get)其对应的value:也就是输入字符串“ocs”,缓存给我们返回value对应的字符串。 以上的步骤中,1与3是相对应的,我们只有先向缓存中set了某个数据,后面才能从缓存中get到这个数据。步骤2中程序向缓存set了100个数据,是为了从另一个方面进行验证。我们回到阿里云OCS控制台,打开“实例详情”页,在“实例监控”的部分点击刷新,会看到其中一些监控项的值已经发生了变化(注:监控信息的刷新可能存在数秒的延迟), 其中的“Key的个数”已经变成了101,也就是说我们程序已经成功地向OCS缓存中存放了101个数据。

唐翰 2019-12-01 23:27:50 0 浏览量 回答数 0

回答

我会发挥每个系统的优势。 聚合,联接和过滤逻辑显然属于数据层。它的速度更快,这不仅是因为大多数数据库引擎为此进行了10多年的优化,而且还可以最大程度地减少数据库和Web服务器之间转移的数据。 另一方面,我使用的大多数数据库平台在处理单个值时的功能都很差。日期格式和字符串操作之类的东西在SQL中很烂,最好在PHP中完成。 基本上,使用每个系统来完成其工作。 在可维护性方面,只要清楚区分发生在何处,将它们与逻辑类型分开就不会造成太大问题,当然也不足以抵消收益。在我看来,代码的清晰度和可维护性更多的是一致性,而不是将所有逻辑放在一个地方。 回复:具体例子... 我知道这也不是您所指的,但日期几乎是一种特殊情况。您要确保系统生成的所有日期都在Web服务器或数据库上创建。如果将db服务器和Web服务器配置为不同的时区,则否则会导致一些隐患(我已经看到了这种情况)。想象一下,例如,您createdDate有一个默认值为DB的列getDate()应用于DB。如果您要插入一条记录,那么使用PHP中生成的日期(例如date("Y-m-d", time() - 3600),选择在过去一小时内创建的记录,您可能无法获得期望的结果。对于您应该在哪一层上执行此操作,我希望使用DB例如,它使您可以使用列默认值。 对于大多数应用程序,我会在PHP中执行此操作。混合姓氏和名字听起来很简单,直到您意识到有时也需要在其中使用称呼,标题和中间缩写。另外,您几乎肯定会以想要用户的名字,姓氏和组合称呼+姓氏+姓氏为最终结果。将它们串联在DB端意味着您最终将移动更多的数据,尽管实际上,它很小。 依靠。如上所述,如果您想单独使用它们,则最好从性能角度考虑,将它们分别拉出并在需要时进行连接。也就是说,除非您要处理的数据集庞大,否则可能还有其他因素(如您提到的可维护性)具有更大的影响力。 一些经验法则: 生成增量ID应该在数据库中进行。 就个人而言,我喜欢数据库所应用的默认设置。 选择时,任何减少记录数量的操作都应由数据库来完成。 这样做通常可以减少数据集DB端的大小(例如上面的字符串示例)。 正如你所说;排序,聚合,子查询,联接等应始终在DB端。 另外,我们还没有讨论它们,但是触发器通常是坏的/必要的。 在这里您需要面对一些核心的权衡,而平衡实际上取决于您的应用程序。 有些事情绝对应该总是在SQL中完成。排除许多任务的某些异常(如日期事件),SQL可能很笨拙,并且可能使您陷入逻辑混乱的境地。例如,在代码库中搜索对特定列的引用时,很容易错过视图或存储过程中包含的内容。 性能始终是一个考虑因素,但取决于您的应用程序和特定示例,可能并不是一个大问题。您对可维护性的担忧可能非常有效,而我提到的一些性能优势却很少,因此请提防过早优化。 另外,如果其他系统正在直接访问数据库(例如,用于报告或导入/导出),您将受益于数据库中更多的逻辑。例如,如果要直接从另一个数据源导入用户,则可以在SQL中实现类似电子邮件验证功能的重用。 简短的答案:这取决于。:)来源:stack overflow

保持可爱mmm 2020-05-17 12:12:12 0 浏览量 回答数 0

问题

如何实现通过数据集成导入数据?

青衫无名 2019-12-01 22:00:25 1112 浏览量 回答数 0

回答

92题 一般来说,建立INDEX有以下益处:提高查询效率;建立唯一索引以保证数据的唯一性;设计INDEX避免排序。 缺点,INDEX的维护有以下开销:叶节点的‘分裂’消耗;INSERT、DELETE和UPDATE操作在INDEX上的维护开销;有存储要求;其他日常维护的消耗:对恢复的影响,重组的影响。 需要建立索引的情况:为了建立分区数据库的PATITION INDEX必须建立; 为了保证数据约束性需要而建立的INDEX必须建立; 为了提高查询效率,则考虑建立(是否建立要考虑相关性能及维护开销); 考虑在使用UNION,DISTINCT,GROUP BY,ORDER BY等字句的列上加索引。 91题 作用:加快查询速度。原则:(1) 如果某属性或属性组经常出现在查询条件中,考虑为该属性或属性组建立索引;(2) 如果某个属性常作为最大值和最小值等聚集函数的参数,考虑为该属性建立索引;(3) 如果某属性经常出现在连接操作的连接条件中,考虑为该属性或属性组建立索引。 90题 快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。 89题 游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。 88题 事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。 87题 MySQL可以使用多个字段同时建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。具体原因为:MySQL使用索引时需要索引有序,假设现在建立了"name,age,school"的联合索引,那么索引的排序为: 先按照name排序,如果name相同,则按照age排序,如果age的值也相等,则按照school进行排序。因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面。此外可以根据特例的查询或者表结构进行单独的调整。 86题 建立索引的时候一般要考虑到字段的使用频率,经常作为条件进行查询的字段比较适合。如果需要建立联合索引的话,还需要考虑联合索引中的顺序。此外也要考虑其他方面,比如防止过多的所有对表造成太大的压力。这些都和实际的表结构以及查询方式有关。 85题 存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。 84题 存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 83题 减少表连接,减少复杂 SQL,拆分成简单SQL。减少排序:非必要不排序,利用索引排序,减少参与排序的记录数。尽量避免 select *。尽量用 join 代替子查询。尽量少使用 or,使用 in 或者 union(union all) 代替。尽量用 union all 代替 union。尽量早的将无用数据过滤:选择更优的索引,先分页再Join…。避免类型转换:索引失效。优先优化高并发的 SQL,而不是执行频率低某些“大”SQL。从全局出发优化,而不是片面调整。尽可能对每一条SQL进行 explain。 82题 如果条件中有or,即使其中有条件带索引也不会使用(要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引)。对于多列索引,不是使用的第一部分,则不会使用索引。like查询是以%开头。如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。如果mysql估计使用全表扫描要比使用索引快,则不使用索引。例如,使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,MySQL就有可能不使用索引。 81题 主键不能重复,不能为空,唯一键不能重复,可以为空。建立主键的目的是让外键来引用。一个表最多只有一个主键,但可以有很多唯一键。 80题 空值('')是不占用空间的,判断空字符用=''或者<>''来进行处理。NULL值是未知的,且占用空间,不走索引;判断 NULL 用 IS NULL 或者 is not null ,SQL 语句函数中可以使用 ifnull ()函数来进行处理。无法比较 NULL 和 0;它们是不等价的。无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。NULL 值可以使用 <=> 符号进行比较,该符号与等号作用相似,但对NULL有意义。进行 count ()统计某列的记录数的时候,如果采用的 NULL 值,会被系统自动忽略掉,但是空值是统计到其中。 79题 HEAP表是访问数据速度最快的MySQL表,他使用保存在内存中的散列索引。一旦服务器重启,所有heap表数据丢失。BLOB或TEXT字段是不允许的。只能使用比较运算符=,<,>,=>,= <。HEAP表不支持AUTO_INCREMENT。索引不可为NULL。 78题 如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数字和前缀(X),或者只用(Ox)前缀输入十六进制数字。如果表达式上下文是字符串,则十六进制数字串将自动转换为字符串。 77题 Mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。 76题 在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。 75题 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。 74题 创建索引的时候尽量使用唯一性大的列来创建索引,由于使用b+tree做为索引,以innodb为例,一个树节点的大小由“innodb_page_size”,为了减少树的高度,同时让一个节点能存放更多的值,索引列尽量在整数类型上创建,如果必须使用字符类型,也应该使用长度较少的字符类型。 73题 当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下: 限定数据的范围: 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内。读/写分离: 经典的数据库拆分方案,主库负责写,从库负责读。垂直分区: 根据数据库里面数据表的相关性进行拆分。简单来说垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。水平分区: 保持数据表结构不变,通过某种策略存储数据分片。这样每一片数据分散到不同的表或者库中,达到了分布式的目的。水平拆分可以支撑非常大的数据量。 72题 乐观锁失败后会抛出ObjectOptimisticLockingFailureException,那么我们就针对这块考虑一下重试,自定义一个注解,用于做切面。针对注解进行切面,设置最大重试次数n,然后超过n次后就不再重试。 71题 一致性非锁定读讲的是一条记录被加了X锁其他事务仍然可以读而不被阻塞,是通过innodb的行多版本实现的,行多版本并不是实际存储多个版本记录而是通过undo实现(undo日志用来记录数据修改前的版本,回滚时会用到,用来保证事务的原子性)。一致性锁定读讲的是我可以通过SELECT语句显式地给一条记录加X锁从而保证特定应用场景下的数据一致性。 70题 数据库引擎:尤其是mysql数据库只有是InnoDB引擎的时候事物才能生效。 show engines 查看数据库默认引擎;SHOW TABLE STATUS from 数据库名字 where Name='表名' 如下;SHOW TABLE STATUS from rrz where Name='rrz_cust';修改表的引擎alter table table_name engine=innodb。 69题 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;同理,哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询);哈希索引也不支持多列联合索引的最左匹配规则;B+树索引的关键字检索效率比较平均,不像B树那样波动幅度大,在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题。 68题 decimal精度比float高,数据处理比float简单,一般优先考虑,但float存储的数据范围大,所以范围大的数据就只能用它了,但要注意一些处理细节,因为不精确可能会与自己想的不一致,也常有关于float 出错的问题。 67题 datetime、timestamp精确度都是秒,datetime与时区无关,存储的范围广(1001-9999),timestamp与时区有关,存储的范围小(1970-2038)。 66题 Char使用固定长度的空间进行存储,char(4)存储4个字符,根据编码方式的不同占用不同的字节,gbk编码方式,不论是中文还是英文,每个字符占用2个字节的空间,utf8编码方式,每个字符占用3个字节的空间。Varchar保存可变长度的字符串,使用额外的一个或两个字节存储字符串长度,varchar(10),除了需要存储10个字符,还需要1个字节存储长度信息(10),超过255的长度需要2个字节来存储。char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时,会去掉空格进行比较。Varbinary保存变长的字符串,后面不会补\0。 65题 首先分析语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引。如果对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果是的话可以进行横向或者纵向的分表。 64题 建立索引的时候一般要考虑到字段的使用频率,经常作为条件进行查询的字段比较适合。如果需要建立联合索引的话,还需要考虑联合索引中的顺序。此外也要考虑其他方面,比如防止过多的所有对表造成太大的压力。这些都和实际的表结构以及查询方式有关。 63题 存储过程是一些预编译的SQL语句。1、更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。2、存储过程是一个预编译的代码块,执行效率比较高,一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率,可以一定程度上确保数据安全。 62题 密码散列、盐、用户身份证号等固定长度的字符串应该使用char而不是varchar来存储,这样可以节省空间且提高检索效率。 61题 推荐使用自增ID,不要使用UUID。因为在InnoDB存储引擎中,主键索引是作为聚簇索引存在的,也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(按照顺序),如果主键索引是自增ID,那么只需要不断向后排列即可,如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入,数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。总之,在数据量大一些的情况下,用自增主键性能会好一些。 60题 char是一个定长字段,假如申请了char(10)的空间,那么无论实际存储多少内容。该字段都占用10个字符,而varchar是变长的,也就是说申请的只是最大长度,占用的空间为实际字符长度+1,最后一个字符存储使用了多长的空间。在检索效率上来讲,char > varchar,因此在使用中,如果确定某个字段的值的长度,可以使用char,否则应该尽量使用varchar。例如存储用户MD5加密后的密码,则应该使用char。 59题 一. read uncommitted(读取未提交数据) 即便是事务没有commit,但是我们仍然能读到未提交的数据,这是所有隔离级别中最低的一种。 二. read committed(可以读取其他事务提交的数据)---大多数数据库默认的隔离级别 当前会话只能读取到其他事务提交的数据,未提交的数据读不到。 三. repeatable read(可重读)---MySQL默认的隔离级别 当前会话可以重复读,就是每次读取的结果集都相同,而不管其他事务有没有提交。 四. serializable(串行化) 其他会话对该表的写操作将被挂起。可以看到,这是隔离级别中最严格的,但是这样做势必对性能造成影响。所以在实际的选用上,我们要根据当前具体的情况选用合适的。 58题 B+树的高度一般为2-4层,所以查找记录时最多只需要2-4次IO,相对二叉平衡树已经大大降低了。范围查找时,能通过叶子节点的指针获取数据。例如查找大于等于3的数据,当在叶子节点中查到3时,通过3的尾指针便能获取所有数据,而不需要再像二叉树一样再获取到3的父节点。 57题 因为事务在修改页时,要先记 undo,在记 undo 之前要记 undo 的 redo, 然后修改数据页,再记数据页修改的 redo。 Redo(里面包括 undo 的修改) 一定要比数据页先持久化到磁盘。 当事务需要回滚时,因为有 undo,可以把数据页回滚到前镜像的状态,崩溃恢复时,如果 redo log 中事务没有对应的 commit 记录,那么需要用 undo把该事务的修改回滚到事务开始之前。 如果有 commit 记录,就用 redo 前滚到该事务完成时并提交掉。 56题 redo log是物理日志,记录的是"在某个数据页上做了什么修改"。 binlog是逻辑日志,记录的是这个语句的原始逻辑,比如"给ID=2这一行的c字段加1"。 redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。 redo log是循环写的,空间固定会用完:binlog 是可以追加写入的。"追加写"是指binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。 最开始 MySQL 里并没有 InnoDB 引擎,MySQL 自带的引擎是 MyISAM,但是 MyISAM 没有 crash-safe 的能力,binlog日志只能用于归档。而InnoDB 是另一个公司以插件形式引入 MySQL 的,既然只依靠 binlog 是没有 crash-safe 能力的,所以 InnoDB 使用另外一套日志系统,也就是 redo log 来实现 crash-safe 能力。 55题 重做日志(redo log)      作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,达到事务一致性。 回滚日志(undo log)  作用:保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。 二进 制日志(binlog)    作用:用于主从复制,实现主从同步;用于数据库的基于时间点的还原。 错误日志(errorlog) 作用:Mysql本身启动,停止,运行期间发生的错误信息。 慢查询日志(slow query log)  作用:记录执行时间过长的sql,时间阈值可以配置,只记录执行成功。 一般查询日志(general log)    作用:记录数据库的操作明细,默认关闭,开启后会降低数据库性能 。 中继日志(relay log) 作用:用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放。 54题 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 死锁: 是指两个或两个以上的进程在执行过程中。因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。 那么对应的解决死锁问题的关键就是:让不同的session加锁有次序。死锁的解决办法:1.查出的线程杀死。2.设置锁的超时时间。3.指定获取锁的顺序。 53题 当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性(脏读,不可重复读,幻读等),可能产生死锁。 乐观锁:乐观锁不是数据库自带的,需要我们自己去实现。 悲观锁:在进行每次操作时都要通过获取锁才能进行对相同数据的操作。 共享锁:加了共享锁的数据对象可以被其他事务读取,但不能修改。 排他锁:当数据对象被加上排它锁时,一个事务必须得到锁才能对该数据对象进行访问,一直到事务结束锁才被释放。 行锁:就是给某一条记录加上锁。 52题 Mysql是关系型数据库,MongoDB是非关系型数据库,数据存储结构的不同。 51题 关系型数据库优点:1.保持数据的一致性(事务处理)。 2.由于以标准化为前提,数据更新的开销很小。 3. 可以进行Join等复杂查询。 缺点:1、为了维护一致性所付出的巨大代价就是其读写性能比较差。 2、固定的表结构。 3、高并发读写需求。 4、海量数据的高效率读写。 非关系型数据库优点:1、无需经过sql层的解析,读写性能很高。 2、基于键值对,数据没有耦合性,容易扩展。 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 缺点:1、不提供sql支持,学习和使用成本较高。 2、无事务处理,附加功能bi和报表等支持也不好。 redis与mongoDB的区别: 性能:TPS方面redis要大于mongodb。 可操作性:mongodb支持丰富的数据表达,索引,redis较少的网络IO次数。 可用性:MongoDB优于Redis。 一致性:redis事务支持比较弱,mongoDB不支持事务。 数据分析:mongoDB内置了数据分析的功能(mapreduce)。 应用场景:redis数据量较小的更性能操作和运算上,MongoDB主要解决海量数据的访问效率问题。 50题 如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则的话(即Redis节点需要动态变化的情况),必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。 49题 分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。分区使Redis的计算能力通过简单地增加计算机得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长。 48题 除了缓存服务器自带的缓存失效策略之外(Redis默认的有6种策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种: 1.定时去清理过期的缓存; 2.当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。 两者各有优劣,第一种的缺点是维护大量缓存的key是比较麻烦的,第二种的缺点就是每次用户请求过来都要判断缓存失效,逻辑相对比较复杂!具体用哪种方案,可以根据应用场景来权衡。 47题 Redis提供了两种方式来作消息队列: 一个是使用生产者消费模式模式:会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费,谁先抢到算谁的,如果队列里没有消息,则消费者继续监听 。另一个就是发布订阅者模式:也是一个或多个客户端订阅消息频道,只要发布者发布消息,所有订阅者都能收到消息,订阅者都是平等的。 46题 Redis的数据结构列表(list)可以实现延时队列,可以通过队列和栈来实现。blpop/brpop来替换lpop/rpop,blpop/brpop阻塞读在队列没有数据的时候,会立即进入休眠状态,一旦数据到来,则立刻醒过来。Redis的有序集合(zset)可以用于实现延时队列,消息作为value,时间作为score。Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。 45题 1.热点数据缓存:因为Redis 访问速度块、支持的数据类型比较丰富。 2.限时业务:expire 命令设置 key 的生存时间,到时间后自动删除 key。 3.计数器:incrby 命令可以实现原子性的递增。 4.排行榜:借助 SortedSet 进行热点数据的排序。 5.分布式锁:利用 Redis 的 setnx 命令进行。 6.队列机制:有 list push 和 list pop 这样的命令。 44题 一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n 个关键字重新映射,其中K是关键字的数量, n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。 43题 RDB的优点:适合做冷备份;读写服务影响小,reids可以保持高性能;重启和恢复redis进程,更加快速。RDB的缺点:宕机会丢失最近5分钟的数据;文件特别大时可能会暂停数毫秒,或者甚至数秒。 AOF的优点:每个一秒执行fsync操作,最多丢失1秒钟的数据;以append-only模式写入,没有任何磁盘寻址的开销;文件过大时,不会影响客户端读写;适合做灾难性的误删除的紧急恢复。AOF的缺点:AOF日志文件比RDB数据快照文件更大,支持写QPS比RDB支持的写QPS低;比RDB脆弱,容易有bug。 42题 对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis的操作之所以是原子性的,是因为Redis是单线程的。而在程序中执行多个Redis命令并非是原子性的,这也和普通数据库的表现是一样的,可以用incr或者使用Redis的事务,或者使用Redis+Lua的方式实现。对Redis来说,执行get、set以及eval等API,都是一个一个的任务,这些任务都会由Redis的线程去负责执行,任务要么执行成功,要么执行失败,这就是Redis的命令是原子性的原因。 41题 (1)twemproxy,使用方式简单(相对redis只需修改连接端口),对旧项目扩展的首选。(2)codis,目前用的最多的集群方案,基本和twemproxy一致的效果,但它支持在节点数改变情况下,旧节点数据可恢复到新hash节点。(3)redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。(4)在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的代替算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。 40题 (1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 (2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 (3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 (4) 尽量避免在压力很大的主库上增加从库 (5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。 39题 比如订单管理,热数据:3个月内的订单数据,查询实时性较高;温数据:3个月 ~ 12个月前的订单数据,查询频率不高;冷数据:1年前的订单数据,几乎不会查询,只有偶尔的查询需求。热数据使用mysql进行存储,需要分库分表;温数据可以存储在ES中,利用搜索引擎的特性基本上也可以做到比较快的查询;冷数据可以存放到Hive中。从存储形式来说,一般情况冷数据存储在磁带、光盘,热数据一般存放在SSD中,存取速度快,而温数据可以存放在7200转的硬盘。 38题 当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。降级的最终目的是保证核心服务可用,即使是有损的。而且有些服务是无法降级的(如加入购物车、结算)。 37题 分层架构设计,有一条准则:站点层、服务层要做到无数据无状态,这样才能任意的加节点水平扩展,数据和状态尽量存储到后端的数据存储服务,例如数据库服务或者缓存服务。显然进程内缓存违背了这一原则。 36题 更新数据的时候,根据数据的唯一标识,将操作路由之后,发送到一个 jvm 内部队列中。读取数据的时候,如果发现数据不在缓存中,那么将重新读取数据+更新缓存的操作,根据唯一标识路由之后,也发送同一个 jvm 内部队列中。一个队列对应一个工作线程,每个工作线程串行拿到对应的操作,然后一条一条的执行。 35题 redis分布式锁加锁过程:通过setnx向特定的key写入一个随机值,并同时设置失效时间,写值成功既加锁成功;redis分布式锁解锁过程:匹配随机值,删除redis上的特点key数据,要保证获取数据、判断一致以及删除数据三个操作是原子的,为保证原子性一般使用lua脚本实现;在此基础上进一步优化的话,考虑使用心跳检测对锁的有效期进行续期,同时基于redis的发布订阅优雅的实现阻塞式加锁。 34题 volatile-lru:当内存不足以容纳写入数据时,从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。 volatile-ttl:当内存不足以容纳写入数据时,从已设置过期时间的数据集中挑选将要过期的数据淘汰。 volatile-random:当内存不足以容纳写入数据时,从已设置过期时间的数据集中任意选择数据淘汰。 allkeys-lru:当内存不足以容纳写入数据时,从数据集中挑选最近最少使用的数据淘汰。 allkeys-random:当内存不足以容纳写入数据时,从数据集中任意选择数据淘汰。 noeviction:禁止驱逐数据,当内存使用达到阈值的时候,所有引起申请内存的命令会报错。 33题 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。 惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。 定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。 32题 缓存击穿,一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。如何避免:在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。 31题 缓存雪崩,是指在某一个时间段,缓存集中过期失效。大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。而缓存服务器某个节点宕机或断网,对数据库服务器造成的压力是不可预知的,很有可能瞬间就把数据库压垮。如何避免:1.redis高可用,搭建redis集群。2.限流降级,在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。3.数据预热,在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间。 30题 缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。一些恶意的请求会故意查询不存在的 key,请求量很大,对数据库造成压力,甚至压垮数据库。 如何避免:1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该 key 对应的数据 insert 了之后清理缓存。2:对一定不存在的 key 进行过滤。可以把所有的可能存在的 key 放到一个大的 Bitmap 中,查询时通过该 bitmap 过滤。 29题 1.memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型。 2.redis 的速度比 memcached 快很多。 3.redis 可以持久化其数据。 4.Redis支持数据的备份,即master-slave模式的数据备份。 5.Redis采用VM机制。 6.value大小:redis最大可以达到1GB,而memcache只有1MB。 28题 Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过spring提供的@ImportResource来加载xml配置。例如:@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"}) 27题 Spring像一个大家族,有众多衍生产品例如Spring Boot,Spring Security等等,但他们的基础都是Spring的IOC和AOP,IOC提供了依赖注入的容器,而AOP解决了面向切面的编程,然后在此两者的基础上实现了其他衍生产品的高级功能。Spring MVC是基于Servlet的一个MVC框架,主要解决WEB开发的问题,因为 Spring的配置非常复杂,各种xml,properties处理起来比较繁琐。Spring Boot遵循约定优于配置,极大降低了Spring使用门槛,又有着Spring原本灵活强大的功能。总结:Spring MVC和Spring Boot都属于Spring,Spring MVC是基于Spring的一个MVC框架,而Spring Boot是基于Spring的一套快速开发整合包。 26题 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。YAML 的配置文件后缀为 .yml,是一种人类可读的数据序列化语言,可以简单表达清单、散列表,标量等数据形态。它通常用于配置文件,与属性文件相比,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。 25题 Spring Boot有3种热部署方式: 1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动。 2.使用springloaded本地加载启动,配置jvm参数-javaagent:<jar包地址> -noverify。 3.使用devtools工具包,操作简单,但是每次需要重新部署。 用

游客ih62co2qqq5ww 2020-03-27 23:56:48 0 浏览量 回答数 0

问题

RDS的数据源如何配置?

轩墨 2019-12-01 20:55:59 839 浏览量 回答数 0

问题

MaxCompute产品简介:通告

行者武松 2019-12-01 22:01:10 1613 浏览量 回答数 0

回答

首先“缓存”Cache这个东西是干什么的,我们应该先有些基本的了解。要是不太明白的可以看看网上的解释:http://baike.baidu.com/view/907.htm 简单讲,阿里云OCS提供的功能就是提供对热点数据的高速访问。在使用OCS之前(或者在使用任何一种缓存服务之前),我们都应该明白关于缓存的这么几点: 缓存里的数据不是持久化保存的,也就是说它像是电脑里的内存,而不像硬盘;我们不能指望OCS里的数据一直保存不丢失。如果你真的需要存储持久化的数据,也许你应该出门左转找阿里云OSS(开发存储服务); 缓存里存的应该是“热点”数据。遵循常常出现的“20-80法则”,通常程序应用中都有一定比例的数据常常被请求访问,这就是所谓的热点数据,OCS正是为这种数据设计存在的。假定我们的程序中有100个数据,每次访问这些数据的概率完全是均匀分布的1/100,那么使用缓存的效果就不会太好,因为这其中不存在热点数据。 数据逐出。我们可以决定哪些数据是热点数据被放到缓存当中,但是如果我们的缓存容量不够大,这些热点数据中某些最近较少被用到的数据还是会被“挤出去”,这种行为叫做数据逐出。如果想减少出现这种情况,我们可以购买更高容量的OCS。 -------------------------         在开始使用之前,关于阿里云OCS,我们还需要知道以下这些事: 阿里云OCS仅支持阿里云内网访问,不支持公网访问。也就是说,我们用办公室或者家里的电脑(都属于公网)是无法连上阿里云OCS的。为什么会这样呢?因为缓存服务的根本目标是要提供低延迟的高速访问,而从公网电脑来连接OCS服务器的场景下,公网的网络环境是不可控的,可能出现延迟很高甚至断连接的情况,这使得缓存服务无法保证“高速、低延迟”的基本特性,所以阿里云OCS是不支持公网直接访问的。如果觉得高延迟的情况对于我们的应用也能接受,那么我们应该去选择阿里云其他的产品(比如OSS开放存储服务),而不应该选择OCS缓存服务。 阿里云OCS需要与ECS(阿里云服务器)配合使用,而且只能与本地区节点的ECS连通。这一点与上一条相关。OCS只能从阿里云内网访问,也就是说我们只能从阿里云ECS上才能访问并使用OCS服务。所以我们在官网购买OCS的时候,会看到提示信息说需要至少有一台ECS才能买OCS。另外,阿里云ECS是分地区节点的,比如北京、杭州、青岛等,我们在购买OCS缓存的时候也要选相应的地区节点。北京的ECS只能访问北京的OCS,而不能访问杭州或青岛的OCS。 阿里云OCS是按购买量收费的,而不是按使用量收费。这点需要提醒新同学们注意,在我们购买了OCS缓存之后,计费就已经开始了,即使我们还没有真正使用缓存。也就是说,我们买了1G的OCS缓存后,即使目前使用量为0,系统也会按照1G的标准来计费。所以我们在购买OCS的时候,要选取适合我们业务数据需要的缓存档位。当然了,阿里云OCS也提供在线升降缓存容量的功能。也就是说,如果我们在使用了一段时间之后,发现购买的OCS缓存不够用了(或者缓存使用量太低),我们可以在线的对已有的OCS实例进行升档(或者降档),而OCS缓存服务不会被中断。 阿里云OCS对于存贮的对象大小是有限制的。缓存通常对其内部存储的数据尺寸是有限制的,阿里云OCS也一样。目前OCS支持存储的数据对象的上限是1,000,000Byte。如果要存的值超过这个限制,我们应该考虑把数据压缩,或从逻辑上分成不同键存储的几个值。 ------------------------- 现在我们开始在阿里云官网上购买OCS实例  http://buy.aliyun.com/ocs  首先我们需要已经有了一台阿里云ECS,否则我们无法在这个页面成功购买OCS。购买的第一步,我们先要确定选择买哪个地区的OCS;这个很重要,如上面所说,如果我们的ECS是属于北京,而我们在这里购买了杭州的OCS,那么这两者是无法配合协同工作的。所以,在购买OCS的时候一定要选择应用服务器ECS所在地区的OCS。下一步是要选择OCS缓存容量。我们要购买多大的缓存,这个取决于我们对自身业务应用中热点数据总量大小的判断。如果一时难以准确判断数据量,也不用担心:我们可以先买一个大致容量的OCS(比如1GB),随后在使用过程中,通过OCS控制台提供的监控功能,我们可以了解到目前OCS缓存的使用量等数据,然后可以自主的调整所需的缓存量,购买更大的缓存(比如升到5GB)或者减少已购的缓存量(比如降到512MB),阿里云会根据我们选择的新配置来调整对应的收费。此外在选择缓存容量的时候,要知道不同容量的缓存档位对应着不同的性能配额,具体来说包括两个指标:吞吐量带宽与每秒请求处理数(QPS)。比如以现在的配额标准,1GB的OCS缓存对应5MB/sec的吞吐量带宽和3000次/sec的请求处理峰值。当我们使用OCS的时候,如果数据量传输的带宽超过了5MB/s, 或者每秒的请求数超过了3000次,都会触发性能配额控制机制,导致某些请求无法返回正常结果。在确定了地区和缓存容量之后,我们就可以直接下单购买OCS了。 ------------------------- 在成功购买OCS之后,我们的联系邮箱和手机都会收到OCS创建成功的通知,里面会包括OCS的实例ID和初始密码(关于密码的用处后面会讲到)。我们现在登录OCS控制台, http://ocs.console.aliyun.com/ 就可以看到已经购买到的OCS实例列表。在列表页面上对应OCS实例的后面点击“管理”,就可以进入该OCS实例的详情页,看到更多的详细信息。 ------------------------- 我们现在已经有了一个OCS缓存实例,现在是时候试玩OCS了。要使用OCS就要写一点程序代码,不过不用担心,我们在这里采用“Happy-Path”的方法,从最简单的操作开始,让新上手的菜鸟们能马上就有一个能调用OCS缓存服务的程序。OCS提供缓存服务,它并不要求我们的程序是哪种语言来写的。我们这里先以Java程序为例,写一个最简单的“Hello World”。(其他编程语言的例子,我们随后附上。)第一步,登录你的阿里云ECS服务器,在上面安装Java JDK和你常用的IDE(比如Eclipse)。一定要记得我们之前说过的,只有在阿里云内网的ECS服务器上,才能访问我们的OCS实例。所以,用家里或是公司的电脑执行下面的代码示例是看不到结果的。 Java JDK和Eclipse都很容易从网上找到下载,比如 http://download.eclipse.org/ 或者 http://www.onlinedown.net/soft/32289.htm 第二步,在把Java开发环境准备好了之后,下载第一个代码示例(Sample-Code-1第三步,在Eclipse里面打开刚下载的OcsSample1.java,我们要根据自己的OCS实例信息修改几个地方。        我们每个人买到的OCS实例的ID都是不重复的,其对应的阿里云内网地址也是独一无二的,这些信息都在OCS控制台上显示出来。我们在同自己的OCS实例建立连接的时候,需要根据这些信息修改OcsSample1.java中的对应地方。         public static void main(String[] args) {                                        final String host = "b2fd2f89f49f11e3.m.cnqdalicm9pub001.ocs.aliyuncs.com"; //控制台上的“内网地址”                   final String port ="11211";       //默认端口 11211,不用改                   final String username = "b2fd2f89f49f11e3"; //控制台上的“访问账号”                   final String password = "my_password"; //邮件或短信中提供的“密码”                   …… …… ……       信息修改完毕,我们可以运行自己的程序了。运行main函数,我们会在Eclipse下面的console窗口看到下面这样的结果(请忽略可能出现的红色INFO调试信息): OCS Sample CodeSet操作完成!Get操作: Open Cache Service,  from www.Aliyun.com     OK,搞定!我们已经成功的连接上了阿里云的OCS并且调用缓存服务成功,就这么简单。-------------------------我们已经成功运行了第一个调用阿里云OCS缓存服务的Sample程序OcsSample1.java,现在我们看看这个程序里都做了什么。                                  …… …… ……                            System.out.println("OCS Sample Code");                                                        //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据,                             //这个数据对应的value是字符串 Open Cache Service,  from www.Aliyun.com                            OperationFuture future = cache.set("ocs", 1000," Open Cache Service,  from www.Aliyun.com");                            //向OCS中存若干个数据,随后可以在OCS控制台监控上看到统计信息                            for(int i=0;i<100;i++){                                String key="key-"+i;                                String value="value-"+i;                                 //执行set操作,向缓存中存数据                                cache.set(key, 1000, value);                            }                             System.out.println("Set操作完成!");                             future.get();  //  确保之前(cache.set())操作已经结束                         //执行get操作,从缓存中读数据,读取key为"ocs"的数据                            System.out.println("Get操作:"+cache.get("ocs"));                            …… …… …… 从这些代码中可以看出: 1. 我们在建立与OCS缓存服务器的连接后,先是向缓存中存(set)了一个“key-value”(键值对)形式的数据,这个数据的key是字符串“ocs”,其对应的value也是字符串;2. 接着我们继续向缓存中存(set)了100个其他简单的“key-value”数据。3. 最后我们进行功能验证。根据之前给定的key,从缓存中获取(get)其对应的value:也就是输入字符串“ocs”,缓存给我们返回value对应的字符串。 以上的步骤中,1与3是相对应的,我们只有先向缓存中set了某个数据,后面才能从缓存中get到这个数据。步骤2中程序向缓存set了100个数据,是为了从另一个方面进行验证。我们回到阿里云OCS控制台,打开“实例详情”页,在“实例监控”的部分点击刷新,会看到其中一些监控项的值已经发生了变化(注:监控信息的刷新可能存在数秒的延迟), 其中的“Key的个数”已经变成了101,也就是说我们程序已经成功地向OCS缓存中存放了101个数据。-------------------------在写下一篇技术贴之前,列一些OCS用户在入门时问到的问题,方便其他刚认识OCS的同学:Question:买了1G的OCS,那就相当于这个1G是专门缓存用的,与ECS服务器的内存没关系是吧~Answer:是的,OCS的缓存容量与您ECS的内存容量是没关系的。Question:OCS 外网测试,怎么连接?有没有外网连接地址哦?Answer:OCS是不能从外网访问的。参照上面的文章。Question:我之前那个OCS可以正常使用,但现在换了一个OCS就不行了,怎么回事?Answer:经核实您的主机是属于杭州节点的,而现在这个OCS是青岛节点的,不同地域之间的产品内网不互通。Question:在设置一个value时,如果指定过期时间为0,会永久保留吗?Answer:指定过期时间为0,OCS就认为此数据不根据过期时间发生淘汰;但是,此数据仍有可能基于LRU被其他数据淘汰,或者由内存清理造成丢失 ,因此不能认为这个value会永久保留。 Question:对OCS的访问是否需要负载均衡? Answer:不需要。对访问请求的负载均衡都是在OCS服务器端来进行的,用户直接使用缓存服务即可,不用考虑负载均衡的事情。 Question:OCS是否会主动关闭闲置的连接? 如果会,请问连接闲置多久会被关闭?Answer:OCS不会主动关闭闲置的用户连接。但是用户的环境如果使用了SLB,则需要参考SLB连接关闭时间。Question:如何设置数据在OCS缓存中的过期时间 ?Answer:关于设置缓存数据的过期时间,可以参考Memcached官方说明: https://code.google.com/p/memcached/wiki/NewCommands An expiration time, in seconds. Can be up to 30 days. After 30 days, is treated as a unix timestamp of an exact date. 翻译过来就是:0~2592000表示从当前时刻算起的时间长度(以秒计算,最长2592000即30天);大于2592000表示UNIX时间戳。 此值设置为0表明此数据不会主动过期。------------------------- 回 12楼(村里一把手) 的帖子 谢谢,要让大家用得好才算数。 -------------------------缓存与数据库相结合使用,是常见的一种应用搭配场景。现在我们再看一个例子,是用OCS搭配MySQL数据库使用。Java示例代码在此(这个示例代码中,大部分与前几个例子类似。因为要与数据库结合,所以程序需要依赖一个JDBC的jar包才能运行。支持MySQL的JDBC jar包在此(在程序中添加MySQL数据库的连接信息:     …… …… ……            // JDBC driver name and database URL    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";    static final String DB_URL = "jdbc:mysql://xxxxxxx.mysql.rds.aliyuncs.com/testdb"; //MySQL数据库URL        //  Database用户名及密码    static final String DB_USER = "xxxxxx";    static final String DB_PASS = "xxxxxx";            我们设想这样一个场景:我们需要从数据库的tableone表中查找区域不属于北京的记录总数,用SQL表示就是:SELECT count(*)  FROM testdb.tableone where region != 'beijing'假定这个表中的数据如下,则这条SQL查询返回的结果就是7:如果这个查询被调用到的频率很高,多个用户反复不断的在数据库中查这个数据,我们就可以把这个查询结果放到OCS缓存中去。看下面的代码片段,我们用for循环模拟用户连续20次在数据库中查询上述SQL语句:              for (int i = 1; i <= 20; i++) {                String sql = "SELECT count(*)  FROM testdb.tableone where region != 'beijing'";                String key ="non-beijing"; //给SQL语句自定义一个key                //在OCS缓存里按key查找               String value =  (String) cache.get(key);                                if (value == null) {                    // 在OCS缓存里没有命中                    // step 1:从My SQL数据库中查询                    //Load MySQL Driver                      Class.forName(JDBC_DRIVER);                     con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);                    ps = con.prepareStatement(sql);                    ResultSet result = ps.executeQuery(sql);                    result.next();                                        value=result.getString(1);                    System.out.println("从MySQL中查询数据.  Key= "+key+" Value="+value);                                       // step 2: 把数据库返回的数据作为value存放到OCS缓存中去                    cache.set(key, EXPIRE_TIME, value);                                    } else {                    // 在OCS缓存里命中                    System.out.println("从OCS中读取数据.     Key= "+key+" Value="+value);                }                            }// end of for在这段代码中我们可以看到,我们给这条SQL语句标记了一个key,当有用户要执行这条SQL的时候,我们首先按照key在OCS缓存中查找:如果没有对应的缓存数据,则连接MySQL数据库执行SQL查询,把结果返回给用户,并把这个查询结果存到OCS缓存中去;如果OCS中已经有了对应的缓存数据,则直接把缓存数据返回给用户。运行结果如下: 从MySQL中查询数据.  Key= non-beijing, Value=7从OCS中读取数据.     Key= non-beijing, Value=7从OCS中读取数据.     Key= non-beijing, Value=7从OCS中读取数据.     Key= non-beijing, Value=7…… …… 从结果可以看出,程序第1次是从MySQL数据库当中查询数据,后面的19次都是从OCS缓存中获取key对应的value直接返回。也就是说,OCS降低了程序去连接MySQL数据库执行SQL查询的次数,减轻了对数据库的负载压力。用户对热点数据访问的频率越高,OCS的这种优势就越明显。

唐翰 2019-12-01 23:41:23 0 浏览量 回答数 0

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18

回答

常见错误处理 错误码 处理方式 1000 一般为语法或者超时引起,如果多次刷新不再出现,则是超时引起,如果仍出现,则语法有问题,请对照文档仔细检查,如分隔符、函数字段类型等 2112 排序表达式中的text_relevance(field)、fieldterm_proximity(field)等文本feature中的field必须在查询的索引包含的源字段中,否则会报错,但不影响搜索结果。 3007 对于API推送系统是有频率限制,请控制好频率重试 4003 可以先按照文档样例,试下签名结果是否一致,判断是否是签名算法问题。如果不是,请检查下参数按照字典序排序后应该是公共参数(大写字母)在前,请求参数(小写字母)在后。另外还有空格等一些编码规则,具体参考授权文档介绍 4007 一般Json字段内容中包含双引号或者不可见字符会导致格式解析失败,请转义或者过滤后重试 4010 TimeStamp参数是有过期时间的,请按照要求格式取当前时间来计算 5001 没有找到对应的用户,一般为ACCESSKEY信息不正确,或者使用区域域名错误(API域名请以应用管理-》基本信息-》API入口为准),请检查修改后重试 5008 服务内部是通过Accesskey来进行用户身份校验的,请确保AccessKey已经开启,您可以通过控制台AccessKey管理入口来创建和删除 6013 start+hit不能超过5000,否则会报错无结果。需要超过5000的请求,请查看下API文档中的SCROLL接口,看是否满足需求 6015 请及时到控制台配额管理处进行QPS峰值的调整,否则超过的请求会被丢弃 6127 除了query子句,其他子句出现的字段都必须配置为属性字段才能使用。请修改应用结构后重试 系统级别(1000-1999) 错误码 错误说明 1000 系统内部错误 1001 没有找到模版 1003 不支持的索引类型 1004 服务暂时不可用,请稍后再试 应用相关(2000-2999) 错误码 错误说明 2001 待查应用不存在 2002 应用已经存在 2003 到达创建应用总限制 2004 应用名不可用。应用名由数字、26个英文字母或下划线组成,长度不超过30位 2005 应用名称没有设定 2006 新应用名称没有设定 2007 备注不超300字 2008 摘要配置参数错误 2009 更新状态失败 2010 应用暂停中 2011 应用冻结中 2012 应用未开启 2013 删除失败,没有此应用 2014 文件上传失败 2016 区域信息没有 2017 此应用并不属于当前区域 2099 当前接口暂时不提供服务。 2101 表达式不存在 2102 表达式名称被占用 2103 到达该应用表达式总数限制 2104 表达式名不可用。表达式名由数字、26个英文字母或下划线组成,长度不超过30位 2105 表达式名称没有设定 2106 新表达式名称没有设定 2107 表达式备注不超过300字 2108 表达式备注格式错误 2109 表达式格式错误 2110 表达式长度超过限制 2111 表达式id未指定 2112 表达式错误 2113 表达式不能为空 2114 操作错误 2201 粗排配置名没有设定 2202 粗排配置名已经存在 2203 粗排配置个数超出限制 2204 粗排配置名错误。只能由数字、26个英文字母或下划线组成 2205 粗排配置名长度超出限制 2206 粗排字段必须是数值型 2207 粗排配置不存在 2208 粗排配置错误,必须包含字段 2209 粗排配置权重错误,必须是-100000到100000之间的非0数值,浮点数精度支持6位 2210 与系统默认粗排配置重名 2211 timeliness()的参数必须是INT类型 2112 排序表达式错误 2551 查询指定的下拉提示规则不存在 文档相关(3000-3999) 错误码 错误说明 3001 文档不能为空 3002 文档大小超过限制 3003 已经到最大文档数 3004 保存文档失败 3005 doc格式错误 3006 文档操作cmd不合法 3007 请求过于频繁 3008 文档总长度太长 3009 没有文档id 3011 在配置RDS或MYSQL数据源后,不支持API推送文档 3012 未找到指定资源 3013 文档推送速率超过应用配额 3014 文档推送速率触发系统限制 3015 单次推送文档个数超过系统限制 3016 文档总数超过应用配额 授权相关(4000-4999) 错误码 错误说明 4001 认证失败 4002 需要设置签名 4003 签名验证失败 4004 需要设置SignatureNonce 4005 SignatureNonce不能重复使用 4006 SignatureNonce验证失败 4007 解析JSON格式失败 4008 用户名称不能为空,请检查域名正确性 4009 需要指定用户标识 4010 时间过期 4011 demo帐号禁止执行的操作 4012 数据表不存在 4013 Timestamp格式错误 4014 需要设置Timestamp 4020 RAM子账户鉴权失败 用户相关(5000-5999) 错误码 错误说明 5001 用户不存在 5002 用户名不正确 5003 需要用户登录 5005 用户未开通OpenSearch服务,请前往阿里云官网开通 5008 用户没有启用ACCESSKEY 5100 用户没有此区域的操作权限 5004 用户未缴费 5005 用户未开通OpenSearch服务,请前往阿里云官网开通 5006 欠费冻结中 5008 用户没有启用ACCESSKEY 5009 用户已经删除 5010 ACCESSKEY 已经禁用 5011 通过邮箱获取到多个用户 5012 CODE_USER_ALIYUN_USER_ID_INVALID,错误信息为空 5013 CODE_USER_ALIYUN_BID_INVALID,错误信息为空 5014 CODE_USER_CLIENT_ID_INVALID,错误信息为空 5015 CODE_USER_ID_INVALID,错误信息为空 5100 用户没有此区域的操作权限 搜索相关(6000-6999) 错误码 错误说明 6001 查询query为空 6002 并不被支持的搜索key关键字 6003 并不被支持的搜索field关键字 6004 复杂查询为空 6005 field无效 6006 请求包含太多应用名 6007 超出多索引查询每个模板中索引总数 6008 请求串语法错误,解析失败 6009 查询子句过长 6010 无效的rerank size 6011 SignatureNonce格式错误 6013 start+hit超过系统限制 6014 因系统繁忙,请求被丢弃 6015 因流量超出配额,请求被丢弃 6016 查询hit数超过系统限制 6017 目前scroll只支持search_type为scan,也就是说设置了参数scroll,就必须设置参数search_type=scan 6018 设置了scroll参数,但没有search_type参数 6019 传入的scroll_id参数解析失败 6020 无效的scroll参数值 6021 scroll请求不支持Aggregate/Sort/Distinct,当传入这些clause时,会报错 6022 scroll_id已经过期失效了 6100 查询词为空 6101 查询的索引字段不存在 6102 Query中的数值范围错误 6103 Filter中的表达式返回值必须为bool类型 6104 Sort中的表达式返回值不能为bool类型 6105 Sort中存在相同的表达式 6106 查询query语句非法 6107 统计函数表达式的返回值不能为bool或者string类型 6108 统计中的范围必须为升序 6109 统计中的范围表达式返回值类型错误 6110 统计函数不存在 6111 不支持的统计函数 6112 Query 子句错误 6113 Filter子句错误 6114 Aggregate子句错误 6115 Sort子句错误 6116 Distinct子句错误 6117 查询中包含未知的子句 6118 语法错误 6119 Distinct子句中的dist_count值错误,应该为大于0的整数 6120 Distinct子句中的dist_times值错误,应该为大于0的整数 6121 Distinct子句中的reserved值错误,应为true/false 6122 Distinct子句缺少distinct_key 6123 Distinct子句中的grade值错误,例如为空,或非数值 6124 Distinct子句中包含distinct个数不对,个数应在(0,2] 6125 Distinct子句中的max_item_count值错误,应该为大于0的整数 6126 Distinct子句中的update_total_hit值错误,应为true/false 6127 请求中包含了未定义的attribute字段 6128 表达式中的二元操作符的两边的表达式结果类型不匹配 6129 表达式中的二元操作符的两边表达式不能同时为常量 6130 二元逻辑运算表达式类型错误,应为bool类型 6131 二元表达式中不支持string类型 6132 二元表达式中不支持数组类型 6133 位操作中的类型错误 6134 常量表达式的返回值类型错误 6300 常量表达式类型应是整数或浮点数 6301 位取反操作数类型必须为整数 6302 取负数操作数必须为数值 6303 逻辑非操作数必须为数值 6304 二元运算操作数类型错误 6305 非法的二元运算符 6306 函数参数类型错误 6307 函数未定义 6308 函数参数个数错误 6309 非法的数组操作 6310 可过滤字段不存在 6311 数组字段被错当作单值使用 6312 单值字段被错当作数组使用 6313 数组字段下标越界(小于0) 6314 不支持的字段类型 6315 索引字段参数不存在 6316 Query中没有指定索引 6317 Filter子句中只能使用一次公式 6318 公式语法解析出错 6500 搜索语法中包含不存在的字段 6501 在线系统没有索引数据 6502 用户query语法错误 6601 一个索引字段只能包含在一个规则中 6602 没有查询词,如default:’’的情况 6603 查询中的索引字段没有在查询分析规则中指定 6604 关键词没有使用引号括起来,如default:xxx,正确为default:’xxx’ 6605 双引号查询不能配置查询分析规则 6607 disable参数格式错误 6608 disable指定关闭的索引字段不存在 6609 disable指定关闭的功能列表不存在 6610 查询分析后的query为空(原query为空,或者全部是stopword) 6611 查询中没有指定索引字段 数据处理相关(7000-7999) 错误码 错误说明 7100 没有错误发生 7101 单个文档过长 7102 文档所属应用的元信息错误(clientid 或 accesskey、应用名或表名等不正确) 7103 HA3 文档格式错误: 字段解析失败 7104 JSON文档格式错误:字段解析失败 7105 JSON 文档格式错误: json非法 7106 JSON 文档格式错误: json非法 7107 不支持的编码 7108 编码转换失败 7109 fields中没有id字段 7110 fields中id定义不合法 7111 fields中包含保留字段 7201 HA3 文档格式错误: cmd 非法(cmd 非 ADD/UPDATE/DELETE) 7202 JSON 文档格式错误: cmd 非法(cmd 非 ADD/UPDATE/DELETE) 7301 主键字段不存在 7302 字段数据类型错误 7303 数组字段相关错误 7401 文档总数超出配额 7402 每日更新文档数超出配额 7403 单次导入的数据大小超出配额 7500 系统内部错误 7501 云梯Hive待同步字段的列号超出了当前数据的列数范围 7502 从Mysql中读取到的主键字段为空,请联系数据库管理员 7503 JsonKeyValueExtractor内容转换错误: Json格式非法 7504 JsonKeyValueExtractor内容转换错误: key不存在 7505 TairLDBExtractor内容转换错误: namespace非法(应为int32类型) 7506 TairLDBExtractor内容转换错误: 从Tair中读取数据失败 7507 MySql实时同步过滤条件格式错误 7508 系统内部错误: 内容转换插件初始化失败 7509 TairLDBExtractor内容转换配置错误:Tair连接失败,请检查configId 或 namespace 是否有效 7510 KVExtractor内容解析错误:KV格式无法解析 7511 OSS 数据读取失败 7512 OSS 内容长度超过限度 7513 OSS 内容解析错误 7514 系统内部错误: OSS LOG 格式不兼容 7515 过滤条件执行错误 7516 字段映射过程中源表字段缺失 7517 StringCatenateExtractor内容转换错误: 源字段不存在 7518 StringCatenateExtractor内容转换错误: 不支持多值字段 7601 任务执行错误 7602 更新app失败 7701 数据清理任务错误:指定过滤字段不存在 7801 文档格式错误 文档错误内部通知(8000-8999) 错误码 错误说明 8001 保存错误信息失败 8002 必要参数缺失 8003 应用不存在 8004 参数错误 模板相关(9000-9999) 错误码 错误说明 9001 用户名为空 9002 应用名为空 9003 模板名不可用。模板名只能由数字、26个英文字母或下划线组成 9004 模板名长度不可超过30位 9005 查询模板信息出错 9006 模板名字已存在 9007 插入模板信息出错 9008 无效的数据 9009 定义的字段数目超过系统允许的最大字段数 9010 此字段保留字段名 9011 字段已存在 9012 索引名称必须以字母开头,由数字、26个英文字母或下划线组成,长度不超过30位,多值字段类型不能为SWS_TEXT或TEXT 9013 不支持数组 9014 不支持主键 9015 未设定主键 9016 主键不唯一 9017 更新信息失败 9018 删除信息失败 9019 包含多个索引字段的搜索字段最多4个 9020 同一个STRING/TEXT类型的索引字段不能进入多个只包含一个字段的搜索字段中 9021 索引名称必须以字母开头,由数字、26个英文字母或下划线组成,长度不超过30个 9022 该表已经关联 9023 索引名不能包含多类型的字段 9100 系统内部错误 9101 该字段超过数量限制 9102 该数据源未被用到 9103 无效的外表连接 9104 最多2级关联 9105 待查模板不存在 9501 用户名为空 9502 应用名为空 9519 未指定模板 9600 系统内部错误 9902 插件字段类型错误 9999 此域名不提供本服务 数据同步相关(10000-) 错误码 错误说明 10001 没有指定的tddl group key,tddl信息获取失败 10002 获取字段失败或者表不存在 10011 连接agg失败 10012 应用里存在doc 10013 应用不是自定义结构 10110 该任务已结束 10010 部分数据源有问题,已经忽略有错误的数据 10014 数据源类型错误 10100 创建任务失败,未结束的任务已经存在 10101 没有指定应用ID 10106 没有指定应用ID 10107 没有指定应用ID 10102 ACTION无效 10112 文档数量超过限制 10201 获取配额列表失败 10202 更新配额失败 10301 参数错误:参数未提供或者格式不正确 10302 时间参数错误 10303 数据源未配置 10304 该表配额超限 10305 OSS参数错误 10306 OSS BUCKET名称无效 10307 OSS 记录类型无效 10308 OSS BUCKET日志功能未开启 10309 存在未完成的任务 10310 不是运行中的应用,无法创建任务 10311 时间范围不合法 10312 应用描述长度超过限制,最多600字 10313 OSS 内容格式不合法 10314 OSS BUCKET所在区域ACL网络不通 10315 OSS BUCKET的地址信息不合法 10330 数据源参数不合法 10350 连接ODPS服务失败 10351 ODPS 返回错误 10400 OSS前缀不合法 10450 字段不存在

保持可爱mmm 2020-03-26 22:06:37 0 浏览量 回答数 0

问题

【精品问答】python百大常见问题与答案详解

祖安文状元 2020-02-24 17:56:41 363 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅