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

首席工程师揭秘:LinkedIn大数据后台是如何运作的

HTML文档下载 WORD文档下载 PDF文档下载
“不懂得日志,你就不可能完全懂得数据库”Jay Kreps说道,Jay Kreps是LinkedIn公司首席工程师,本文介绍他本人对于日志的心得体会,包括日志是什么,如何在数据集成、实时处理和系统构建中使用日志等。

编者按: Jay Kreps是来自LinkedIn的首席工程师,他表示日志几乎在计算机产生的时候就存在,除了可用在分布式计算或者抽象分布式计算模型内部之外,还有广泛的用途。本文中他讲述的日志的原理和通过把日志用做单独服务来实现数据集成、实时数据处理以及分布式系统设计。文章内容非常干货,值得学习。

以下是原文:

我在六年前的一个令人兴奋的时刻加入到LinkedIn公司。从那个时候开始我们就破解单一的、集中式数据库的限制,并且启动到特殊的分布式系统套件的转换。这是一件令人兴奋的事情:我们构建、部署,而且直到今天仍然在运行的分布式图形数据库、分布式搜索后端、Hadoop安装以及第一代和第二代键值数据存储。

从这一切里我们体会到的最有益的事情是我们构建的许多东西的核心里都包含一个简单的理念:日志。有时候也称作预先写入日志或者提交日志或者事务日志,日志几乎在计算机产生的时候就存在,同时它还是许多分布式数据系统和实时应用结构的核心。

不懂得日志,你就不可能完全懂得数据库,NoSQL存储,键值存储,复制,paxos,Hadoop,版本控制以及几乎所有的软件系统;然而大多数软件工程师对它们不是很熟悉。我愿意改变这种现状。在这篇博客文章里,我将带你浏览你必须了解的有关日志的所有的东西,包括日志是什么,如何在数据集成、实时处理和系统构建中使用日志等。

第一部分:日志是什么?

日志

日志是一种简单的不能再简单的存储抽象。它是一个只能增加的,完全按照时间排序的一系列记录。日志看起来如下:

我们可以给日志的末尾添加记录,并且可以从左到右读取日志记录。每一条记录都指定了一个唯一的有一定顺序的日志记录编号。

日志记录的排序是由“时间”来确定的,这是因为位于左边的日志记录比位于右边的要早些。日志记录编号可以看作是这条日志 记录的“时间戳”。在一开始就把这种排序说成是按时间排序显得有点多余 ,不过 ,与任何一个具体的物理时钟相比,时间 属性是非常便于使用的属性。在我们运行多个分布式系统的时候,这个属性就显得非常重要。

对于这篇讨论的目标而言,日志记录的内容和格式不怎么重要。另外提醒一下,在完全耗尽存储空间的情况下,我们不可能 再给日志添加记录。稍后我们将会提到这个问题。

日志并不是完全不同于文件或者数据表的。文件是由一系列字节组成,表是由一系列记录组成,而日志实际上只是按照时间顺序存储记录的 一种数据表或者文件。

此时,你可能奇怪为什么要讨论这么简单的事情呢? 不同环境下的一个只可增加的有一定顺序的日志记录是怎样与数据系统关联起来的呢?答案是日志有其特定的应用目标:它记录了什么时间发生了什么事情。 而对分布式数据系统许多方面而言, 这才是问题的真正核心。

不过,在我们进行更加深入的讨论之前,让我先澄清有些让人混淆的概念。每个编程人员都熟悉另一种日志记录-应用使用syslog或者log4j可能写入到本地文件里的没有结构的错误信息或者追踪信息。为了区分开来,我们把这种情形的日志记录称为“应用日志记录”。应用日志记录是我在这儿所说的日志的一种低级的变种。最大的区别是:文本日志意味着主要用来方便人们阅读,而我所说明的“日志”或者“数据日志”的建立是方便程序访问。

(实际上,如果你对它进行深入的思考,那么人们读取某个机器上的日志这种理念有些不顺应时代潮流。当涉及到许多服务和服务器的时候,这种方法很快就变成一个难于管理的方式,而且为了认识多个机器的行为,日志的目标很快就变成查询和图形化这些行为的输入了-对多个机器的某些行为而言,文件里的英文形式的文本同这儿所描述的这种结构化的日志相比几乎就不适合了。)

数据库日志

我不知道日志概念起源于何处-可能它就像二进制搜索一样:发明者认为它太简单而不能当作一项发明。它早在IBM的系统R出现时候就出现了。数据库里的用法是在崩溃的时候用它来同步各种数据结构和索引。为了保证操作的原子性和持久性,在对数据库维护的所有各种数据结构做更改之前,数据库把即将修改的信息誊写到日志里。日志记录了发生了什么,而且其中的每个表或者索引都是一些数据结构或者索引的历史映射。由于日志是即刻永久化的,可以把它当作崩溃发生时用来恢复其他所有永久性结构的可信赖数据源。

随着时间的推移,日志的用途从实现ACID细节成长为数据库间复制数据的一种方法。利用日志的结果就是发生在数据库上的更改顺序与远端复制数据库上的更改顺序需要保持完全同步。

Oracle,MySQL 和PostgreSQL都包括用于给备用的复制数据库传输日志的日志传输协议。Oracle还把日志产品化为一个通用的数据订阅机制,这样非Oracle数据订阅用户就可以使用XStreams和GoldenGate订阅数据了,MySQL和PostgreSQL上的类似的实现则成为许多数据结构的关键组件。
正是由于这样的起源,机器可识别的日志的概念大部分都被局限在数据库内部。日志用做数据订阅的机制似乎是偶然出现的,不过要把这种 抽象用于支持所有类型的消息传输、数据流和实时数据处理是不切实际的。

分布式系统日志

日志解决了两个问题:更改动作的排序和数据的分发,这两个问题在分布式数据系统里显得尤为重要。协商出一致的更改动作的顺序(或者说保持各个子系统本身的做法,但可以进行存在副作用的数据拷贝)是分布式系统设计的核心问题之一。

以日志为中心实现分布式系统是受到了一个简单的经验常识的启发,我把这个经验常识称为状态机复制原理:如果两个相同的、确定性的进程从同一状态开始,并且以相同的顺序获得相同的输入,那么这两个进程将会生成相同的输出,并且结束在相同的状态。

这也许有点难以理解,让我们更加深入的探讨,弄懂它的真正含义。

确定性意味着处理过程是与时间无关的,而且任何其他“外部的“输入不会影响到处理结果。例如,如果一个程序的输出会受到线程执行的具体顺序影响,或者受到gettimeofday调用、或者其他一些非重复性事件的影响,那么这样的程序一般最有可能被认为是非确定性的。

进程状态是进程保存在机器上的任何数据,在进程处理结束的时候,这些数据要么保存在内存里,要么保存在磁盘上。

以相同的顺序获得相同输入的地方应当引起注意-这就是引入日志的地方。这儿有一个重要的常识:如果给两段确定性代码相同的日志输入,那么它们就会生成相同的输出。

分布式计算这方面的应用就格外明显。你可以把用多台机器一起执行同一件事情的问题缩减为实现分布式一致性日志为这些进程输入的问题。这儿日志的目的是把所有非确定性的东西排除在输入流之外,来确保每个复制进程能够同步地处理输入。

当你理解了这个以后,状态机复制原理就不再复杂或者说不再深奥了:这或多或少的意味着“确定性的处理过程就是确定性的”。不管怎样,我都认为它是分布式系统设计里较常用的工具之一。

这种方式的一个美妙之处就在于索引日志的时间戳就像时钟状态的一个副本——你可以用一个单独的数字描述每一个副本,这就是经过处理的日志的时间戳。时间戳与日志一一对应着整个副本的状态。

由于写进日志的内容的不同,也就有许多在系统中应用这个原则的不同方式。举个例子,我们记录一个服务的请求,或者服务从请求到响应的状态变化,或者它执行命令的转换。理论上来说,我们甚至可以为每一个副本记录一系列要执行的机器指令或者调用的方法名和参数。只要两个进程用相同的方式处理这些输入,这些进程就会保持副本的一致性。

一千个人眼中有一千种日志的用法。数据库工作者通常区分物理日志和逻辑日志。物理日志就是记录每一行被改变的内容。逻辑日志记录的不是改变的行而是那些引起行的内容被改变的SQL语句(insert,update和delete语句)。

分布式系统通常可以宽泛分为两种方法来处理数据和完成响应。“状态机器模型”通常引用一个主动-主动的模型——也就是我们为之记录请求和响应的对象。对此进行一个细微的更改,称之为“预备份模型”,就是选出一个副本做为leader,并允许它按照请求到达的时间来进行处理并从处理过程中输出记录其状态改变的日志。其他的副本按照leader状态改变的顺序而应用那些改变,这样他们之间达到同步,并能够在leader失败的时候接替leader的工作。

日志

为了理解两种方式的不同,我们来看一个不太严谨的例子。假定有一个算法服务的副本,保持一个独立的数字作为它的状态(初始值为0),并对这个值进行加法和乘法运算。主动-主动方式应该会输出所进行的变换,比如“+1”,“*2”等。每一个副本都会应用这些变换,从而得到同样的解集。主动-被动方式将会有一个独立的主体执行这些变换并输出结果日志,比如“1”,“3”,“6”等。这个例子也清楚的展示了为什么说顺序是保证各副本间一致性的关键:一次加法和乘法的顺序的改变将会导致不同的结果。

日志

分布式日志可以理解为一致性问题模型的数据结构。因为日志代表了后续追加值的一系列决策。你需要重新审视Paxos算法簇,尽管日志模块是他们最常见的应用。 在Paxos算法中,它通常通过使用称之为多paxos的协议,这种协议将日志建模为一系列的问题,在日志中每个问题都有对应的部分。在ZAB, RAFT等其它的协议中,日志的作用尤为突出,它直接对维护分布式的、一致性的日志的问题建模。

我怀疑的是,我们就历史发展的观点是有偏差的,可能是由于过去的几十年中,分布式计算的理论远超过了其实际应用。在现实中,共识的问题是有点太简单了。计算机系统很少需要决定单个值,他们几乎总是处理成序列的请求。这样的记录,而不是一个简单的单值寄存器,自然是更加抽象。

此外,专注于算法掩盖了 抽象系统需要的底层的日志。我怀疑,我们最终会把日志中更注重作为一个商品化的基石,不论其是否以同样的方式 实施的,我们经常谈论一个哈希表而不是纠结我们 得到是不是具体某个细节的哈希表,例如线性或者带有什么什么其它变体哈希表。日志将成为一种大众化的接口,为大多数算法和其实现提升提供最好的保证和最佳的性能。

变更日志101: 表与事件的二相性。

让我们继续聊数据库。数据库中存在着大量变更日志和表之间的二相性。这些日志有点类似借贷清单和银行的流程,数据库表就是当前的盈余表。如果你有大量的变更日志,你就可以使用这些变更用以创建捕获当前状态的表。这张表将记录每个关键点(日志中一个特别的时间点)的状态信息。这就是为什么日志是非常基本的数据结构的意义所在:日志可用来创建基本表,也可以用来创建各类衍生表。同时意味着可以存储非关系型的对象。

八卦

这个流程也是可逆的:如果你正在对一张表进行更新,你可以记录这些变更,并把所有更新的日志发布到表的状态信息中。这些变更日志就是你所需要的支持准实时的克隆。基于此,你就可以清楚的理解表与事件的二相性: 表支持了静态数据而日志捕获变更。日志的魅力就在于它是变更的完整记录,它不仅仅捕获了表的最终版本的内容,它还记录了曾经存在过的其它版本的信息。日志实质上是表历史状态的一系列备份。

这可能会引起你对源代码的版本管理。源代码管理和数据库之间有密切关系。版本管理解决了一个大家非常熟悉的问题,那就是什么是分布式数据系统需要解决的— 时时刻刻在变化着的分布式管理。版本管理系统通常以补丁的发布为基础,这实际上可能是一个日志。您可以直接对当前 类似于表中的代码做出“快照”互动。你会注意到, 与其他分布式状态化系统类似,版本控制系统 当你更新时会复制日志,你希望的只是更新补丁并将它们应用到你的当前快照中。

最近,有些人从Datomic –一家销售日志数据库的公司得到了一些想法。这些想法使他们对如何 在他们的系统应用这些想法有了开阔的认识。 当然这些想法不是只针对这个系统,他们会成为 十多年分布式系统和数据库文献的一部分。

这可能似乎有点过于理想化。但是不要悲观!我们会很快把它实现。


以“ 云计算大数据 推动智慧中国 ”为主题的 第六届中国云计算大会 将于5月20-23日在北京国家会议中心隆重举办。产业观察、技术培训、主题论坛、行业研讨,内容丰富,干货十足。票价优惠,马上 报名

移动开发者将有望拥有.app域名使用权 微信将推“游戏中心”?移动互联网入口圈地加剧 美国航空公司首次开放API 并举办“黑客马拉松”编程大赛 谷歌数据中心设计的10条“黄金法则” GitHub时代:为什么我们都在开源 VMware发布Horizon Suite 三款应用打包折扣低 TOP30+应用排行榜:二月份国内外综合榜单 开源是否意味着不需要负任何责任? 微软年度科技展 酷炫技术知多少 图解Hadoop生态系统 HTML5并不给力 微软IE10又默认启用Flash Oracle出新提案:Java正逼近iOS? TIOBE 2013年3月编程语言排行榜:厚积薄发 Ruby反超Perl 清华大学开源镜像站将被关闭 发表公开信 前Google资深研究员赵勇回国创业 专注计算机视觉/模式识别 开发者福音,微软开源Kinect源代码 日本很积极:富士通和NEC确认将推Tizen设备 10大支持移动“触摸操作”的JavaScript框架推荐 数据科学家的争夺及美分析学专业研究生院的建立 从开放走向封闭 Netflix宣布停止发布API key 《植物大战僵尸》神秘续作:可能是一款横版游戏 高性价比:GlassUp宣布支持Windows Phone系统 未挖掘到足够信息:非收集数据少,是利用率只有1% 下一个帝国:谷歌收购初创公司DNNresearch 苹果更新Apple Store应用,可查看零售店库存 开源软硬件:福特汽车的OpenXC计划 Temple Run:Oz稳坐付费榜头把交椅,迪士尼名利双收 Facebook开放图谱示好开发者 新增书籍电影等九项操作 源代码管理的六大视觉模式 最新算法面世 可提高云数据库性能 分析称平板电脑应用将占全球应用经济的35% 怎样在TStringGrid的整个框内绘图,而不是在某个单元中绘图? WEB安全认证问题 TO: neweb(永不言败) 请问各位大虾,哪里有jdk1.3 for linux SPARC 版本 求救!硬盘坏了! 晨昏三灌水,早晚一个屁 怎么在EXCEL中用VBA控制图表的位置? Delphi确实很好,学了好几年了,但在上海差点没有找到工作,很少有招学Delphi的 关于 VC 6.0 有没有什么补丁,升级文件之类的东西? 高分争解 怎么利用Jsp发邮件? 有谁知道光驱加锁的问题 parodox数据库问题 各位平时用 VC 作东西,都用那些辅助工具?  高分争解 【 http://www.esoftware.com.cn/search.php?condition=%BA%AB%C1%F7%C0%B4%CF%AE&page=1&mode=3 】 JBuilder的使用问题 在VFP中,编程执行SQL语句时,怎样使系统的查询结果不出现? 一个程序流程的问题 为什么当我的SpeedButton的enabled为false时,上面的图标就没有了? 囡囡(baicolt)请进,问你一点事情 简单问题,请赐教 高分相赠!!!:操作系统和SQL SEVER2000都是英文版,用VB连接如何可以正确的输入和显示中文? 则么在程序中得到sql的存储过程的返回值? 请问 VB 6.0 有没有最新的升级文件之类的东西?高分争解 谢谢 谁有用java做的复杂一点的图行界面的例子 网管来看看,为什么不能给分了!右边的文本框又不见了! 各位用 VB 编程都用那些辅助工具? 高分争解 关于ShellExecute 装了redhat7,在/etc里没有inetd.conf文件,谁见过这咋整 菜鸟请教大侠!很急!谢谢!!只有10分对不起! 请问一个关于CLASSWIZARD 的问题 这里有PB反编译程序,你信吗? 怎样解 关于大数据量的问题,经验丰富者里面谈! 我想在程序里控制程序外的浏览器窗口资源管理器窗口,怎么做呢?急呀!!!!!! 请问:我用JavaMail收下的邮件主题,发信人姓名不能正常显示。。。。。 认识我的人都进来跟我聊聊吧,我最近新换了工作,还没有适应,你们各位是怎么换工作? 请问如何在Delphi中表示二进制,或者十六进制数呢? 各位35以后干什么?我们能干什么? ????? 如何将eltree中的数据和某数据表关联 有没有比RECORDCOUNT快的方法实现同样的功能? 鉴于目前有些东西说话不知轻重,把这个旧闻再贴一遍,不要以为真的在网上 “没人知道你是一只狗” Java 工具 怎样解决vb中编译成exe文件中出现的问题? 你别说国企,只要是沾的国企的气味就他妈的黑! api函数我不懂。 我要开发一个网络监听的程序,捕获所有以太网中所有的帧,象NT和Win2000中的网络监视器一样 找了半天,看不到一个熟人,认识的过来报到 请问哪里有下载jdk啊? 问题征集算法 偶烦!偶郁闷!咿呀~~~~~~~~老哥进来安慰偶。。。。快!快!快!!! 在ListView中,如何象Windows资源管理器那样将剪贴了的文件图标变虚? 化学粗盐提纯除 泥沙 硫酸盐 MgCl2 CaCl2的步骤及现象 对于反应:CAH2+2H2O=Ca(OH)2+2H2电子转移是怎么样的?为什么氢化钙中的H一定与H2中“配对”搭双线桥就不能与氢氧化钙中的H搭双线桥? 制取乙酸乙酯的化学反应方程式? 如果要除去粗盐中含有的可溶性杂质CaCl2(氯化钠),MgCl2(氯化镁)及一些硫酸盐,按下表所示顺序,应加入什么剂 CAH2+2H2O=Ca(OH)2+2H2 这个反应解释一下!为什么不是全部水中的氢来产生氢气,而有氢化钙来提供一部分就是为什么只有1个h2o来还原?详细点啊! 工业制取漂白粉的化学方程式? 粗盐中含可溶性CaCl2,MgCl2及一些硫酸盐粗盐中含可溶性CaCl2、MgCl2及一些硫酸盐除去这些杂质的试剂可选用①Na2CO3、②NaOH、③BaCl2、④ HCl 加入的先后顺序可以是 A①②③④ B②③①④ C②①③ 对于反应:CAH2+2H2O=Ca(OH)2+2H21,H2只是氧化产物 2,H2只是还原产物 3,H2O是氧化剂 4,CAH2中的氢元素被还原 5,此反应中氧化产物和还原产物的分子数之比是1:1.上述正确的是( )A 1 4 5 B24 C1 D 3 5 制取四氧化三铁的化学反应方程式 用海带制取碘的化学实验1.本实验的原理2.实验前为什么要用刷子而不用水冲干海带3.碘单质易升华,为什么还可以用酒精灯灼烧干海带4.能否用氯水代替稀硫酸和双氧水 除杂:Na2SO4,MgCl2,CaCl2,如果用BaCl2,NaOH,NaCO3除,最后不是还有Ba离子吗?那应该怎么才可以完全除去就按照这个顺序除 氢化钙(CaH2)固体是登山队员常用的能源提供剂,用它和水反应生成的氢气供燃料之需,该反应同时还生成氢氧化钙.现有87.5氢化钙与足量水反应,可生成多少8克氢气,求氢化钙样品中氢化钙的 某化学课外活动小组以海带为原料获得少量碘水,并以CCl4为溶剂将碘从碘水中提取出来.具体过程如下图所示则:操作①的名称是 ,在操作过程中使用到的玻璃仪器有 .操作②中发生反应的化学 6.粗食盐中常含CaCl2、MgCl2、Na2SO4等杂质,需按一定顺序加入NaOH溶液、Na2CO3溶液、 BaCl2溶液和盐酸(A.Na2CO3、BaCl2、NaOH、HCl B.NaOH、BaCl2、Na2CO3、HCl C.BaCl2、NaOH、HCl、Na2CO3 D.BaCl2、Na2CO3、HCl 氢化钙(CaH2)固体是登山队员常用的能源提供剂,用它和水反应生成的氢气供燃料之需,该反应同时还生成氢氧化钙.现有87.5氢化钙与足量水反应,可生成多少克氢气 和体积 用海带为原料制取少量碘水,现用CCI4从碘水中萃取碘并用漏斗分离两种溶液,实验过程操作如下:A:把盛有溶液的分液漏斗放在铁架的铁圈中;B:把500ml碘水和15mlccl4加入分液漏斗中,并改好玻 粗盐的除杂 杂质Na2SO4,MgCl2 试剂 Na2CO3,NaOH,BaCl2,HCl 答案是BaCl2,NaOH,Na2CO3,HCl既然Na2CO3也可以沉淀MgCl2,那加NaOH不是可以去掉吗? 氢化钙(CaH2)固体是登山运动员常用的能源提供剂,它与水反应生成氢气供燃烧之需,化学反应方程为:CaH2十2...氢化钙(CaH2)固体是登山运动员常用的能源提供剂,它与水反应生成氢气供燃烧之需,化 我做实验时,为什么煮得的提取液是浓浓的黑色(像煲中药似的)?反复过滤后仍无法得到澄清透明的液体?海带的用量过多会有影响吗? 粗盐有MgCl2,CaCl2,Na2SO4用NaOH,Na2CO3,BaCl2过量之后加适量盐酸除去,为何氯化钡要放在碳酸钠之前? 登山队员常用的能源是氢化钙(CaH2)固体,它和水反应生成氢氧化钙和氢气(CaH2+2H2O═Ca(OH)2+2H2↑),求氧化钙中钙、氢元素的原子个数之比为?氢元素的质量份数为?(精确到0.1%) 如何用化学的方法从海带中提取碘 过滤后的食盐水仍含有可溶性的CaCl2、MgCl2、Na2SO4 等杂质,通过如下几个实验步骤,可制得纯净的食盐水:① 加入稍过量的Na2CO3溶液;② 加入稍过量的NaOH溶液;③ 加入稍过量的BaCl2 溶液;④ 登山队员常用的能源物质是氢化钙(CaH2)固体,用它和水反应生成氢氧化钙和氧气,氢气供燃烧之需.(1)写出氢化钙和水反应的化学方程式(2)写出氢气燃烧的化学方程式 为了除去粗盐中的CaCl2,MgCl2,Na2SO4及泥沙等杂质,某同学设计了一种制备精盐的实验方案,如图:1.在第4步和第六步中,写出所有反应的方程式2.判断BaCl2已过量的方法: 过滤后的食盐水仍含有可溶性的CaCl2、MgCl2、Na2SO4 等杂质,通过如下几个实验步骤,可制得纯净的食盐水:① 加入稍过量的Na2CO3溶液;② 加入稍过量的NaOH溶液;③ 加入稍过量的BaCl2 溶液;④ 金属钙与水反应方程式急啊-------要准确的! 如何除去粗盐中的可溶性杂质CaCl2,MgCl2,Na2So4等,得到较纯的食盐?加入的顺序为BaCl2、NaOH、Na2CO3 为什么是这个顺序? 除去食盐中的CaCl2,MgCl2,及Na2SO4,可否按照,1,BaCl2;2,Na2CO3;3,NaOH;4,HCl的顺序进行?如果不行,why? 钙单质和水反应的化学方程式 如何提纯含泥沙、MgCl2、CaCl2、Na2SO4的粗盐为原料提取NaCl的固体的工艺流程图 急用 一氧化碳的物理性质为?化学性质为?煤气是一种重要的燃料,它的主要成分是一氧化碳,煤气是一种没有颜色、没有气味的气体,日常生活中为了防止煤气中毒,常在煤气中加入少量有强烈 氧化钙与水反应的化学方程式 如何除去NaCl中所含的Na2SO4、MgCl2、CaCl2按顺序写出所加试剂及相应的方程式. 求一氧化碳的物理性质四条和化学性质两条~ 写出过氧化钙与水反应的化学方程式.[过氧化钙CaO2]要配平.过氧化钙与水反应生成氢氧化钙与氧气。 怎样除去粗盐中的Mgcl2和Cacl2啊? 一氧化碳具有什么特性 生石灰与水反应的化学方程式 氯化钠是日常生活的必需品,也是重要的化工原料.(1)粗盐除含NaCl外,还含有少量MgCl2、CaCl2、Na2SO4以及泥沙等杂质.以下是粗盐提纯的操作流程.提供的试剂:Na2CO3溶液、K2CO3溶液、NaOH溶液、BaCl2 一氧化碳具有还原性,是什么变化性质(物理, 氧化钙与水反应的化学方程式及现象 氯化钠是日常生活的必需品,也是重要的化工原料..在滤液中加盐酸的作用是( ).1)粗盐除含NaCl外,还含有少量MgCl2、CaCl2、Na2SO4以及泥沙等杂质。以下是粗盐提纯的操作流程。提供的试剂:N 一氧化碳具有还原性是什么性质(物理还化学) 过氧化钙与水反应的化学方程式是什么? 食盐是日常生活的必需品,也是重要的化工原料.粗食盐常含有少量K+、Ca2+、Mg2+、Fe3+、SO42-等杂质离子,实验室提纯NaCl的流程如下按滴加顺序依次为Bacl2,NaoH,Na2CO3.为什么Na2CO3要最后滴加?放在Bacl 一氧化碳具有还原性质么? 氢化钙的制备装置图 (2011•津南区一模)氯化钠是日常生活的必需品,也是重要的化工原料.粗盐除含NaCl外,还含有少量MgCl2、CaCl2、Na2SO4以及泥沙等杂质.以下是粗盐提纯的操作流程.提供的试剂:Na2CO3溶液 一氧化碳和二氧化碳有什么共同性质 氢化钙取氢气的好处生活中为什么不用这种方法制取氢气 如何除去NaCl中的MgCl2和CaCl2? 塑料饮用瓶的形状包含了哪些科学道理? 金属氢化物是如何制备的?如氢化钠,氢化钙 要除去粗盐中含有的杂质cacl2、mgcl2及一些硫酸盐,所加试剂顺序可以颠倒吗?书上是先加bacl2,然后naoh.最后na2co3. 塑料饮料瓶的形状设计包含哪些科学道理? 氯化铵和氢化钙反应生成什么气体? 高一化学必修一第一单元粗盐中含可溶性CaCl2、MgCl2及一些硫酸盐,除去这些杂质的 塑料饮料瓶的形状设计包含着哪些科学道理小学六年级上第二单元一课找拱形课文,要根据课文内来回答,不要太扯远,注意是“形状”包含的科学道理哦. 生产轻质碳酸钙的化学反应方程式
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn