说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

深入解析:分布式系统的事务处理经典问题及模型

HTML文档下载 WORD文档下载 PDF文档下载
分布式系统需要在数据完整、一致性和性能间做平衡。本文系统介绍了处理分布式数据一致性的技术模型,如:Master-Slave,Master-Master,2PC/3PC,经典的将军问题,Paxos,以及Dynamo的NRW和VectorClock的模型。

编者按:数据服务的高可用是所有企业都想拥有的,但是要想让数据有高可用性,就需要冗余数据写多份。写多份的问题会带来一致性的问题,而一致性的问题又会带来性能问题,这就会陷入一个无解的死循环!这里所谓数据一致性,就是当多个用户试图同时访问一个数据库时,如果它们的事务同时使用相同的数据,可能会发生以下四种情况:丢失更新、未确定的相关性、不一致的分析和幻像读。本篇文章将会给大家系统的介绍多种处理分布式数据一致性的技术模型,以下是作者原文:

在生产线上用一台服务器来提供数据服务的时候,经常会遇到如下的两个问题:

  • 一台服务器的性能不足以提供足够的能力服务于所有网络请求。
  • 担心服务器宕机,造成服务不可用或是数据丢失。

面对这些问题,我们不得不对服务器进行扩展,加入更多的机器来分担性能问题,以及解决单点故障问题。通常,我们会通过两种手段来扩展我们的数据服务:

  • 数据分区:就是把数据分块放在不同的服务器上(如:uid % 16,一致性哈希等)。
  • 数据镜像:让所有的服务器数据同步,提供无差别的数据服务。

使用第一种方案,无法解决数据丢失问题,单台服务器出问题时,一定会有部分数据丢失。所以,数据服务的高可用性只能通过第二种方法来完成——数据的冗余存储(一般工业界认为比较安全的备份数应该是3份,如:Hadoop和Dynamo)。 但是,加入的机器越多数据就会变得越复杂,尤其是跨服务器的事务处理,也就是跨服务器的数据一致性。这个是一个很难的问题!让我们用最经典的Use Case:“A帐号向B帐号汇钱”来说明一下,熟悉RDBMS事务的都知道从帐号A到帐号B需要6个操作:

  1. 从A帐号中把余额读出来;
  2. 对A帐号做减法操作;
  3. 把结果写回A帐号中;
  4. 从B帐号中把余额读出来;
  5. 对B帐号做加法操作;
  6.  把结果写回B帐号中。

为了数据的一致性,这6件事,要么都成功做完,要么都不成功,而且这个操作的过程中,对A、B帐号的其它访问必需锁死,所谓锁死就是要排除其它的读写操作,不然会有脏数据问题,这就是事务。但是,在加入了多个机器后,这个事情会变得复杂起来:

  1. 在数据分区的方案中:如果A帐号和B帐号的数据不在同一台服务器上怎么办?我们需要一个跨机器的事务处理。也就是说,如果A的扣钱成功了,但B的加钱不成功,我们还要把A的操作给回滚回去。在不同的机器上实现,就会比较复杂。
  2. 在数据镜像的方案中:A帐号和B帐号间的汇款是可以在一台机器上完成的,但是别忘了我们有多台机器存在A帐号和B帐号的副本。如果对A帐号的汇钱有两个并发操作(要汇给B和C),这两个操作发生在不同的两台服务器上怎么办?也就是说,在数据镜像中,在不同的服务器上对同一个数据的写操作怎么保证其一致性,保证数据不冲突?

同时,我们还要考虑性能因素,如果不考虑性能的话,事务完成并不困难,系统慢一点就行了。除了考虑性能外,我们还要考虑可用性,也就是说,一台机器没了,数据不丢失,服务可由别的机器继续提供。 于是,我们需要重点考虑下面的这么几个情况:

  • 容灾:数据不丢、结点的Failover
  • 数据的一致性:事务处理
  • 性能:吞吐量 、 响应时间

前面说过,要解决数据不丢,只能通过数据冗余的方法,就算是数据分区,每个区也需要进行数据冗余处理。这就是数据副本:当出现某个节点的数据丢失时可以从副本读到,数据副本是分布式系统解决数据丢失异常的唯一手段。所以,在这篇文章中,我们只讨论在数据冗余情况下考虑数据的一致性和性能的问题。简单说来:

  • 要想让数据有高可用性,就得写多份数据。
  • 写多份的问题会导致数据一致性的问题。
  • 数据一致性的问题又会引发性能问题

这就是软件开发,按下了葫芦起了瓢。

一致性模型

说起数据一致性来说,简单说有三种类型(当然,如果细分的话,还有很多一致性模型,如:顺序一致性,FIFO一致性,会话一致性,单读一致性,单写一致性,但为了本文的简单易读,我只说下面三种):

  1. Weak 弱一致性:当你写入一个新值后,读操作在数据副本上可能读出来,也可能读不出来。比如:某些cache系统,网络游戏其它玩家的数据和你没什么关系,VOIP这样的系统,或是百度搜索引擎。
  2. Eventually 最终一致性:当你写入一个新值后,有可能读不出来,但在某个时间窗口之后保证最终能读出来。比如:DNS,电子邮件、Amazon S3,Google搜索引擎这样的系统。
  3. Strong 强一致性:新的数据一旦写入,在任意副本任意时刻都能读到新值。比如:文件系统,RDBMS,Azure Table都是强一致性的。

从这三种一致型的模型上来说,我们可以看到,Weak和Eventually一般来说是异步冗余的,而Strong一般来说是同步冗余的,异步的通常意味着更好的性能,但也意味着更复杂的状态控制;同步意味着简单,但也意味着性能下降。让我们由浅入深,一步一步地来看有哪些技术:

Master-Slave

首先是Master-Slave结构,对于这种加构,Slave一般是Master的备份。在这样的系统中,一般是如下设计的:

  • 读写请求都由Master负责。
  • 写请求写到Master上后,由Master同步到Slave上。

从Master同步到Slave上,可以使用异步,也可以使用同步,可以使用Master来push,也可以使用Slave来pull。 通常来说是Slave来周期性的pull,所以是最终一致性。这个设计的问题是,如果Master在pull周期内垮掉了,那么会导致这个时间片内的数据丢失。如果你不想让数据丢掉,Slave只能成为Read-Only的方式等Master恢复。

当然,如果可以容忍数据丢掉的话,可以马上让Slave代替Master工作(对于只负责计算的结点来说,没有数据一致性和数据丢失的问题,Master-Slave的方式就可以解决单点问题了) 当然,Master Slave也可以是强一致性的, 比如:当写Master的时候,Master负责先备份,等成功后,再写Slave,两者都成功后返回成功,整个过程是同步的,如果写Slave失败了,那么两种方法,一种是标记Slave不可用报错并继续服务(等Slave恢复后同步Master的数据,可以有多个Slave,这样少一个,还有备份,就像前面说的写三份那样),另一种是回滚自己并返回写失败。(注:一般不先写Slave,因为如果写Master自己失败后,还要回滚Slave,此时如果回滚Slave失败,就得手工订正数据了)可以看到,如果Master-Slave需要做成强一致性有多复杂。

Master-Master

Master-Master,又叫Multi-master,是指一个系统存在两个或多个Master,每个Master都提供read-write服务。这个模型是Master-Slave加强版,数据间同步一般是通过Master间异步完成,所以是最终一致性。 Master-Master的好处是一台Master挂了,别的Master可以正常做读写服务,这个和Master-Slave一样,当数据没有被复制到别的Master上时数据会丢失。很多数据库都支持Master-Master的Replication的机制。

另外,如果多个Master对同一个数据进行修改的时候,这个模型的恶梦就出现了——需要对数据间的冲突进行合并,这非常困难。看看Dynamo的Vector Clock的设计(记录数据的版本号和修改者)就知道这个事并不那么简单,而且Dynamo对数据冲突这个事是交给用户自己搞的。就像SVN源码冲突一样,对于同一行代码的冲突,只能交给开发者自己来处理。(在本文后后面会讨论一下Dynamo的Vector Clock)

Two/Three Phase Commit

这个协议的缩写又叫2PC,中文叫两阶段提交。在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一掌控所有节点(称作参与者)的操作结果并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等)。 两阶段提交的算法如下:

第一阶段:

  • 协调者会问所有的参与者结点,是否可以执行提交操作。
  • 各个参与者开始事务执行的准备工作:如:为资源上锁,预留资源,写undo/redo log……
  • 参与者响应协调者,如果事务的准备工作成功,则回应“可以提交”,否则回应“拒绝提交”。

第二阶段:

  • 如果所有的参与者都回应“可以提交”,那么,协调者向所有的参与者发送“正式提交”的命令。参与者完成正式提交,并释放所有资源,然后回应“完成”,协调者收集各结点的“完成”回应后结束这个Global Transaction。
  • 如果有一个参与者回应“拒绝提交”,那么,协调者向所有的参与者发送“回滚操作”,并释放所有资源,然后回应“回滚完成”,协调者收集各结点的“回滚”回应后,取消这个Global Transaction。


可以看到,2PC说白了就是第一阶段做Vote,第二阶段做决定的一个算法,也可以看到2PC这个事是强一致性的算法。在前面讨论过Master-Slave的强一致性策略,和2PC有点相似,只不过2PC更为保守一些——先尝试再提交。 2PC用的是比较多的,在一些系统设计中,会串联一系列的调用,比如:A -> B -> C -> D,每一步都会分配一些资源或改写一些数据。比如B2C网上购物的下单操作在后台会有一系列的流程需要做。如果一步一步地做,就会出现这样的问题,如果某一步做不下去了,那么前面每一次所分配的资源需要做反向操作把他们都回收掉,所以,操作起来比较复杂。现在很多处理流程(Workflow)都会借鉴2PC这个算法,使用 try -> confirm的流程来确保整个流程的能够成功完成。 举个通俗的例子,西方教堂结婚的时候,都有这样的桥段:

  1. 牧师分别问新郎和新娘:你是否愿意……不管生老病死……
  2. 当新郎和新娘都回答愿意后(锁定一生的资源),牧师就会说:我宣布你们……(事务提交)

这是多么经典的一个两阶段提交的事务处理。 另外可以看到其中的一些问题, A)其中一个是同步阻塞操作,这个事情必然会非常大地影响性能。 B)另一个主要的问题是在TimeOut上,比如,

  1. 如果第一阶段中,参与者没有收到询问请求,或是参与者的回应没有到达协调者。那么,需要协调者做超时处理,一旦超时,可以当作失败,也可以重试。
  2. 如果第二阶段中,正式提交发出后,如果有的参与者没有收到,或是参与者提交/回滚后的确认信息没有返回,一旦参与者的回应超时,要么重试,要么把那个参与者标记为问题结点剔除整个集群,这样可以保证服务结点都是数据一致性的。
  3. 糟糕的情况是,第二阶段中,如果参与者收不到协调者的commit/fallback指令,参与者将处于“状态未知”阶段,参与者完全不知道要怎么办,比如:如果所有的参与者完成第一阶段的回复后(可能全部yes,可能全部no,可能部分yes部分no),如果协调者在这个时候挂掉了。那么所有的结点完全不知道怎么办(问另的参与者都不行)。为了一致性,要么死等协调者,要么重发第一阶段的yes/no命令。

两段提交最大的问题就是第3项,如果第一阶段完成后,参与者在第二阶没有收到决策,那么数据结点会进入“不知所措”的状态,这个状态会block住整个事务。也就是说,协调者Coordinator对于事务的完成非常重要,Coordinator的可用性是个关键。 因些,我们引入三段提交,三段提交在Wikipedia上的描述如下,他把二段提交的第一个段break成了两段:询问,然后再锁资源。最后真正提交。三段提交的示意图如下:


三段提交的核心理念是:在询问的时候并不锁定资源,除非所有人都同意了,才开始锁资源。

理论上来说,如果第一阶段所有的结点返回成功,那么有理由相信成功提交的概率很大。这样一来,可以降低参与者Cohorts的状态未知的概率。也就是说,一旦参与者收到了PreCommit,意味他知道大家其实都同意修改了。这一点很重要。下面来看一下3PC的状态迁移图:(注间图中的虚线,那些F,T是Failuer或Timeout,其中的:状态含义是 q – Query,a – Abort,w – Wait,p – PreCommit,c – Commit)


其实,三段提交是一个很复杂的事情,实现起来相当难,而且也有一些问题。

看到这里,我相信你有很多很多的问题,你一定在思考2PC/3PC中各种各样的失败场景,你会发现Timeout是个非常难处理的事情,因为网络上的Timeout在很多时候让你无所事从,你也不知道对方是做了还是没有做。于是你好好的一个状态机就因为Timeout成了个摆设。

一个网络服务会有三种状态:1)Success,2)Failure,3)Timeout,第三个绝对是恶梦,尤其在你需要维护状态的时候。

Two Generals Problem(两将军问题)

Two Generals Problem 两将军问题是这么一个思维性实验问题: 有两支军队,它们分别有一位将军领导,现在准备攻击一座修筑了防御工事的城市。这两支军队都驻扎在那座城市的附近,分占一座山头。一道山谷把两座山分隔开来,并且两位将军唯一的通信方式就是派各自的信使来往于山谷两边。不幸的是,这个山谷已经被那座城市的保卫者占领,并且存在一种可能,那就是任何被派出的信使通过山谷是会被捕。 请注意,虽然两位将军已经就攻击那座城市达成共识,但在他们各自占领山头阵地之前,并没有就进攻时间达成共识。两位将军必须让自己的军队同时进攻城市才能取得成功。因此,他们必须互相沟通,以确定一个时间来攻击,并同意就在那时攻击。如果只有一个将军进行攻击,那么这将是一个灾难性的失败。 这个思维实验就包括考虑将军如何去做这件事情。下面是对于这件事情的思考:

  1. 第一位将军先发送一段消息“让我们在上午9点开始进攻”。然而,一旦信使被派遣,他是否通过了山谷,第一位将军就不得而知了。任何一点的不确定性都会使得第一位将军攻击犹豫,因为如果第二位将军不能在同一时刻发动攻击,那座城市的驻军就会击退他的军队的进攻,导致他的军对被摧毁。
  2. 知道了这一点,第二位将军就需要发送一个确认消息:“我收到您的信息,并会在9点的攻击。”但是,如果带着确认消息的信使被抓怎么办?所以第二位将军会犹豫自己的确认消息是否能到达。
  3. 于是,似乎我们还要让第一位将军再发送一条确认消息——“我收到了你的确认”。然而,如果这位信使被抓怎么办呢?
  4. 这样一来,是不是我们还要第二位将军发送一个“确认收到你的确认”的信息。

于是你会发现,这事情很快就发展成为不管发送多少个确认消息,都没有办法来保证两位将军有足够的自信自己的信使没有被敌军捕获。


这个问题是无解的。两个将军问题和它的无解证明首先由E.A.Akkoyunlu,K.Ekanadham和R.V.Huber于1975年在《一些限制与折衷的网络通信设计》一文中发表,就在这篇文章的第73页中一段描述两个黑帮之间的通信中被阐明。 1978年,在Jim Gray的《数据库操作系统注意事项》一书中(从第465页开始)被命名为两个将军悖论。作为两个将军问题的定义和无解性的证明的来源,这一参考被广泛提及。

这个实验意在阐明:试图通过建立在一个不可靠的连接上的交流来协调一项行动的隐患和设计上的巨大挑战。

从工程上来说,一个解决两个将军问题的实际方法是使用一个能够承受通信信道不可靠性的方案,并不试图去消除这个不可靠性,但要将不可靠性削减到一个可以接受的程度。比如,第一位将军排出了100位信使并预计他们都被捕的可能性很小。在这种情况下,不管第二位将军是否会攻击或者受到任何消息,第一位将军都会进行攻击。另外,第一位将军可以发送一个消息流,而第二位将军可以对其中的每一条消息发送一个确认消息,这样如果每条消息都被接收到,两位将军会感觉更好。然而从证明中来看,他们俩都不能肯定这个攻击是可以协调的。他们没有算法可用(比如,收到4条以上的消息就攻击)能够确保防止仅有一方攻击。再者,第一位将军还可以为每条消息编号,说这是1号,2号……直到n号。这种方法能让第二位将军知道通信信道到底有多可靠,并且返回合适的数量的消息来确保最后一条消息被接收到。如果信道是可靠的话,只要一条消息就行了,其余的就帮不上什么忙了。最后一条和第一条消息丢失的概率是相等的。

 两将军问题可以扩展成更变态的拜占庭将军问题 (Byzantine Generals Problem),其故事背景是这样的:拜占庭位于现在土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,军队可能有叛徒和敌军间谍,这些叛徒将军们会扰乱或左右决策的过程。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,这就是拜占庭将军问题。

编程语言与工具专题论坛:各类编程语言使用体会分享 淘宝、腾讯、豆瓣、支付宝、网易专家热议大数据分析与BI实战 “创新或灭亡”:Google的80/20只是转移视线的说辞罢了 自动化编排,配合SDN的iMC V7更加开放 [回顾]比尔·盖茨传奇的前半生 IT基础设施与运维论坛:IT基础设施及运维经验分享 记华为HCC2013 Day1:发力高端存储 HCC 2013虚拟化论坛:虚拟化未来发展方向 Windows 8操作系统市场份额增至7.41% Windows 7仍最受欢迎 【开源专访】Sea.js创始人玉伯的前端开发之路 SDCC 2013:阿里周宝方谈“去IOE”战略及实施 百度和高德:最后谁是地图的王者? 【CTO论道】瑞智和康CEO陶建辉:软硬结合是消费电子新潮流 10大高效率原型设计工具 JIRA与敏捷:李小龙教给我们的敏捷开发之道 百度开放云:Light Up The World,与开发者共享云未来 有胆你就来!11个在线编码大赛 CTO如何避免决策失控:第一步-定义角色 后机械硬盘时代,那些引领风骚的闪存初创公司 致远文杰:传统企业如何实现移动化转型? 记华为HCC2013 Day2:SDN开放编程系统OPS打造生态圈 HCC2013:华为FusionCube融合至简,性能至优 已确认Stephen Elop候选微软下任CEO 英语对于软件开发者来说到底有多重要? SDCC 2013中国软件开发者大会成功落幕 新浪微博宋琦:PHP在微博优化中的“大显身手” 8月份浏览器份额:IE浏览器PC端出现反弹 移动端跌出前五 如何让Ruby项目速度提升10倍 跨平台进行到底:Facebook发布Unity SDK 云薪资管理初创公司ZenPayroll:年处理薪资超1亿美元,获多位知名CEO力挺 Twitter开源Summingbird:近原生编码下整合批处理与流处理 关于记录修改 用sdk编程怎样加入toolbar? table里的查询字段为什么不会显示数据? c#与interbase请教 C语言的大小问题都在这里面? 不要编译,你猜猜这个程序会有几个类型匹配的警告? 不要编译,你猜猜这个程序会有几个类型匹配的警告? 高分解问,请教高手!关天GIS! 如何判断窗体中的某个控件是textbox控件?或判断窗体中textbox的个数? 如何调用返回不定字段个数的存储过程 那里能找到rational rose 有关FORM与ACCESS数据库的连接 如何使用photoshop把图像缩小到指定大小? 关于某种文件关联的问题 为什么用net send发送的消息有关不掉,点了好多次确定也没用。 怎么保存到数据库中?急急急! 电脑出问题了。 tomcat4.01+apache2.046组合问题:单个的都能运行,...可以加分.. %u的问题 如何调整对话框上工具栏的状态 关于query控件的一个问题 如何结束一个线程? FastReport怎么将没有记录的地方也画上格子??? 我的oracle9装上去之后怎么有7。2G那么大??并且还连不上MANAGEMENT SERVER只能独立启动??请指教!! Fastreport与quickreport那个更好用? 进者有分. 强烈要求铲除全国所有的收容所!!! 要用什么软件才能将CMOS参数备份到某个文件夹中? 请问怎么在建表代码里定义关键字? 请问把数据写入ListView控件内,有什么办法可以快点? win2k server dns 求助! 我在易趣上竞的一个数码相机,只要250元,但是只能拍26张相。我不知道是真是假? 一个搞不定的恶意网站 cout与printf的问题 没有路由怎样用一台服务器实现300台左右的电脑上网? ResultSet里读出数据的参数问题,马上给分 netvt(唯她 v1.1.1),进来拿你应得的分 如果我的程序中用了VFP,但是用户可能并没有装VFP,有什么好的办法直接替用户解决了这个问题,而不是提醒他自己去装 怎么保存到数据库中?急急急! 我用treeview显示数据库的数据,增加一条新记录后,要怎么样才能马上在treeview显示? 无法传值问题,高手急救!!!!!!!!! 在线等待:怎么为datagrid控件的某一格赋值? 请教如何在input上传筐里面限制文件类型? java的图形设计比如swing有前途吗?大家来讨论下,迷惑中。。。 计算机静电问题!! 错误在那里 请教批量update出错问题 请问串口方面的? QQ使用MFC42.DLL, 数据库的记录有文本、有图片、我想给它排成word样式的A4版预览、再打印如何实现 请问,如何在Form中画图啊??/ 水晶报表问题。急呀!! 邱少云在牺牲时夺取的是什么 近五年来,青蛙(田鸡)肉走上餐桌,假如人们大量捕杀这种农田中的青蛙.这样带来的后果是( ).“假如人们大量捕杀这种农田中的青蛙.”中的这种农田是指:水稻,稻螟虫,蚯蚓,蛇,蜜蜂,野 求“单丝不成线,独木不成林.”的意思?快 一朵鲜花点缀不出绚丽的春天.仿造例子,再写一句,与其格式相同. cf潘多拉角色有什么优点,比起灵狐怎么样? 主序星和超新星有什么区别呢?主序星和超新星有什么区别呢?主序星除了成为红巨星还能成为什么?超新星爆发除了能成为中子星外,能成为红巨星或黑洞吗? 一朵鲜花点缀不出绚丽的春天仿写 邱少云哪年牺牲的? 长大后我就成了你阅读答案1.写出下类词语的近义词以为( )美丽( )奉献( )希望( )2.歌词中的“小鸟”指的是( ),“你”指的是( ).抄出赞颂“你”的诗句.(共四处)3.歌词中的 西方管理思想产生的背景是什么? We don't do much b()with foreign companies.首字母填空 《长大后我就成了你》阅读短文答案 /1题小时候我以为你很美丽,领着一群小鸟飞来飞去;小时候我以为你很神气,说上一句话也惊天动地.长大后我就成了你,才知道那间教室放飞的是希望,守 一个物体放在一个斜面上,这时物体对斜面有压力吗 (生物)有人爱吃青蛙,为此便有人大量捕捉野生青蛙,这种做法会产生什么后果? 长大后我就成了你 阅读短文答案小时候我以为你很美丽,领着一群小鸟飞来飞去;小时候我以为你很神气,说上一句话也惊天动地.长大后我就成了你,才知道那间教室放飞的是希望,守巢的总是 有些人爱吃蛙肉,为此便有人大量捕捉野生青蛙,这种做法会产生怎样的后果? 已知点a(1,0)和b(3,-1).若点m是y轴上一点,且满足△abm是直角三角形,则点m的坐标是 文言文《杯弓蛇影》全文意思 有些人爱吃肉,为此便有人大量捕捉野生青蛙,这种做法会产生怎样的后果? 如图,直线y=kx+6与x轴,y轴分别交于点A、B,△ABO等腰直角三角形. (1)求函数解析式.我会做2)已知点C(4,0),点P是线段AB上的一点,且△POC是以PC为一腰的等腰三角形,求点P的坐标 word如何让表格的任意一条表加粗? 圆O1的半径是2cm,圆O2的半径是5cm,圆心距是4cm,则两圆的关系是 A.相交 B.外切 C.外离 D.内切圆O1的半径是2cm,圆O2的半径是5cm,圆心距是4cm,则两圆的关系是A.相交 B.外切 C.外离 D.内切 宇宙飞船在月球着落,宇航员在登上月球后,在月面上用天平测物体的质量,结果是什么 如何将word中的表格的上下线加粗为1.5磅,其余为0.5磅 隐形飞机的隐形原理是什么?如何做到隐形? 海贼王超新星是什么意思 ps中如何在保持选区位置不变的情况下,移动选区中的内容? 隐形飞机为什么能隐形,的原理是什么? 超新星与新星有什么区别? word中如何加粗表格线 已知两个圆的半径分别为3cm和5cm,并且两圆没有公共点,则两圆的圆心距的取值范围是 六月五日是世界环境日、老师号召同学们爱护环境,从每个人做起.如果你想提醒同学们保护好校园新栽的小草,你应该怎么和同学们说呢? PS 如何移动绘制中选区在PS里,如何在边绘制选区(比如绘制圆形选区)过程中边调整绘制位置呢? “有些人爱吃蛙肉,为此便有人大量捕捉野生青蛙,这种做法会产生怎样的后果? 英语翻译your father wants you to take a training,class on management skins,you are an wining,to do so your classmate persuades you to attend the training.帮个忙 在下追加财富 word怎么加粗表格 有些人爱吃蛙肉,为此便有人大量扑捉野生青蛙,这种做法会产生怎么样的后果 长大后我就成了你作文500字 显微镜对生物起到什么作用举例 综合知识抢答赛,答对一题加5分,答错一题扣2分.A学生共抢答了20道题,最后得分72分.他答对几道题? 那一天我忘不了 作文 英语翻译rt 3q 人生如絮,飘零在此万紫千红的春天.仿句例句:人生如絮,飘零在此万紫千红的春天.仿句:人生如————————人生如———————— 作文字数:500---600.. 长大后我就成了你 六下练习册P115页阅读答案 人生如絮,飘零在万紫千红的春天.相照应的句子 CF潘多拉好吗?我买了,到底有什么好处 请问大家"我被这件事情感动了"用英语如何翻译啊~口语化点的哦~ 失根的兰花第⑩段中 人生如絮,飘零在此万紫千红的春天 应当怎么理解 人们大量捕杀青蛙会产生怎样的严重后果? 三只蚂蚁一起走,中间的说我两边各一只,右边的说我左边有两只,左边的说我右边没有为什么? 人生如絮,飘零在这万紫千红的春天意思 大量扑抓青蛙,后果怎样? 独木不成林的后一句急 人生如絮 飘零在此万紫千红的春天 什么修辞 从跳高 等分析我主要玩JU ____,独木不成林 如果人类停止生育,但能长生,这个世界会怎样?长生的感念是:小孩永远是小孩,年轻人永远是年轻人,老人永远是老人,但都没有死亡但出现车祸或别人杀害也就是=世界上就少了一个人例:100-1=99, 如果大量捕杀青蛙,你觉得会造成怎样的后果.简答,100字以内. 文学——白杨树的湖中倒影 为什麽需要文学?了解文学、接近文学,对我们形成价值判断有什麽关系?如果说,文学有一百种所谓「功能」而我必须选择一种最重要的,我的答案是:德文有一个很 美国国土安全部爆工资丑闻 1年多发8克里称NSA监控为“自动导航” 指责巴基斯坦塔利班首领被美击毙 巴和平进美83岁珠宝大盗涉嫌“重操旧业”被捕NSA被曝窃听国际货币基金组织和世界以色列空袭叙利亚 打击俄制导弹库阿根廷出新规应对外汇加速“失血”日本警察和站街女的战争【图】加拿大警方修复多伦多市长吸毒视频俄罗斯耄耋老汉赤手空拳勇战熊 被扔下卧底救妻后续:杭州警方客串“老娘舅”单位领导办公室抽烟怎么办?网友热议办伊拉克总理会晤奥巴马 望美售武对抗“文根英金范被曝恋爱一个月【组图】马尔代夫卫生部长联合国谋高就37个国家首脑确认出席在斯举行的英联张柏芝蜜贴外籍型男 新加坡帮儿子视察伊朗推出首艘观光潜艇 完全由伊朗专家美国监听行为令人发指新媒:克里承认美监控活动 “某些时候印度开建“全球最高”塑像科隆性侵案首次宣判,只判了盗窃罪思路决定出路,格局定位人生!洗盘失手搞成了股灾4.0?好奇探索功能与趣味铁路上海南站民警 一周查获4把仿真枪清算公告险企健康管理覆盖线上线下国际足联新掌门选举 牌面五选一实则二楼市三月小阳春量价可期暴跌是又一次抢反弹的机会第26届华交会下月在沪揭幕IVV与中国多地 达成合作协议上海市文艺评论家协会昨成立争票房非初心,做电影不为得第一改变世界的野心,在跨界中滋长脑科名医两度“出走”自由执业注销公告杜绝浪费,丹麦开首家“剩食”超市朗绿科技为幼稚园免费安装新风太平财险2015年再获标普“A”评级美欧股市动荡 A股受“传染”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘