• 关于

    当前记录不可用

    的搜索结果

问题

从同一张表中找出具有不同条件的两个不同结果的并集[关闭]

找出两个结果的并集,其中一个条目将在特定条件下出现,而一个条目将不存在于条件下但作为最后记录可用。当前关于标准的数据的联合,并且作为不等于标准的最新记录可用。 结果应仅来自表B。 我有以下两个表...
几许相思几点泪 2019-12-26 20:07:51 0 浏览量 回答数 1

问题

activitywatch 一个记录你的时间都花在那的 Python 项目

ActivityWatch的目标很简单:在不损害用户隐私的情况下,尽可能多地收集有价值的数据。 为了实现这一目标,我们通过创建一个用于在用户本地计算机上安全存储数据的应用程序以及一组记录数据的观察...
huc_逆天 2020-05-21 19:12:12 21 浏览量 回答数 1

问题

负载均衡高可用框架

负载均衡高可用特性介绍 集群化部署  如下图所示,负载均衡系统中四层负载均衡(LVS)服务、七层负载均衡(Tengine)服务和控制系统等关键组件都采用集群化部署&#...
行者武松 2019-12-01 21:36:54 1691 浏览量 回答数 0

问题

HBase 高可用原理与实践

转载自:http://www.hbase.group/article/42 前言 前段时间有套线上HBase出了点小问题,导致该套HBase集群服务停止了2个小时,从而造成使用该套HBase作为...
pandacats 2019-12-20 21:19:02 0 浏览量 回答数 0

回答

canal原理 binlog介绍 binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undo log是完全不同的日志;其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以"事务"的形式保存在磁盘中;Mysql binlog日志有ROW,Statement,MiXED三种格式: Row: 仅保存记录被修改细节,不记录sql语句上下文相关信息优点:能非常清晰的记录下每行数据的修改细节,不需要记录上下文相关信息。由于所有的执行的语句在日志中都将以每行记录的修改细节来记录,因此,可能会产生大量的日志内容。 Statement: 每一条会修改数据的sql都会记录在binlog中优点:只需要记录执行语句的细节和上下文环境,避免了记录每一行的变化。但是存在某些函数和存储过程不一定能够保证在slave上和master上执行结果一致。 Mixed:以上两种格式的结合。不过,新版本的MySQL对row level模式也被做了优化,并不是所有的修改都会以row level来记录,像遇到表结构变更的时候就会以statement模式来记录,如果sql语句确实就是update或者delete等修改数据的语句,那么还是会记录所有行的变更;因此,现在一般使用row level即可。 通过变量binlog_format查看当前binlog格式: binlog的位置由文件和文件的相对位置唯一确定,我们可以通过命令行查询binlog的内容: 数据库的主从复制是binlog的用途之一,其原理为: MySQL master 将数据变更写入二进制日志 MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据 canal简介 作为阿里巴巴的一个开源项目,canal 不仅在公司内部经受了跨集群、跨国同步的考验,而且已经在很多大型的互联网公司比如美团等都有广泛的应用。 canal是通过模拟成为mysql 的slave的方式,监听mysql 的binlog日志来获取数据并转存到不同的目的地(destination)。 canal架构 canal server是canal的基本部署实例,在实现上一个canal server 部署实例由多个binlog数据通道实例组成的。canal server就是一个jvm运行实例, binlog数据通道实例由Parser、Sink和store模块组成,完成binlog的解析、过滤和存储一整条链路功能。跟binlog数据通道的关系为: 其中数据通道实例的逻辑拓扑结构可表示为: canal部署 数据通道实例默认跟数据库实例一一对应,每个通道实例在部署上有自己独立的属性配置目录,目录里面维护两类配置文件: -instance.properties:配置数据库的连接信息和过滤配置等信息 canal.properties:作为所有数据通道的公共部分,用于配置全局性的信息,如mq地址、zk地址以及cannal server运行时参数等 canal server负责本实例上的所有数据通道的可用性,采用pull的消费模型供canal客户端读取消息。在部署上面,可以单独部署,在生产环境上,建议采用HA高可用部署方案: 大致步骤为: canal server要启动某个canal instance时都先向zookeeper进行一次尝试启动判断 (实现:创建EPHEMERAL节点,谁创建成功就允许谁启动) 创建zookeeper节点成功后,对应的canal server就启动对应的canal instance,没有创建成功的canal instance就会处于standby状态 一旦zookeeper发现canal server A创建的节点消失后,立即通知其他的canal server再次进行步骤1的操作,重新选出一个canal server启动instance. canal client每次进行connect时,会首先向zookeeper询问当前是谁启动了canal instance,然后和其建立链接,一旦链接不可用,会重新尝试connect. 通过合理配置数据通道的备份数量,可以实现canal server集群的高可用和部分负载均衡功能,canal在zk集群的注册信息结构为: 了解了canal的基本原理和部署方式之后,再来看看如何基于canal设计数据同步架构。 总体流程 canal server:通过binlog通讯协议拉取mysql 服务器的日志,完成解析并存储到消息系统kafka,canal client消费kafka数据写入s3包括合并和去重,结果数据以分区形式加载到hive表。涉及到的主要功能组件: mysql :需要同步的mysql服务器,对于开启gtid的阿里云 rds,因为slave binlog数据格式是经过简化的,同步的mysql服务器需要选择mysql master,对于aws rdb数据库,暂没有此要求,可以使用mysql slave。 canal server:拉取并解析mysql binlog日志,并封装成易于下游模块使用的数据结构。canal server实例是部署的基本单元,对一个数据库实例可以根据要求的可用性级别部署一个或多个canal server,如果一个数据库实例对应有多个canal server实例,因为同一个mysql同步部署单元中只能有一个主canal实例处于Active状态,于是在多canal实例的情况下需要借助zookeeper选主。 kafka:canal server将解析后的binlog数据发送到配置的kafka topic,canal server支持将同一个mysql实例的所有binlog发送到同一个topic、多个分表发送到一个topic以及每个表到独立的topic等。 canal client:拉取kafka topic数据,根据topic数据大小进行数据的并行消费、合并、排序和去重等功能。canal client可以作为常驻进程托管到实时流系统比如spark streaming、flink等,也可以是作为批处理任务托管到离线调度系统。 s3: kafka消费后的数据暂存外部系统,可以是aws的s3或者hdfs、甚至是本地文件系统等,根据使用使用环境和可用性要求选取。 hive:mysql增量数据导入到hive分区表,表结构根据mysql表的schema 自动创建。 数据消费 canal 的EventStore基于本地内存存储实现,数据的存储、读取和ack采用类似Disruptor的RingBuffer的实现思路: RingBuffer定义了3个cursor: Put : Sink模块进行数据存储的最后一次写入位置 Get : 数据订阅获取的最后一次提取位置 Ack : 数据消费成功的最后一次消费位置 canal客户端在数据消费支持并行消费、批量消费和异步消费,增大消费处理能力。 上面示例代码演示了一个从canal server集群中循环拉取消息的过程:首先设置canal server的zk地址和destination(对应一个canal server)以及订阅的库表(可以通过filter可以对destination进一步过滤筛选)等信息,然后通过调用getWithoutAck方法批量读取,如果读取并且处理没有异常抛出,就可以通过ack确认进行下一批次读取。通过这种读取canal server数据并实时消费的方式在普通场景下是可行的,但在生产环境中更适合结合kafka,下文详述。 kafka 在简单的数据同步场景,可以按照上面实现自己的canal客户端直接读取canal server的数据,但是对于生产环境使用场景,因为binlog的存储时间有限(比如阿里云rds数据库默认保存18小时),为防止数据不可用以及对于需要重复消费等场景,有必要将数据存储到第三方消息系统,如kafka或者rocketmq。在canal中,可以直接配置canal消息转存到kafka和rocketmq这两个消息系统,并可以自定义配置投递到topic的规则。如果topic存在多个分区,还可以指定数据在分区之间的路由方式,以kafka为例: 我们只关注supplier.sku_link_rel表的binlog,发送到topic为supplier.sku_link_rel中,并且设置根据表的主键id在6个分区中路由。同时忽略系统库mysql的消息,减少不必要的数据传输。对于分表的方式,还可以将多个分表的数据合并到同一个topic: 示例中,将名字以sale_order_line开头的表的数据合并到topic:order_center.sale_order_line,注意其中topic路由方式按照表的主键$pk
游客2q7uranxketok 2021-02-05 14:41:30 0 浏览量 回答数 0

回答

Kafka的topic可以看作一个partition的queue, 通过发给topic时指定partition(或者用一个partitioner 比如按key做hash来指定使用那个partition), 不同的key的消息可以发送到不同的partition, 相同key的message则可以保证发送到同一个partition去, topic里的信息可以靠一个确定的index来访问, 就好像一个数据库一样,所以只要在data retention到期之前,consumer都可以用同一个index来访问之前已经访问过的数据; Kafka Transactional Messaging 前边说过, Kafka Stream是建立在kafka分布式队列功能上个一个library, 主要依靠kafka的Transactional Messaging来实现end2end exactly once msg processing; Transactional Messaging是指用户可以通过类似以下code来定义哪些对kafka topic的写属于一个transaction, 并进一步保证tx的atomic和Isolation producer.initTransactions(); try { // called right before sending any records producer.beginTransaction(); //sending some messages... // when done sending, commit the transaction producer.commitTransaction(); } catch (Exception e) { producer.close(); } catch (KafkaException e) { producer.abortTransaction(); } Kafka transaction保证了, beginTransactions之后的, 所有往不同Kafka topic里发送的消息, 要么在commitTransaction之后才能被read-committed的consumer看到, 要么由于close或者failure而全部作废, 从而不为read-committed的consumer所见; 而kafka stream通过用kafka本身的分布式queue的功能来实现了state和记录处理event进度的功能; 因为 (1) 所有的要发送的计算结果(由于可以允许计算发不同消息给多个下游,所以可能发给不同的topic和partition) (2)记录input event stream的消费进度, (3)所有的state的所有更新, 这3点, Kafka Stream都是用写消息到kafka topic里实现的, (1)自不必说,本来就是往topic里写数据,(2)其实是写当前consume position的topic; (注意Kafka Stream的上下游消息传递考的是一个中间隐藏的Kafka topic, 上游往这个topic写, 下游从这个topic读, 上游不需要下游的ack,只要往topic里写成功即可, 也不需要管下游已经处理到那里了;而下游则需要维护自己"处理到那里了"这个信息,储存在consume position的topic, 这样比如机器挂掉需要在另外的host上重启计算节点,则计算节点可以从记录consume position的topic里读出自己处理到那里然后从失败的地方重洗开始) (3)其实是写一个内部隐藏的state的change log的topic,和一个本地key value表(也就是本计算节点的state); failover的时候, 之前的"本地"表丢失没关系, 可以冲change log里恢复出失败前确定commit的所有state; (1)(2)(3)的topic都只是普通的Kafka topic; 只不过(2)(3)由Kafka Stream自动创建和维护(一部分用来支持高层API的(1)也是自动创建) 开始计算时, 在从上游的topic里拿msg之前, Kafka Stream会启动一个tx, 然后开始才开始计算, 此时tx coordinator会分配一个新的epoch id给这个producer并且以后跟tx coordinator通讯都要附带这个epochIdKafka Stream的计算节点的上游信息都来自kafka topic的分布式partition queue, 且只接收commit之后的record, 在queue里的record都有确定的某种sequenceId, 所以只要计算节点记录好自己当前处理的sequenceId, 处理完一个信息就更新自己的sequenceId到下一个record, 且commit到可靠dataStore里, 就绝对不会重复处理上游event, 而只要没有commit这个位置则可以无数次replay当前的record; (b.下游去重, c. 要求触发本次计算的event可以replay)在tx内部,每从上游topic里读一条信息就写一条信息到记录consume position的topic里, 每一个state的更改都会更新到本地的state(是一张表)里,且同时写在隐藏的changelog里; 计算过程中需要往下游发信息则写与下游联系的topic;计算结束后, commit本次的tx, 由Kafka Transactional Messaging来保证本次tx里发生的所有(1)往下游发的消息, (2) 记录input event stream的消费进度,(3)所有的state的所有更新是一个原子操作, 由于结果都成功写入kafka topic,所以达到计算结果的高可用性 (a.要求结果高可用, d+.要求记录event处理的进度, 并保证储存计算结果和state的更新不出现重复)计算过程中出现failure(比如机器挂了), 那么当计算重启,会重新运行initTransactions来注册tx, 此时tx coordinator会分配一个新的epoch id给此producer, 并且从此以后拒绝老的epoch id的任何commit信息来防止zombie的计算节点; tx coordinator同时roll back(如果上一个tx已经在prepare_commit状态, 继续完成transaction, 具体看下边Transactional Messaging这个章节); 如果rollback,那么input的处理进度, 状态的更改和往下游发送的信息都会rollback, 那么计算可以重新开始,就好像没有上次fail的失败一样; 如果上一个tx已经prepare_commit, 那么完成所有信息的commit; 此时当initTransactions返回,当前计算会接着上一个tx完成的进度继续计算;(e. state需要在replay event的时候rollback到处理event之前时的状态)
kun坤 2020-04-24 14:28:38 0 浏览量 回答数 0

回答

消息队列(Message Queue,简称 MQ)是构建分布式互联网应用的基础设施,通过 MQ 实现的松耦合架构设计可以提高系统可用性以及可扩展性,是适用于现代应用的最佳设计方案。MQ 产品生态丰富,多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖金融保险、(新)零售、物联网、移动互联网、传媒泛娱乐、教育、物流、能源、交通等行业。 阿里云消息队列新用户只需9.9/月https://www.aliyun.com/product/ons?utm_content=se_1005011197 消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。该产品最初由阿里巴巴自研并捐赠给 Apache 基金会,服务于阿里集团 13 年,覆盖全集团所有业务。作为双十一交易核心链路的官方指定产品,支撑千万级并发、万亿级数据洪峰,历年刷新全球最大的交易消息流转记录。 产品优势 稳定性 阿里巴巴双十一官方指定消息产品,支撑阿里巴巴集团所有的消息服务,历经十余年高可用与高可靠的严苛考验,是阿里巴巴交易链路的核心产品; 服务可用性 99.95%,Region 化、多可用区、分布式集群化部署,确保服务高可用,即便整个机房不可用仍可正常提供消息服务; 数据可靠性 99.99999999%,同步双写、超三副本数据冗余与快速切换技术确保数据可靠; 高性能 历年双 11 购物狂欢节零点千万级 TPS、万亿级数据洪峰,创造了全球最大的业务消息并发以及流转纪录(日志类消息除外); 在始终保证高性能前提下,支持亿级消息堆积,不影响集群的正常服务,在削峰填谷(蓄洪)、微服务解耦的场景下尤为重要; 丰富的消息类型 提供丰富的消息类型,满足各种严苛场景下的高级特性需求,当前支持的消息类型涵盖普通消息、顺序消息(全局顺序 / 分区顺序)、分布式事务消息、定时消息/延时消息; 安全访问控制 以消息主题、订阅组的粒度,对每一条消息的收、发请求都进行严格的访问控制,确保消息的安全性; 全面支持阿里云 RAM 主子账号、黑白名单、STS 等功能,支持 TLS 传输加密协议、阿里云 VPC 访问等;
NaCl鱼 2020-04-17 09:21:25 0 浏览量 回答数 0

回答

消息队列(Message Queue,简称 MQ)是构建分布式互联网应用的基础设施,通过 MQ 实现的松耦合架构设计可以提高系统可用性以及可扩展性,是适用于现代应用的最佳设计方案。MQ 产品生态丰富,多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖金融保险、(新)零售、物联网、移动互联网、传媒泛娱乐、教育、物流、能源、交通等行业。 阿里云消息队列新用户只需9.9/月https://www.aliyun.com/product/ons?utm_content=se_1005011197 消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。该产品最初由阿里巴巴自研并捐赠给 Apache 基金会,服务于阿里集团 13 年,覆盖全集团所有业务。作为双十一交易核心链路的官方指定产品,支撑千万级并发、万亿级数据洪峰,历年刷新全球最大的交易消息流转记录。 产品优势 稳定性 阿里巴巴双十一官方指定消息产品,支撑阿里巴巴集团所有的消息服务,历经十余年高可用与高可靠的严苛考验,是阿里巴巴交易链路的核心产品; 服务可用性 99.95%,Region 化、多可用区、分布式集群化部署,确保服务高可用,即便整个机房不可用仍可正常提供消息服务; 数据可靠性 99.99999999%,同步双写、超三副本数据冗余与快速切换技术确保数据可靠; 高性能 历年双 11 购物狂欢节零点千万级 TPS、万亿级数据洪峰,创造了全球最大的业务消息并发以及流转纪录(日志类消息除外); 在始终保证高性能前提下,支持亿级消息堆积,不影响集群的正常服务,在削峰填谷(蓄洪)、微服务解耦的场景下尤为重要; 丰富的消息类型 提供丰富的消息类型,满足各种严苛场景下的高级特性需求,当前支持的消息类型涵盖普通消息、顺序消息(全局顺序 / 分区顺序)、分布式事务消息、定时消息/延时消息; 安全访问控制 以消息主题、订阅组的粒度,对每一条消息的收、发请求都进行严格的访问控制,确保消息的安全性; 全面支持阿里云 RAM 主子账号、黑白名单、STS 等功能,支持 TLS 传输加密协议、阿里云 VPC 访问等;
NaCl鱼 2020-04-17 10:02:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档云解析企业版过期云解析企业版过期,会影响我的解析吗? 云解析企业版特别为VIP用户提供了7天的宽限期,也就是指即使产品过期,但未超过7天,云解析的VIPDNS都是持续提供正常服务的,您的解析不会受到任何影响。 企业版如果超过7天,仍没有为产品进行续费。 如果您是阿里云域名,云解析会自动为您将VIPDNS服务切换到免费DNS,DNS的切换过程正常情况下不会造成解析中断,但是如果您开启了域名安全锁将会自动切换失败造成解析中断,为避免影响到网站的访问,还请您及时为产品续费。 如果您是非阿里云域名,云解析会先将您的解析记录提前切换至我们的免费DNS上,VIPDNS停止服务,需要您到原注册商处将DNS修改为:ns1.alidns.com/ns2.alidns.com。在您未到原注册商处修改DNS的情况下,解析将会中断;待您修改完毕后,等待TTL值生效时间即可恢复解析。 企业版绑定的域名过期,会影响我的解析吗?如果您的产品还未过期,绑定的域名已经过期 如果绑定的是阿里云域名答:会影响。域名过期后,域名注册局会将该域名对应的DNS更改为“expirens1.hichina.com/ expirens2.hichina.com”,此种情况下,即使域名注册商提供的VIPDNS仍然持续提供服务,解析也是不生效的。如果域名续费成功,注册局会重新将域名状态更改为“OK”,此种情况,解析也会自动恢复生效。如果绑定的是非阿里云域名答:云解析的VIPDNS提供的解析服务是正常可用的,但需要您与域名注册商确认,域名过期后注册局是否会更改DNS,在注册局的DNS和注册商的DNS如存在不一致,也会直接导致解析不生效。 为什么我无法操作解析的增删改?答:当企业版过期超过7天,系统会将企业版切换成免费版,涉及DNS从VIPDNS切换为阿里免费DNS,此切换过程如果解析记录量非常大的情况,可能会有短暂无法进行解析增删改的情况,此种情况建议您稍作等待即可。举例,如果您出现如下报错,请您不要担心,稍后操作即可。 “操作失败!产品版本发生变化,系统正在为您切换成当前产品版本的DNS,切换期间,暂不支持解析的增删改操作!请您稍后再试! 企业版绑定的域名已进入赎回期,如果完成赎回,解析记录是否还需要重新设置?答:域名赎回期阶段,解析记录将被删除,如完成域名赎回,需要用户重新设置解析记录。
2019-12-01 23:11:35 0 浏览量 回答数 0

问题

API参考 - API参考 - 实例管理 -DescribeDBInstanceSwitchLog

描述 该接口用于查看实例的主备切换日志,适用于MySQL高可用版实例、MySQL金融版实例、SQL Server实例、PostgreSQL实例、PPAS实例。 请求参数 [tr=rgb(51, 205,...
李沃晟 2019-12-01 21:40:34 579 浏览量 回答数 0

回答

阿里云有智能DNS解析 1.1 智能DNS解析粒度 一级(免费提供) 二级(付费升级) 默认 - 移动 山东、江苏、安徽、浙江、福建、上海 广东、广西、海南 湖北、湖南、河南、江西 北京、天津、河北、山西、内蒙古 宁夏、新疆、青海、陕西、甘肃 四川、云南、贵州、西藏、重庆 辽宁、吉林、黑龙江 联通 山东、江苏、安徽、浙江、福建、上海 广东、广西、海南 湖北、湖南、河南、江西 北京、天津、河北、山西、内蒙古 宁夏、新疆、青海、陕西、甘肃 四川、云南、贵州、西藏、重庆 辽宁、吉林、黑龙江 电信 山东、江苏、安徽、浙江、福建、上海 广东、广西、海南 湖北、湖南、河南、江西 北京、天津、河北、山西、内蒙古 宁夏、新疆、青海、陕西、甘肃 四川、云南、贵州、西藏、重庆 辽宁、吉林、黑龙江 教育网 山东、江苏、安徽、浙江、福建、上海 广东、广西、海南 湖北、湖南、河南、江西 北京、天津、河北、山西、内蒙古 宁夏、新疆、青海、陕西、甘肃 四川、云南、贵州、西藏、重庆 辽宁、吉林、黑龙江 搜索引擎 搜索引擎、百度、谷歌、必应 需单独购买:有道、雅虎 一级(免费提供) 二级(付费升级) 三级(付费升级) 境外 大洋洲 澳大利亚,新西兰,斐济,帕劳 境外 亚洲 阿联酋,香港,印度尼西亚,印度, 日本,柬埔寨,韩国,老挝, 缅甸,澳门,马尔代夫,马来西亚, 尼泊尔,菲律宾,沙特阿拉伯,新加坡, 泰国,台湾,越南,蒙古, 巴基斯坦,朝鲜,哈萨克斯坦,乌兹别克斯坦, 土耳其,伊朗,伊拉克,以色列, 科威特,黎巴嫩,卡塔尔 境外 欧洲 奥地利,瑞士,德国,西班牙, 法国,英国,意大利,荷兰, 俄罗斯,瑞典,捷克,比利时, 爱尔兰,丹麦,芬兰,冰岛, 匈牙利,波兰,斯洛伐克,白俄罗斯, 立陶宛,乌克兰,保加利亚,克罗地亚, 葡萄牙,罗马尼亚,斯洛文尼亚 境外 北美洲 加拿大,墨西哥,美国 境外 南美洲 阿根廷,巴西,哥伦比亚、委内瑞拉、 厄瓜多尔、秘鲁、玻利维亚、智利、 巴拉圭、乌拉圭 境外 非洲 南非,埃及,尼日利亚,安哥拉, 加纳,科特迪瓦,肯尼亚,塞舌尔, 阿尔及利亚,喀麦隆,摩洛哥,塞内加尔 1.2 地域智能DNS解析 地域线路指以地区为维度划分的线路,如购买地域线路(含省份)则包含三个一级线路,7个中国大区线路,31个分省线路,4个搜索引擎线路。地域线路不区分运营商维度,举例如果设置记录如下: www.abc.com 默认 1.1.1.1 www.abc.com 中国地区 2.2.2.2 则只要来自中国地区的访问者,在此线路类型维度下,不会区分任何运营商。 也就是指只要是属于中国地区,不论是电信、还是联通或者其他运营商,均会返回地址2.2.2.2 非中国地区的网站访问者则返回1.1.1.1 一级 二级 三级 默认 - - 中国地区 华东、华南、华中、华北,西北、西南,东北 华东:山东、江苏、安徽、浙江、福建、上海; 华南:广东、广西、海南; 华中:湖北、湖南、河南、江西; 华北:北京、天津、河北、山西、内蒙古; 西北:宁夏、新疆、青海、陕西、甘肃; 西南:四川、云南、贵州、西藏、重庆; 东北:辽宁、吉林、黑龙江 二、控制台配置 在控制台中添加DNS解析路选择对应的智能解析区域,并设置相关IP地址,如下图所示: 三、常用帮助 3.1 地域线路和运营商线路是什么区别?地域线路类型是以地区划分为主,如果对于网站访问者来源只想区分地区,不区分网络运营商,则可以选择地域线路使用。运营商线路是以网络运营商为主,如果网站访问者想按照网络运营商划分,则可以选择运营商线路类型 3.2 一个域名设置解析记录可以同时使用两个线路类型吗?不可以,一个域名只能使用一个线路类型。 3.3 切换线路类型,会对解析造成影响吗?场景一:如果当前线路类型下,存在默认线路,此种切换则不会影响网站的访问。场景二:如果当前线路类型下,您的解析记录只有个性化线路(个性化线路范围,请参考名词解释),则切换线路类型,会影响到网站的访问。 3.4 线路类型切换规则1)如果记录中包含默认、海外、搜索引擎线路,切换这些解析线路会继续服务2)如果记录中存在不符合当前线类型的个性化解析线路,则这些包含个性化线路的解析记录会被系统自动暂停。举例如果当前线路类型为地域线路,而解析记录中包含如下记录默认线路 www.abc.com 1.1.1.1 解析记录可用中国地区 www.abc.com 2.2.2.2 解析记录可用移动 www.abc.com 3.3.3.3此为不符合当前线路类型的个性化线路,会处于暂停状态。联通北京 www.abc.com 4.4.4.4此为不符合当前线路类型的个性化线路,会处于暂停状态。 阿里云解析DNS购买地址:https://wanwang.aliyun.com/domain/dns 望采纳,谢谢
元芳啊 2019-12-02 00:07:16 0 浏览量 回答数 0

回答

什么是时间轮呢?其实我们可以简单的将其看做是一个多维数组。在很多框架中都使用了时间轮来做一些定时的任务,用来替代我们的Timer,比如我之前讲过的有关本地缓存Caffeine一篇文章,在Caffeine中是一个二层时间轮,也就是二维数组,其一维的数据表示较大的时间维度比如,秒,分,时,天等,其二维的数据表示该时间维度较小的时间维度,比如秒内的某个区间段。当定位到一个TimeWhile[i][j]之后,其数据结构其实是一个链表,记录着我们的Node。在Caffeine利用时间轮记录我们在某个时间过期的数据,然后去处理。 由于时间轮是一个数组的结构,那么其插入复杂度是O(1)。我们解决了效率之后,但是我们的内存依旧不是无限的,我们时间轮如何使用呢?答案当然就是磁盘,在去哪儿开源的QMQ中已经实现了时间轮+磁盘存储,这里为了方便描述我将其转化为RocketMQ中的结构来进行讲解,实现图如下: Step 1: 生产者投递延时消息到CommitLog,这个时候使用了偷换Topic的那招,来达到后面的效果。 Step 2: 后台有一个Reput的任务定时拉取,延时Topic相关的Message。 Step 3: 判断这个Message是否在当前时间轮范围中,如果不在则来到Step4,如果在的话就直接将消息投递进入时间轮。 Step 4: 找到当前消息所属的scheduleLog,然后写入进去,去哪儿默认划分是一个小时为一段,这里可以根据业务自行调整。 Step 5:时间轮会定时预加载下个时间段的scheduleLog到内存。 Step 6: 到点的消息会还原topic再次投递到CommitLog,如果投递成功这里会记录dispatchLog。记录的原因是因为时间轮是内存的,你不知道已经执行到哪个位置了,如果执行到最后最后1s钟的时候挂了,这段时间轮之前的所有数据又得重新加载,这里是用来过滤已经投递过的消息。 时间轮+磁盘存储我个人觉得比上面的RocksDB要更加正统一点,不依赖其他的中间件就可以完成,可用性自然也就更高,当然阿里云的RocketMQ具体怎么实现的这个两种方案都有可能。
kun坤 2020-04-23 20:05:19 0 浏览量 回答数 0

回答

错误(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

回答

获取 Access Key ID 和 Access Key Secret 您本地的应用部署到云端时,都需要使用阿里云上的资源、应用。所以在部署前,需要设置您的阿里云账号信息,以保证拥有使用、管理相关资源、应用的权限。 使用阿里云主账号获取 Access Key ID 和 Access Key Secret 进入阿里云控制台首页。 阿里云将检测您的登录状态。 如果已登录,则进入控制台首页。 如果未登录,则跳转到登录夜间,输入阿里云账号、密码,然后单击 登录。登录后,跳转到控制台首页。 将光标滑动(非单击)到控制页页面右上角您的头像上,在弹出的下拉菜单中单击 accesskeys。 在安全提示对话框中单击继续使用 AccessKey。 在安全信息管理页面用户 AccessKey区域单击显示,在手机验证对话框中单击点击获取,然后输入验证码。 记录该账号的 Access Key ID 和 Access Key Secret。 使用 RAM 子账号获取 Access Key ID 和 Access Key Secret 进入 RAM 子账号登录页面,输入您的子账号,单击下一步,然后再输入密码,单击登录。 将光标滑动(非单击)到控制页页面右上角您的头像上,在弹出的下拉菜单中单击 AccessKey 管理。 在安全信息管理页面用户 AccessKey区域右侧单击创建 AccessKey。 注意:如果您当前子账号的“创建 AccessKey” 置灰不可用,请使用主账号授权该子账号 RAM 的操作权限。具体操作请参考给子账号授权。 在新建用户 AccessKey对话框中 AccessKey 详情右侧单击下拉箭头。 记录当前账号的 Access Key ID 和 Access Key Secret。
51干警网 2019-12-02 00:46:32 0 浏览量 回答数 0

回答

选择排序(Selection Sort)的基本思想是:不断从待排记录序列中选出关键字最小的记录插入已排序记录序列的后面,直到n个记录全部插入已排序记录序列中。1、简单选择排序第i趟排序开始时,有序区和无序区分别为R[1..i-1]和R[i..n](i=1,2,..n-1),该趟排序则是从n-i+1个记录选取关键字最小的记录R[k],并与第i(i=1,2,...,n)个记录交换,形成新的有序区和无序区。从i=1开始,每次从剩余元素中选出最小(最大)元素。这就是直接选择排序。2、树型选择排序 又称为锦标赛排序,是一种按锦标赛思想进行选择排序的方法。先对n个记录的关键字进行两两比较,然后在其中的ceil(n/2)个较小者间再进行两两比较,如此往复,直至选出最小关键字的记录为止。这个过程可用一棵n个结点的完全二叉树来表示。如图所示: 但是这种方法存在辅助空间较多,“最大值”进行多余比较等缺点,J.willioms在1964提出了堆排序。3、堆排序(1)基本概念a)堆:设有n个元素的序列: {k1, k2, ..., kn} 对所有的i=1,2,...,(int)(n/2),当满足下面关系:ki≤k2i,ki≤k2i+1 或 ki≥k2i,ki≥k2i+1 这样的序列称为堆。堆的两种类型: 根结点最小的堆----小根堆。 根结点最大的堆----大根堆。根结点称为堆顶,即:在一棵完全二叉树中,所有非叶结点的值均小于(或均大于)左、右孩子的值。b)堆排序:是一种树型选择排序,特点是,在排序过程中,把R[1..n]看成是一个完全二叉树的存储结构,利用完全二叉树双亲结点和孩子结点的内在关系,在当前无序区中选择关键字最大(最小)的记录。(2)堆排序步骤:1、从k-1层的最右非叶结点开始,使关键字值大(或小)的记录逐步向二叉树的上层移动,最大(或小)关键字记录成为树的根结点,使其成为堆。2、逐步输出根结点,令r[1]=r[i](i=n,,n-1,...,2),在将剩余结点调整成堆。直到输出所有结点。我们称这个自堆顶到叶子的调整过程为“筛选”。(3)要解决的两个问题:1、如何由一个无序序列建成一个堆;2、输出一个根结点后,如何将剩余元素调整成一个堆。将一个无序序列建成一个堆是一个反复“筛选”的过程。若将此序列看成是一个完全二叉树,则最后一个非终端结点是第floor(n/2)个元素,由此“筛选”只需从第floor(n/2)个元素开始。堆排序中需一个记录大小的辅助空间,每个待排的记录仅占有一个存储空间。堆排序方法当记录较少时,不值得提倡。当n很大时,效率高。堆排序是非稳定的。堆排序的算法和筛选的算法如第二节所示。为使排序结果是非递减有序排列,我们在排序算法中先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换,然后对序列中前n-1个记录进行筛选,重新将它调整为一个“大顶堆”,然后将选得的一个关键字为最大的记录(也就是第一个元素)与当前最后一个记录交换(全局看是第n-1个),如此往复,直到排序结束。由到,筛选应按关键字较大的孩子结点向下进行。二、算法的C语言描述1、简单选择排序void SelectSort(SeqList &L); { int i,j,k; for(i=1;i<=L.lenght;i++) { k=i; for(j=i+1;j<=L.lenght;j++) if(R[j].key<R[k].key) k=j; if(k!=i) { R[0]=R[i];R[i]=R[k];R[k]=R[0];} } }2、树型选择排序略(实践中几乎不用)3、堆排序 三、算法的C语言实现#include "stdio.h"#include "stdlib.h"#define OK 1#define MAXSIZE 20typedef int KeyType;typedef int Status;typedef struct{KeyType key;//InfoType otherinfo;}RedType; typedef struct{RedType r[MAXSIZE+1];int length;}Sqlist; typedef Sqlist HeapType;void HeapAdjust(HeapType &H,int s,int m){RedType rc;rc=H.r[s];for(int j=2*s;j<=m;j*=2) { if(j<m&&(H.r[j].key<H.r[j+1].key)) ++j; if(rc.key>=H.r[j].key) break; H.r[s]=H.r[j]; s=j; }//forH.r[s]=rc;}//HeapAdjust void HeapSort(HeapType &H){for(int i=H.length/2;i>0;--i) HeapAdjust(H,i,H.length);for(int i=H.length;i>1;--i) { H.r[0]=H.r[1]; H.r[1]=H.r[i]; H.r[i]=H.r[0]; HeapAdjust(H,1,i-1); }//for}//HeapSort void InputL(Sqlist &L){printf("input the length:\n");scanf("%d",&L.length);printf("input the data needed to sort:\n");for(int i=1;i<=L.length;i++) scanf("%d",&L.r[i].key);}//InputL void OutputL(Sqlist &L){printf("the data after sorting is:\n");for(int i=1;i<=L.length;i++) printf("%d ",L.r[i].key);} int main(){Sqlist H;InputL(H);HeapSort(H);OutputL(H);return OK;}四、堆排序示例及其复杂度 对深度为k的堆,筛选算法中进行关键字的比较次数至多为2(k-1)。建堆时,n个元素所需的比较次数不超过4n。堆排序时,<2nlogn。堆排序在最坏的情况下,时间复杂度为O(n㏒n)。
琴瑟 2019-12-02 01:18:41 0 浏览量 回答数 0

回答

参考:https://www.iteblog.com/archives/2530.html分布式和去中心化(Distributed and Decentralized)Cassandra 是分布式的,这意味着它可以运行在多台机器上,并呈现给用户一个一致的整体。事实上,在一个节点上运行 Cassandra 是没啥用的,虽然我们可以这么做,并且这可以帮助我们了解它的工作机制,但是你很快就会意识到,需要多个节点才能真正了解 Cassandra 的强大之处。它的很多设计和实现让系统不仅可以在多个节点上运行,更为多机架部署进行了优化,甚至一个 Cassandra 集群可以运行在分散于世界各地的数据中心上。你可以放心地将数据写到集群的任意一台机器上,Cassandra 都会收到数据。对于很多存储系统(比如 MySQL, Bigtable),一旦你开始扩展它,就需要把某些节点设为主节点,其他则作为从节点。但 Cassandra 是无中心的,也就是说每个节点都是一样的。与主从结构相反,Cassandra 的协议是 P2P 的,并使用 gossip 来维护存活或死亡节点的列表。关于 gossip 可以参见《分布式原理:一文了解 Gossip 协议》。去中心化这一事实意味着 Cassandra 不会存在单点失效。Cassandra 集群中的所有节点的功能都完全一样, 所以不存在一个特殊的主机作为主节点来承担协调任务。有时这被叫做服务器对称(server symmetry)。综上所述,Cassandra 是分布式、无中心的,它不会有单点失效,所以支持高可用性。弹性可扩展(Elastic Scalability)可扩展性是指系统架构可以让系统提供更多的服务而不降低使用性能的特性。仅仅通过给现有的机器增加硬件的容量、内存进行垂直扩展,是最简单的达到可扩展性的手段。而水平扩展则需要增加更多机器,每台机器提供全部或部分数据,这样所有主机都不必负担全部业务请求。但软件自己需要有内部机制来保证集群中节点间的数据同步。弹性可扩展是指水平扩展的特性,意即你的集群可以不间断的情况下,方便扩展或缩减服务的规模。这样,你就不需要重新启动进程,不必修改应用的查询,也无需自己手工重新均衡数据分布。在 Cassandra 里,你只要加入新的计算机,Cassandra 就会自动地发现它并让它开始工作。高可用和容错(High Availability and Fault Tolerance)从一般架构的角度来看,系统的可用性是由满足请求的能力来量度的。但计算机可能会有各种各样的故障,从硬件器件故障到网络中断都有可能。如何计算机都可能发生这些情况,所以它们一般都有硬件冗余,并在发生故障事件的情况下会自动响应并进行热切换。对一个需要高可用的系统,它必须由多台联网的计算机构成,并且运行于其上的软件也必须能够在集群条件下工作,有设备能够识别节点故障,并将发生故障的中端的功能在剩余系统上进行恢复。Cassandra 就是高可用的。你可以在不中断系统的情况下替换故障节点,还可以把数据分布到多个数据中心里,从而提供更好的本地访问性能,并且在某一数据中心发生火灾、洪水等不可抗灾难的时候防止系统彻底瘫痪。可调节的一致性(Tuneable Consistency)2000年,加州大学伯克利分校的 Eric Brewer 在 ACM 分布式计算原理会议提出了著名的 CAP 定律。CAP 定律表明,对于任意给定的系统,只能在一致性(Consistency)、可用性(Availability)以及分区容错性(Partition Tolerance)之间选择两个。关于 CAP 定律的详细介绍可参见《分布式系统一致性问题、CAP定律以及 BASE 理论》以及《一篇文章搞清楚什么是分布式系统 CAP 定理》。所以 Cassandra 在设计的时候也不得不考虑这些问题,因为分区容错性这个是每个分布式系统必须考虑的,所以只能在一致性和可用性之间做选择,而 Cassandra 的应用场景更多的是为了满足可用性,所以我们只能牺牲一致性了。但是根据 BASE 理论,我们其实可以通过牺牲强一致性获得可用性。Cassandra 提供了可调节的一致性,允许我们选定需要的一致性水平与可用性水平,在二者间找到平衡点。因为客户端可以控制在更新到达多少个副本之前,必须阻塞系统。这是通过设置副本因子(replication factor)来调节与之相对的一致性级别。通过副本因子(replication factor),你可以决定准备牺牲多少性能来换取一致性。 副本因子是你要求更新在集群中传播到的节点数(注意,更新包括所有增加、删除和更新操作)。客户端每次操作还必须设置一个一致性级别(consistency level)参数,这个参数决定了多少个副本写入成功才可以认定写操作是成功的,或者读取过程中读到多少个副本正确就可以认定是读成功的。这里 Cassandra 把决定一致性程度的权利留给了客户自己。所以,如果需要的话,你可以设定一致性级别和副本因子相等,从而达到一个较高的一致性水平,不过这样就必须付出同步阻塞操作的代价,只有所有节点都被更新完成才能成功返回一次更新。而实际上,Cassandra 一般都不会这么来用,原因显而易见(这样就丧失了可用性目标,影响性能,而且这不是你选择 Cassandra 的初衷)。而如果一个客户端设置一致性级别低于副本因子的话,即使有节点宕机了,仍然可以写成功。总体来说,Cassandra 更倾向于 CP,虽然它也可以通过调节一致性水平达到 AP;但是不推荐你这么设置。面向行(Row-Oriented)Cassandra 经常被看做是一种面向列(Column-Oriented)的数据库,这也并不算错。它的数据结构不是关系型的,而是一个多维稀疏哈希表。稀疏(Sparse)意味着任何一行都可能会有一列或者几列,但每行都不一定(像关系模型那样)和其他行有一样的列。每行都有一个唯一的键值,用于进行数据访问。所以,更确切地说,应该把 Cassandra 看做是一个有索引的、面向行的存储系统。Cassandra 的数据存储结构基本可以看做是一个多维哈希表。这意味着你不必事先精确地决定你的具体数据结构或是你的记录应该包含哪些具体字段。这特别适合处于草创阶段,还在不断增加或修改服务特性的应用。而且也特别适合应用在敏捷开发项目中,不必进行长达数月的预先分析。对于使用 Cassandra 的应用,如果业务发生变化了,只需要在运行中增加或删除某些字段就行了,不会造成服务中断。当然, 这不是说你不需要考虑数据。相反,Cassandra 需要你换个角度看数据。在 RDBMS 里, 你得首先设计一个完整的数据模型, 然后考虑查询方式, 而在 Cassandra 里,你可以首先思考如何查询数据,然后提供这些数据就可以了。灵活的模式(Flexible Schema)Cassandra 的早期版本支持无模式(schema-free)数据模型,可以动态定义新的列。 无模式数据库(如 Bigtable 和 MongoDB)在访问大量数据时具有高度可扩展性和高性能的优势。 无模式数据库的主要缺点是难以确定数据的含义和格式,这限制了执行复杂查询的能力。为了解决这些问题,Cassandra 引入了 Cassandra Query Language(CQL),它提供了一种通过类似于结构化查询语言(SQL)的语法来定义模式。 最初,CQL 是作为 Cassandra 的另一个接口,并且基于 Apache Thrift 项目提供无模式的接口。 在这个过渡阶段,术语“模式可选”(Schema-optional)用于描述数据模型,我们可以使用 CQL 的模式来定义。并且可以通过 Thrift API 实现动态扩展以此添加新的列。 在此期间,基础数据存储模型是基于 Bigtable 的。从 3.0 版本开始,不推荐使用基于 Thrift API 的动态列创建的 API,并且 Cassandra 底层存储已经重新实现了,以更紧密地与 CQL 保持一致。 Cassandra 并没有完全限制动态扩展架构的能力,但它的工作方式却截然不同。 CQL 集合(比如 list、set、尤其是 map)提供了在无结构化的格式里面添加内容的能力,从而能扩展现有的模式。CQL 还提供了改变列的类型的能力,以支持 JSON 格式的文本的存储。因此,描述 Cassandra 当前状态的最佳方式可能是它支持灵活的模式。高性能(High Performance)Cassandra 在设计之初就特别考虑了要充分利用多处理器和多核计算机的性能,并考虑在分布于多个数据中心的大量这类服务器上运行。它可以一致而且无缝地扩展到数百台机器,存储数 TB 的数据。Cassandra 已经显示出了高负载下的良好表现,在一个非常普通的工作站上,Cassandra 也可以提供非常高的写吞吐量。而如果你增加更多的服务器,你还可以继续保持 Cassandra 所有的特性而无需牺牲性能。
封神 2019-12-02 02:00:50 0 浏览量 回答数 0

回答

在工程实践上,为了保障系统的可用性,互联网系统大多将强一致性需求转换成最终一致性的需求,并通过系统执行幂等性的保证,保证数据的最终一致性。但在电商等场景中,对于数据一致性的解决方法和常见的互联网系统(如 MySQL 主从同步)又有一定区别,分成以下 6 种解决方案。(一)规避分布式事务——业务整合业务整合方案主要采用将接口整合到本地执行的方法。拿问题场景来说,则可以将服务 A、B、C 整合为一个服务 D 给业务,这个服务 D 再通过转换为本地事务的方式,比如服务 D 包含本地服务和服务 E,而服务 E 是本地服务 A ~ C 的整合。优点:解决(规避)了分布式事务。缺点:显而易见,把本来规划拆分好的业务,又耦合到了一起,业务职责不清晰,不利于维护。由于这个方法存在明显缺点,通常不建议使用。(二)经典方案 - eBay 模式此方案的核心是将需要分布式处理的任务通过消息日志的方式来异步执行。消息日志可以存储到本地文本、数据库或消息队列,再通过业务规则自动或人工发起重试。人工重试更多的是应用于支付场景,通过对账系统对事后问题的处理。消息日志方案的核心是保证服务接口的幂等性。考虑到网络通讯失败、数据丢包等原因,如果接口不能保证幂等性,数据的唯一性将很难保证。eBay 方式的主要思路如下。Base:一种 Acid 的替代方案此方案是 eBay 的架构师 Dan Pritchett 在 2008 年发表给 ACM 的文章,是一篇解释 BASE 原则,或者说最终一致性的经典文章。文中讨论了 BASE 与 ACID 原则在保证数据一致性的基本差异。如果 ACID 为分区的数据库提供一致性的选择,那么如何实现可用性呢?答案是BASE (basically available, soft state, eventually consistent)BASE 的可用性是通过支持局部故障而不是系统全局故障来实现的。下面是一个简单的例子:如果将用户分区在 5 个数据库服务器上,BASE 设计鼓励类似的处理方式,一个用户数据库的故障只影响这台特定主机那 20% 的用户。这里不涉及任何魔法,不过它确实可以带来更高的可感知的系统可用性。文章中描述了一个最常见的场景,如果产生了一笔交易,需要在交易表增加记录,同时还要修改用户表的金额。这两个表属于不同的远程服务,所以就涉及到分布式事务一致性的问题。文中提出了一个经典的解决方法,将主要修改操作以及更新用户表的消息放在一个本地事务来完成。同时为了避免重复消费用户表消息带来的问题,达到多次重试的幂等性,增加一个更新记录表 updates_applied 来记录已经处理过的消息。基于以上方法,在第一阶段,通过本地的数据库的事务保障,增加了 transaction 表及消息队列 。在第二阶段,分别读出消息队列(但不删除),通过判断更新记录表 updates_applied 来检测相关记录是否被执行,未被执行的记录会修改 user 表,然后增加一条操作记录到 updates_applied,事务执行成功之后再删除队列。通过以上方法,达到了分布式系统的最终一致性。进一步了解 eBay 的方案可以参考文末链接。(三)去哪儿网分布式事务方案随着业务规模不断地扩大,电商网站一般都要面临拆分之路。就是将原来一个单体应用拆分成多个不同职责的子系统。比如以前可能将面向用户、客户和运营的功能都放在一个系统里,现在拆分为订单中心、代理商管理、运营系统、报价中心、库存管理等多个子系统。拆分首先要面临的是什么呢?最开始的单体应用所有功能都在一起,存储也在一起。比如运营要取消某个订单,那直接去更新订单表状态,然后更新库存表就 ok 了。因为是单体应用,库在一起,这些都可以在一个事务里,由关系数据库来保证一致性。但拆分之后就不同了,不同的子系统都有自己的存储。比如订单中心就只管理自己的订单库,而库存管理也有自己的库。那么运营系统取消订单的时候就是通过接口调用等方式来调用订单中心和库存管理的服务了,而不是直接去操作库。这就涉及一个『分布式事务』的问题。分布式事务有两种解决方式优先使用异步消息。上文已经说过,使用异步消息 Consumer 端需要实现幂等。幂等有两种方式,一种方式是业务逻辑保证幂等。比如接到支付成功的消息订单状态变成支付完成,如果当前状态是支付完成,则再收到一个支付成功的消息则说明消息重复了,直接作为消息成功处理。另外一种方式如果业务逻辑无法保证幂等,则要增加一个去重表或者类似的实现。对于 producer 端在业务数据库的同实例上放一个消息库,发消息和业务操作在同一个本地事务里。发消息的时候消息并不立即发出,而是向消息库插入一条消息记录,然后在事务提交的时候再异步将消息发出,发送消息如果成功则将消息库里的消息删除,如果遇到消息队列服务异常或网络问题,消息没有成功发出那么消息就留在这里了,会有另外一个服务不断地将这些消息扫出重新发送。有的业务不适合异步消息的方式,事务的各个参与方都需要同步的得到结果。这种情况的实现方式其实和上面类似,每个参与方的本地业务库的同实例上面放一个事务记录库。比如 A 同步调用 B,C。A 本地事务成功的时候更新本地事务记录状态,B 和 C 同样。如果有一次 A 调用 B 失败了,这个失败可能是 B 真的失败了,也可能是调用超时,实际 B 成功。则由一个中心服务对比三方的事务记录表,做一个最终决定。假设现在三方的事务记录是 A 成功,B 失败,C 成功。那么最终决定有两种方式,根据具体场景:重试 B,直到 B 成功,事务记录表里记录了各项调用参数等信息;执行 A 和 B 的补偿操作(一种可行的补偿方式是回滚)。对 b 场景做一个特殊说明:比如 B 是扣库存服务,在第一次调用的时候因为某种原因失败了,但是重试的时候库存已经变为 0,无法重试成功,这个时候只有回滚 A 和 C 了。那么可能有人觉得在业务库的同实例里放消息库或事务记录库,会对业务侵入,业务还要关心这个库,是否一个合理的设计?实际上可以依靠运维的手段来简化开发的侵入,我们的方法是让 DBA 在公司所有 MySQL 实例上预初始化这个库,通过框架层(消息的客户端或事务 RPC 框架)透明的在背后操作这个库,业务开发人员只需要关心自己的业务逻辑,不需要直接访问这个库。总结起来,其实两种方式的根本原理是类似的,也就是将分布式事务转换为多个本地事务,然后依靠重试等方式达到最终一致性。(四)蘑菇街交易创建过程中的分布式一致性方案交易创建的一般性流程我们把交易创建流程抽象出一系列可扩展的功能点,每个功能点都可以有多个实现(具体的实现之间有组合/互斥关系)。把各个功能点按照一定流程串起来,就完成了交易创建的过程。面临的问题每个功能点的实现都可能会依赖外部服务。那么如何保证各个服务之间的数据是一致的呢?比如锁定优惠券服务调用超时了,不能确定到底有没有锁券成功,该如何处理?再比如锁券成功了,但是扣减库存失败了,该如何处理?方案选型服务依赖过多,会带来管理复杂性增加和稳定性风险增大的问题。试想如果我们强依赖 10 个服务,9 个都执行成功了,最后一个执行失败了,那么是不是前面 9 个都要回滚掉?这个成本还是非常高的。所以在拆分大的流程为多个小的本地事务的前提下,对于非实时、非强一致性的关联业务写入,在本地事务执行成功后,我们选择发消息通知、关联事务异步化执行的方案。消息通知往往不能保证 100% 成功;且消息通知后,接收方业务是否能执行成功还是未知数。前者问题可以通过重试解决;后者可以选用事务消息来保证。但是事务消息框架本身会给业务代码带来侵入性和复杂性,所以我们选择基于 DB 事件变化通知到 MQ 的方式做系统间解耦,通过订阅方消费 MQ 消息时的 ACK 机制,保证消息一定消费成功,达到最终一致性。由于消息可能会被重发,消息订阅方业务逻辑处理要做好幂等保证。所以目前只剩下需要实时同步做、有强一致性要求的业务场景了。在交易创建过程中,锁券和扣减库存是这样的两个典型场景。要保证多个系统间数据一致,乍一看,必须要引入分布式事务框架才能解决。但引入非常重的类似二阶段提交分布式事务框架会带来复杂性的急剧上升;在电商领域,绝对的强一致是过于理想化的,我们可以选择准实时的最终一致性。我们在交易创建流程中,首先创建一个不可见订单,然后在同步调用锁券和扣减库存时,针对调用异常(失败或者超时),发出废单消息到MQ。如果消息发送失败,本地会做时间阶梯式的异步重试;优惠券系统和库存系统收到消息后,会进行判断是否需要做业务回滚,这样就准实时地保证了多个本地事务的最终一致性。(五)支付宝及蚂蚁金融云的分布式服务 DTS 方案业界常用的还有支付宝的一种 xts 方案,由支付宝在 2PC 的基础上改进而来。主要思路如下,大部分信息引用自官方网站。分布式事务服务简介分布式事务服务 (Distributed Transaction Service, DTS) 是一个分布式事务框架,用来保障在大规模分布式环境下事务的最终一致性。DTS 从架构上分为 xts-client 和 xts-server 两部分,前者是一个嵌入客户端应用的 JAR 包,主要负责事务数据的写入和处理;后者是一个独立的系统,主要负责异常事务的恢复。核心特性传统关系型数据库的事务模型必须遵守 ACID 原则。在单数据库模式下,ACID 模型能有效保障数据的完整性,但是在大规模分布式环境下,一个业务往往会跨越多个数据库,如何保证这多个数据库之间的数据一致性,需要其他行之有效的策略。在 JavaEE 规范中使用 2PC (2 Phase Commit, 两阶段提交) 来处理跨 DB 环境下的事务问题,但是 2PC 是反可伸缩模式,也就是说,在事务处理过程中,参与者需要一直持有资源直到整个分布式事务结束。这样,当业务规模达到千万级以上时,2PC 的局限性就越来越明显,系统可伸缩性会变得很差。基于此,我们采用 BASE 的思想实现了一套类似 2PC 的分布式事务方案,这就是 DTS。DTS在充分保障分布式环境下高可用性、高可靠性的同时兼顾数据一致性的要求,其最大的特点是保证数据最终一致 (Eventually consistent)。简单的说,DTS 框架有如下特性:最终一致:事务处理过程中,会有短暂不一致的情况,但通过恢复系统,可以让事务的数据达到最终一致的目标。协议简单:DTS 定义了类似 2PC 的标准两阶段接口,业务系统只需要实现对应的接口就可以使用 DTS 的事务功能。与 RPC 服务协议无关:在 SOA 架构下,一个或多个 DB 操作往往被包装成一个一个的 Service,Service 与 Service 之间通过 RPC 协议通信。DTS 框架构建在 SOA 架构上,与底层协议无关。与底层事务实现无关: DTS 是一个抽象的基于 Service 层的概念,与底层事务实现无关,也就是说在 DTS 的范围内,无论是关系型数据库 MySQL,Oracle,还是 KV 存储 MemCache,或者列存数据库 HBase,只要将对其的操作包装成 DTS 的参与者,就可以接入到 DTS 事务范围内。一个完整的业务活动由一个主业务服务与若干从业务服务组成。主业务服务负责发起并完成整个业务活动。从业务服务提供 TCC 型业务操作。业务活动管理器控制业务活动的一致性,它登记业务活动中的操作,并在活动提交时确认所有的两阶段事务的 confirm 操作,在业务活动取消时调用所有两阶段事务的 cancel 操作。”与 2PC 协议比较,没有单独的 Prepare 阶段,降低协议成本。系统故障容忍度高,恢复简单(六)农信网数据一致性方案电商业务公司的支付部门,通过接入其它第三方支付系统来提供支付服务给业务部门,支付服务是一个基于 Dubbo 的 RPC 服务。对于业务部门来说,电商部门的订单支付,需要调用支付平台的支付接口来处理订单;同时需要调用积分中心的接口,按照业务规则,给用户增加积分。从业务规则上需要同时保证业务数据的实时性和一致性,也就是支付成功必须加积分。我们采用的方式是同步调用,首先处理本地事务业务。考虑到积分业务比较单一且业务影响低于支付,由积分平台提供增加与回撤接口。具体的流程是先调用积分平台增加用户积分,再调用支付平台进行支付处理,如果处理失败,catch 方法调用积分平台的回撤方法,将本次处理的积分订单回撤。用户信息变更公司的用户信息,统一由用户中心维护,而用户信息的变更需要同步给各业务子系统,业务子系统再根据变更内容,处理各自业务。用户中心作为 MQ 的 producer,添加通知给 MQ。APP Server 订阅该消息,同步本地数据信息,再处理相关业务比如 APP 退出下线等。我们采用异步消息通知机制,目前主要使用 ActiveMQ,基于 Virtual Topic 的订阅方式,保证单个业务集群订阅的单次消费。总结分布式服务对衍生的配套系统要求比较多,特别是我们基于消息、日志的最终一致性方案,需要考虑消息的积压、消费情况、监控、报警等。
小川游鱼 2019-12-02 01:46:40 0 浏览量 回答数 0

问题

Swarm 集群 应用管理 应用参数配置说明

本文档旨在帮助您理解通过镜像创建 swarm 应用时界面的参数含义,顺利地进行参数配置,其中对一部分参数,会给出一些文档资源,供您了解更多信息。 镜像名称 选择镜像列表中已有的...
青蛙跳 2019-12-01 21:35:00 817 浏览量 回答数 0

问题

Swarm 集群 应用管理 应用参数配置说明

本文档旨在帮助您理解通过镜像创建 swarm 应用时界面的参数含义,顺利地进行参数配置,其中对一部分参数,会给出一些文档资源,供您了解更多信息。 镜像名称 选择镜像列表中已有的...
青蛙跳 2019-12-01 21:35:01 761 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:51 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:50 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:51 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:50 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:51 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:51 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档什么是网商银行信任付?网商银行信任付是为解决中、小经营者资金紧缺问题,由浙江网商银行提供的一款只需要少量服务费,即可享受信用支付的产品。 为什么我的页面中没有网商银行信任付的开通按钮?网商银行信任付正在逐步对个人实名认证的用户开放中;暂不支持企业实名认证用户。 如何开通网商银行信任付?网商银行信任付正在逐步对个人实名认证客户开放。 已开放资格的用户,可登录进入阿里云控制台费用中心 账户总览 页面,或 网商银行信任付签约管理 页面,单击 我要开通 / 立即开通。单击开通按钮后,系统会默认使用实名认证的支付宝账号。然后跳转到网商银行信任付的开通页面进行签约。 开通成功后,网商银行将提示签约成功状。单击 返回 进入 网商信任付签约管理 页面,您可在页面查看您的授信额度、当前可用额度、还款及解约入口。 注意:网商银行信任付服务和支付宝代扣服务不能共存;如果您已经开通了支付宝代扣服务,需要先解约,再开通网商银行信任付。 如何使用网商银行信任付支付? 包年包月业务:在支付时,选择 网商银行信任付 进行支付。支付页面中会提示您的还款方式、还款日等信息。 按量付费业务:当您账号的可用代金券和现金余额不足时,将自动通过网商银行信任付支付。 交易服务费如何计算?推广期内的服务费均由阿里云担保。具体以支付的页面展示为准。 名称 费率 费用收取对象 备注 贷款利息 日利率:万分之 5 买家(推广期内阿里云承担) 保函到期后贷款(期限15天)利率 逾期利息 日利率:万分之 10 贷款逾期利率 退款后,网商银行信任付的额度如何计算?如无逾期利息,信任付可用额度按照退款金额恢复;如存在逾期利息,按退款金额扣除利息后的金额恢复。 网商银行信任付到期还款日是哪天?网商银行信任付的到期还款日是订单交易后次月的 25 日,即本月所有信任付的订单,下月 25 日到期还款。 例如,1 月 1 日支付了一笔信任付交易,1 月 31 日支付了另外一笔信任付交易,两笔交易到期还款日均是 2 月 25 日。 网商银行信任付如何手动还款?登录管理控制台费用中心,进入 网商银行信任付签约管理 页面,单击 我要还款,选择您所需要还款的订单/账单进行还款。 网商银行信任付自动代扣还款通过什么方式扣款?还款代扣依次从支付宝账户余额、余额宝中扣除,且需单种支付方式中有足够支付本次还款的金额。 例如: 信任付应还 105 元,但其支付宝账号余额 100 元、余额宝 200 元,则系统会从余额宝中代扣 105 元;但如果应还款项为 205 元,则系统会代扣失败。 系统在什么时间点进行还款日代扣扣款?网商银行信任付会在到期日的 18:00 进行系统扣款。为了确保您及时还款,请保证您的支付宝账户余额或余额宝资金充足。 还清账单后,网商银行信任付额度是否会实时恢复?是的。网商银行信任付额度在账单还清后,会实时恢复。 还款日没有足额还清,会如何?到期日后,未足额还款的部分,会自动转为一笔为期 15 天的短期贷款。每日按万分之五计算利息;系统每日 18:00 前会尝试自动扣款,用户也可随时主动还款;若贷款逾期未还,按日万分之十罚息,并按规定上传征信记录,直接影响您的信用记录。 例如: 1 月 25 日为到期还款日,应还款金额为 10000 元。用户未按约定于 18:00 点前足额还款,只还款 2000 元,则未足额还款部分 8000 元自动转贷款;若超过最后还款日(15天后,即 2 月 8 日 24:00)仍未足额还款,则转为贷款逾期。 若 1 月 26 日再次还款,则应还款金额为 8008 元(其中利息 8 元为本金 8000 元 2 天的利息,日利率 0.0005)。 若 2 月 8 日还款,则应还款金额为 8060 元((其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005)。 若 2 月 9 日还款,应还金额为 8068.06 元(其中利息 60 元为本金 8000 元 15 天的利息,日利率 0.0005;罚息 8.06 元为贷款本息 8060 元 1 天的罚息,罚息率为0.001)。
2019-12-01 23:28:50 0 浏览量 回答数 0

回答

从计算机科学的角度出发,以太坊可以看作是一个分布式状态机,其中交易区块等同于状态转换函数,新的交易区块由从状态A到状态B的状态转换记录构成。因此,以太坊就像一个巨大的虚拟状态引擎或去中心化的计算机,可供多方共享计算平台并基于此运行智能合约。以太坊有一种原生资产—以太币,它是以太坊生态系统中的价值基础。以太币用于调整运营智能合约的激励机制,同时提高网络的安全性。 与比特币比较起来,以太坊是一个应用程序平台,而不仅是加密货币。比特币主要用于交易,而以太坊则可以执行更为复杂的规则,是一个用于构建分布式应用程序的平台。以太坊有一个图灵完备的脚本语言,利用程序代码将合约规则实例化成智能合约。智能合约是表达、验证并协商或强制执行数字合约的一段计算机代码,它可以在没有任何第三方的情况下被以太坊网络自动执行。以太坊的脚本语言比比特币的脚本语言要强大得多,可以实现复杂的智能合约规则。借助以太坊计算平台,开发人员可以用分布式应用程序(DApp)替代集中式应用程序。因为没有集中的数据库可以成为黑客的目标,DApp极大地增强了网络安全性。典型的DApp案例包括去中心化的内容发布平台Steemit、社交网络Synereo、去中心化的打车平台LaZooz、音乐版权平台Ujo Music和去中心化的就业市场Ethlance等。 比特币和以太坊之间的另一个区别在于,比特币是基于UTXO(未花费的交易(tx)输出)的,而以太坊是基于账户体系的区块链。在比特币中,交易的所有输入必须在UTXO数据库中才有效。UTXO是先前交易中未支出的金额,需要确认为未花费用作为当前交易的输入,比特币用户的可用余额是由其私钥控制的UTXO总和。而以太坊使用基于账户的模型,用户的可用余额记录在用户的账户中,该账户具有用户的地址、余额以及可选代码字段中的任何数据。例如在比特币中,Alice拥有控制一组UTXO的私钥;在以太坊中,Carol拥有控制由地址、余额和代码字段组成的账户的私钥。通过账户模型,以太坊节点只需更新其账户余额而不是存储每个UTXO,因此更节省空间。同时,以太坊也更直观,因为智能合约是一种更有效的编程机制,其可以在账户之间转移余额,而不是不断更新UTXO集来计算用户的可用余额。 以太坊有两种账户类型:外部账户(EOA)和合约账户,这两种账户都有用户地址和以太币余额。EOA通常被用于某种形式的外部实体(如个人或公司),这类用户在注册以太坊网络时都被分配为EOA账户。EOA具有加密地址,它可以发送交易(将以太币转移到其他账户或触发合约代码)。第二种账户类型是合约账户,这些账户具有地址、以太币余额以及任何关联的合约代码。代码执行由从其他合约或EOA中收到的交易或消息(函数调用)触发。这意味着合约是以太坊网络上的自主账户,其他账户(EOA或合约账户)可以与它们进行交互,但没有人控制它们(因为一旦启动,它们就是自治的)。由于其他程序可以调用合约上的函数,因此可以与合约账户交互或执行某些交易,但是不能直接控制合约账户。以太坊账户以交易为媒介,与以太坊网络上的其他账户、其他合约和合约状态进行交互。 以太坊某一时刻的所有账户状态构成了整个以太坊的网络状态,它们需要就每个账户的当前余额、存储状态和合约代码达成共识。每个新的区块都需要获取前一个区块的信息并更新新的以太坊网络状态,每个网络节点都必须就新的网络状态达成一致。因此,交易区块是以太坊网络状态之间的状态转换函数。
问问小秘 2019-12-02 03:10:04 0 浏览量 回答数 0

回答

既然id是自增长,而且激活码看起来也是先生成好的,说明激活码应该是会按照顺序一条一条被是用掉。那么, 有个想法可以尝试一下: 在内存中保留一个变量MAX_ID来记录当前可用的激活码的id(select min(id) + 1 from XXX where status=0,注意同步/锁)。 如果有用户过来请求激活码,具体流程如下: 判断用户是否满足收取激活码的要求,不满足则转到提醒页面。 set CUR_ID = MAX_ID++ ,这2步操作必须通过同步或者锁的方式保证其原子性。 用 select * from XXX where id={CUR_ID} and status=1 来取得一条激活码。(这个时候取得激活码就不会和其他用户发生冲突了,因为无论哪个用户进到这一步获取的CUR_ID都是不同的) 新增record记录,并且将激活码记录的status设置为0。 但是要额外考虑几个问题: 假如第三步取到的记录已经被激活过了,那么就必须在重新从第二步开始走。可以设置尝试多次的阀值。(注意记录好log) 如果CUR_ID超过了激活码的最大id怎么办?  系统宕机后重启后需要重新获取MAX_ID。 假如第三步发生其他问题,导致这个激活码没有被用掉。那么激活码中就有可能会产生一些被漏掉的记录。这种情况下,可以在服务重启的时候把这些遗漏的id放到一个list中,然后第二步找CUR_ID时优先从这个list中获取。 这个方法就可以把对数据记录的竞争转移到内存中一个MAX_ID的竞争,减小了需要考虑锁/同步的范围。 ###### 上面兄弟说的是一种方法,如果是多服务部署的话,应该得有额外的服务器存储{CUR_ID},保证一致性。也可以把{CUR_ID}放在数据库中的一张表中,利用数据库中的锁保证其同步,好处是可以整个业务可以写在一个存储过程中,不好的地方就是把压力交给了数据库。 利用数据库的话还有一种方式(保证在一个事务中): label_b:loop:     select id,激活码 from激活码表 where status=1 order by rand() limit 1 into @变量;     IF FOUND_ROWS()=1 THEN         update 对应激活码行状态;         if ROW_COUNT()=1 THEN             记录log;             LEAVE label_b;         end if;   ELSE                提示没有剩余的激活码了;                 LEAVE label_b;             END IF;         end loop label_b;       ###### 年底了。发红包的项目也挺多的,目前我在用的方案是 1.表为InnoDB表(支持行锁) 2.比如今天要发10个红包,那么我在红包表新增十条记录(这样保证不会超出预算,不然超出了多的钱可要自己出喔!) 3.来一个中奖用户,就在红包表选择一条未被使用的红包发出去,同时吧状态置为1 就可以了。反正发了这么多红包,没出问题 ######回复 @xia-yongsheng : 这个问题确实有的,除非锁表。。 目前做到的是不多发红包--。######有可能两个人拿到同一个红包啊,他们同时来的话。。。。###### 这种高并发下直接搞数据库只能说是你找死 方法:首先你要有一个生成激活码的方法,可以根据当前时间(精确到毫秒),请求IP等一切手段来保证生成的激活码唯一,然后在用户抢激活码的时候,判断他是否可以获得激活码,如果可以就生成激活码并返回给用户,同时把这个生成的激活码扔到一个消息队列中,后台在有一个程序平稳的将消息队列中生成的激活码批次进行持久化(保存数据库)等 ######这个方法好######补充一下,如果是先到先得那种,可以现在外部缓存中如redis中存在值,如10000,然后开抢时先请求到的则进行redis的原子减操作,如果减完后的值小于0,则说明没有了,大于0则进行正常的生成激活码和后续操作######这个方法靠谱###### 加锁。innodb才支持行锁。然后红包记录总量控制 ######最简单的方法是加锁。如果对性能要求很高,就借助redis即可######php不知道,java我是缓存在线程安全的queue中,直接拿一个,然后update回数据库######这个有两个限制:1、激活码量不多 2、单机环境######缓存有了解吗?######嘿,简单点在事务里 select 出一条status为1的,然后update xxx set status=0 where id=id and status=1;如果更新成功就ok,失败【说明被别人先拿了】就回滚然后重新开始,select update 试个几次就行。这个我经常用,在多个人需要对同一行操作的情况下稍微比下面的优应为是到update才锁住行。注意控制重试次数。 另外一种也是事务里,select 出一条status为1的,然后select * from xxx where id=123 for update,然后判断返回的status是否为1,不是就回滚事务重新试。在这种场景下应该可以采用,和上面一样要控制好重试的次数,会锁住一行记录,这在产品库存扣减之类的场景就不合适。 最后一种,咳咳咳,是你这个场景的,recover表的激活码id设置成唯一索引,然后在事务里插入失败的话就回滚。会产生间隙锁和nextkey锁导致阻塞。 另外的解决方案,是。。。建一个自增表,表就字段id,自增的,code varchar(大小您看着办),uid。 每次抽就往这里插入一行记录code为空就好。 然后拿到自增id,然后 $code_num = $id^COVER_NUM;# COVER_NUM是一个大数常量,最好是类常量。 #如果有gmp拓展,并且php版本大于5.3,且gpm_strval支持到62位的话 $code = gmp_strval(gmp_init($code_num),62); #如果没有gmp或gmp只能到36位的话 $code = base_covert($code_num,10,36); 然后把code update 回去,没有锁竞争,但不好的地方是code不能事先生成,如果你要事先生成也可已,拿到id的时候不去生成code而是去一个表里取出事先生成的id值相等的code就可以。
kun坤 2020-06-01 09:47:50 0 浏览量 回答数 0

回答

MongoDB ACID事务支持 这里要有一定的关系型数据库的事务的概念,不然不一定能理解的了这里说的事务概念。 下面说一说MongoDB的事务支持,这里可能会有疑惑,前面我们在介绍MongoDB时,说MongoDB是一个NoSQL数据库,不支持事务。这里又介绍MongoDB的事务。这里要说明一下MongoDB的事务支持跟关系型数据库的事务支持是两码事,如果你已经非常了解关系型数据库的事务,通过下面一副图对比MongoDB事务跟MySQL事务的不同之处。 MongoDB是如何实现事务的ACID? 1)MongoDB对原子性(Atomicity)的支持 原子性在Mongodb中到底是一个什么概念呢?为什么说支持但又说Mongodb的原子性是单行/文档级原子性,这里提供了一个MongoDB更新语句样例,如下图: MongoDB是如何实现事务的ACID? 更新“username”等于“tj.tang”的文档,更新salary、jobs、hours字段。这里对于这三个字段Mongodb在执行时要么都更新要么都不更新,这个概念在MySQL中可能你没有考虑过,但在MongoDB中由于文档可以嵌套子文档可以很复杂,所以Mongodb的原子性叫单行/文档级原子性。 对于关系型数据库的多行、多文档、多语句原子性目前Mongodb是不支持的,如下情况: MongoDB是如何实现事务的ACID? MongoDB更新条件为工资小于50万的人都把工资调整为50万,这就会牵扯到多文档更新原子性。如果当更新到Frank这个文档时,出现宕机,服务器重启之后是无法像关系型数据库那样做到数据回滚的,也就是说处理这种多文档关系型数据库事务的支持,但MongoDB不支持。那么怎么解决Mongodb这个问题呢?可以通过建模,MongoDB不是范式而是反范式的设计,通过大表和小表可以把相关的数据放到同一个文档中去。然后通过一条语句来执行操作。 2)MongoDB对一致性(consistency)的支持 对于数据一致性来说,传统数据库(单机)跟分布式数据库(MongoDB)对于数据一致性是不太一样的,怎么理解呢?如下图: MongoDB是如何实现事务的ACID? 对于传统型数据库来说,数据一致性主要是在单机上,单机的问题主要是数据进来时的规则检验,数据不能被破坏掉。而在分布式数据库上,因为他们都是多节点分布式的,我们讲的一致性往往就是讲的各个节点之间的数据是否一致。而MongoDB在这点上做的还是不错的,MongoDB支持强一致性或最终一致性(弱一致性),MongoDB的数据一致性也叫可调一致性,什么意思呢?如下图: MongoDB是如何实现事务的ACID? MongoDB的可调一致性,也就是可以自由选择强一致性或最终一致性,如果你的应用场景是前台的方式可以选择强一致性,如果你的应用场景是后台的方式(如报表)可以选择弱一致性。 一致性 上面我们讲到了通过将数据冗余存储到不同的节点来保证数据安全和减轻负载,下面我们来看看这样做引发的一个问题:保证数据在多个节点间的一致性是非常困难的。在实际应用中我们会遇到很多困难,同步节点可能会故障,甚至会无法恢复,网络可能会有延迟或者丢包,网络原因导致集群中的机器被分隔成两个不能互通的子域等等。在NoSQL中,通常有两个层次的一致性:第一种是强一致性,既集群中的所有机器状态同步保持一致。第二种是最终一致性,既可以允许短暂的数据不一致,但数据最终会保持一致。我们先来讲一下,在分布式集群中,为什么最终一致性通常是更合理的选择,然后再来讨论两种一致性的具体实现结节。 关于CAP理论 为什么我们会考虑削弱数据的一致性呢?其实这背后有一个关于分布式系统的理论依据。这个理论最早被Eric Brewer提出,称为CAP理论,尔后Gilbert和Lynch对CAP进行了理论证明。这一理论首先把分布式系统中的三个特性进行了如下归纳: 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。 分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。 而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。 要保证数据强一致性,最简单的方法是令写操作在所有数据节点上都执行成功才能返回成功,也就是同步概念。而这时如果某个结点出现故障,那么写操作就成功不了了,需要一直等到这个节点恢复。也就是说,如果要保证强一致性,那么就无法提供7×24的高可用性。 而要保证可用性的话,就意味着节点在响应请求时,不用完全考虑整个集群中的数据是否一致。只需要以自己当前的状态进行请求响应。由于并不保证写操作在所有节点都写成功,这可能会导致各个节点的数据状态不一致。 CAP理论导致了最终一致性和强一致性两种选择。当然,事实上还有其它的选择,比如在Yahoo的PNUTS中,采用的就是松散的一致性和弱可用性结合的方法。但是我们讨论的NoSQL系统没有类似的实现,所以我们在后续不会对其进行讨论。 强一致性 强一致性的保证,要求所有数据节点对同一个key值在同一时刻有同样的value值。虽然实际上可能某些节点存储的值是不一样的,但是作为一个整体,当客户端发起对某个key的数据请求时,整个集群对这个key对应的数据会达成一致。下面就举例说明这种一致性是如何实现的。 假设在我们的集群中,一个数据会被备份到N个结点。这N个节点中的某一个可能会扮演协调器的作用。它会保证每一个数据写操作会在成功同步到W个节点后才向客户端返回成功。而当客户端读取数据时,需要至少R个节点返回同样的数据才能返回读操作成功。而NWR之间必须要满足下面关系:R+W>N 下面举个实在的例子。比如我们设定N=3(数据会备份到A、B、C三个结点)。比如值 employee30:salary 当前的值是20000,我们想将其修改为30000。我们设定W=2,下面我们会对A、B、C三个节点发起写操作(employee30:salary, 30000),当A、B两个节点返回写成功后,协调器就会返回给客户端说写成功了。至于节点C,我们可以假设它从来没有收到这个写请求,他保存的依然是20000那个值。之后,当一个协调器执行一个对employee30:salary的读操作时,他还是会发三个请求给A、B、C三个节点: 如果设定R=1,那么当C节点先返回了20000这个值时,那我们客户端实际得到了一个错误的值。 如果设定R=2,则当协调器收到20000和30000两个值时,它会发现数据不太正确,并且会在收到第三个节点的30000的值后判断20000这个值是错误的。 所以如果要保证强一致性,在上面的应用场景中,我们需要设定R=2,W=2 如果写操作不能收到W个节点的成功返回,或者写操作不能得到R个一致的结果。那么协调器可能会在某个设定的过期时间之后向客户端返回操作失败,或者是等到系统慢慢调整到一致。这可能就导致系统暂时处于不可用状态。 对于R和W的不同设定,会导致系统在进行不同操作时需要不同数量的机器节点可用。比如你设定在所有备份节点上都写入才算写成功,既W=N,那么只要有一个备份节点故障,写操作就失败了。一般设定是R+W = N+1,这是保证强一致性的最小设定了。一些强一致性的系统设定W=N,R=1,这样就根本不用考虑各个节点数据可能不一致的情况了。 HBase是借助其底层的HDFS来实现其数据冗余备份的。HDFS采用的就是强一致性保证。在数据没有完全同步到N个节点前,写操作是不会返回成功的。也就是说它的W=N,而读操作只需要读到一个值即可,也就是说它R=1。为了不至于让写操作太慢,对多个节点的写操作是并发异步进行的。在直到所有的节点都收到了新的数据后,会自动执行一个swap操作将新数据写入。这个操作是原子性和一致性的。保证了数据在所有节点有一致的值。 最终一致性 像Voldemort,Cassandra和Riak这些类Dynamo的系统,通常都允许用户按需要设置N,R,W三个值,即使是设置成W+R<= N也是可以的。也就是说他允许用户在强一致性和最终一致性之间自由选择。而在用户选择了最终一致性,或者是W 3)MongoDB对隔离性(isolation)的支持 在关系型数据库中,SQL2定义了四种隔离级别,分别是READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。但是很少有数据库厂商遵循这些标准,比如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ隔离级别。而MySQL支持这全部4种隔离级别。每一种级别都规定了一个事务中所做的修改,哪些在事务内核事务外是可见的,哪些是不可见的。为了尽可能减少事务间的影响,事务隔离级别越高安全性越好但是并发就越差;事务隔离级别越低,事务请求的锁越少,或者保持锁的时间就越短,这也就是为什么绝大多数数据库系统默认的事务隔离级别是RC。 下图展示了几家不同的数据库厂商的不同事物隔离级别。 MongoDB是如何实现事务的ACID? MongoDB在3.2之前使用的是“读未提交”,这种情况下会出现“脏读”。但在MongoDB 3.2开始已经调整为“读已提交”。 下面说说每种隔离级别带来的问题: READ-UNCOMMITTED(读尚未提交的数据) 在这个级别,一个事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为“脏读(dirty read)”。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。 READ-COMMITTED(读已提交的数据) 在这个级别,能满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫“不可重复读(non-repeatable read)”,因为两次执行同样的查询,可能会得到不一样的结果。 REPEATABLE-READ(可重复读) 在这个级别,保证了在同一个事务中多次读取统一记录的结果是一致的。MySQL默认使用这个级别。InnoDB和XtraDB存储引擎通过多版本并发控制MVCC(multiversion concurrency control)解决了“幻读”和“不可重复读”的问题。通过前面的学习我们知道RR级别总是读取事务开始那一刻的快照信息,也就是说这些数据数据库当前状态,这在一些对于数据的时效特别敏感的业务中,就很可能会出问题。 SERIALIZABLE(串行化) 在这个级别,它通过强制事务串行执行,避免了前面说的一系列问题。简单来说,SERIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少在本地事务中使用SERIALIABLE隔离级别,主要应用在InnoDB存储引擎的分布式事务中。 4)MongoDB对持久性(durability)的支持 对于数据持久性来说,在传统数据库中(单机)的表现为服务器任何时候发生宕机都不需要担心数据丢失的问题,因为有方式可以把数据永久保存起来了。一般都是通过日志来保证数据的持久性。通过下图来看一下传统数据库跟MongoDB对于数据持久性各自所使用的方式。 MongoDB是如何实现事务的ACID? 从上图可以看出,MongoDB同样是使用数据进来先写日志(日志刷盘的速度是非常快)然后在写入到数据库中的这种方式来保证数据的持久性,如果出现服务器宕机,当启动服务器时会从日志中读取数据。不同的是传统数据库这种方式叫做“WAL” Write-Ahead Logging(预写日志系统),而MongoDB叫做“journal”。此外MongoDB在数据持久性上这点可能做的更好,MongoDB的复制默认节点就是三节点以上的复制集群,当数据到达主节点之后会马上同步到从节点上去。
景凌凯 2019-12-02 02:05:12 0 浏览量 回答数 0

问题

什么是域名解析防护?

答:域名解析防护是alidns为用户的DNS提供的高防功能,主要是针对大流量的DDOS攻击和DNSQuery查询攻击的高防护能力。Alidns可提供最高100G独享带宽,百万Q/S服务,...
boxti 2019-12-01 21:41:43 1309 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务