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

十亿月PV网站秘诀:Reddit自失败中总结的25条经验

HTML文档下载 WORD文档下载 PDF文档下载
自2005年至今,Reddit的月页面浏览量完成了百万到十亿的转变。流量每15月翻一番,然而员工数量仍不满30。如此成就凭的是数以万计的志愿者,以及失败中不断积累的经验。

Reddit前雇员Jeremy Edberg在RAMP会议上发表了主题为“Scaling Reddit from 1 Million to 1 Billion–Pitfalls and Lessons”的精彩演讲,分享了知名社交网站Reddit的打造经验。Jeremy现为Netflix可靠性架构师,更添为 Year One Labs的顾问;曾任Reddit首席架构师,兼技术、运营部门负责人,更早之前还效力于eBay及Sendmail。

近日HighScalanbility创始人Tod Hoff对该讲话进行了总结,并基于Netflix做了相应的对比,以下为译文:

首先,一些值得关注的观点:

1. 将SSD看做便宜的RAM,而不是磁盘。在Reddit磁盘都更换为SSD之后,服务器的数量从12台减少到了1台,并且有资源结余。SSD是比磁盘贵4倍,但是你得到了16倍以上的性能,值得投入。

2. 给用户动手空间,看看他们都在做什么,然后将好的东西加入到特性里面。Reddit从用户的身上学到了太多东西,网站的平稳运行有很大一部分归功于用户。通过用户你可以了解很多未知却非常有价值的东西,比如开始被比作社区笑话的Reddit Gold服务;当被Reddit做成产品后,深的用户欢心。

3. 开始时并不需要一个可扩展架构。未来的特性集肯定无法在开始被预测,所以有充足的时间去弄清扩展问题。随着网站的发展,系统将被更清晰的认知,扩展性问题也将迎刃而解。

4. 将未登录用户作2等公民对待。未登录用户远离缓存,让Akamai首当其冲,性能将得到大幅提升。

这样的点还有很多,下面就看一下Jeremy Edberg在不断失败中提取的宝贵经验:

统计

1. 流量每15个月翻一倍


2. 如上图所示,Reddit 8月的统计为:来自177个不同国家,67,328,706 UV及4,692,494,641PV。这个讲话结束在10亿PV这个点。

3. 28个员工

4. 每个员工大概负责2400万UV。

5. 上万个志愿版主

6. 在2012年,Reddit使用 240个服务器支撑每月20亿的PV及2TB的PostgreSQL数据。所有高流量数据都从EBS(Elastic Block Store)转移到Local Ephemeral Disk。

故事的起源

1. Reddit起源于2005年,开始的想法是订餐服务,并未获得Y Combinator的青睐。再次来到Y Combinator与Paul Graham详谈时,他们提出了建立整个互联网首页的创意。也就是现在的Reddit,当然不那个时候他们还不了解Digg。

2. 网站开始托管在一个数据中心,然后逐渐过渡到EC2。

  • EC2在2006年首次被采用,主要使用S3存储和服务日志
  • 2007年使用S3存储缩略图
  • 2008年使用EC2做批处理,使用VPN与数据中心连接
  • 2009年使用EC2服务整个网站。其花费整整1天的时间将所有数据迁移到EC2,Data Gravity一个很好的示例

EC2

1. EC2决策制定的积极因素

  • 不想租更多的机柜及购买更多的服务器
  • 数据中心规模扩展太快,并且无法在早期做增长预测
  • 对一个4人团队来说,使用EC2更具成本效益,EC2比旧金山的数据中心便宜29%

2. EC2并非一直无往不利。你需要忍受更高的网络延时及吵闹的“邻居”,因此必须早做打算,好处是可以按需扩展。

3. EC2上资源限制记录

  • 所有资源都存在单账户限制
  • Amazon有时候并未认识到一些来自他们的限制
  • 追踪限制,并在需要之前克服
  • 捕获异常,了解限制的临界点

架构

1. Reddit的架构非常简单的。用户连接到一个与应用程序层通信的web层,应用程序层则负责与memcache、Cassandra及PostgreSQL通信。PostgreSQL使用了主-从配置,一个批处理系统通过Cassandra及PostgreSQL实现。

2. 相比起来,Netflix使用了一个面向服务的架构,组件间通信通过REST API实现

  • 优势:易于扩展,因为扩展往往只是针对某个服务进行;易于容量规划;更容易确定问题所在,因为他们都通过REST调用隔离;作用域变窄;更有效的本地缓存。
  • 劣势:需要在不同服务上工作的多个开发团队或开发者,因此需要很多人力;需要防止工作重叠的通用平台;对小团队来说,初始的开销太大了。

3. PostreSQL是个非常好的数据库,具备完美及飞速的键值存储。

4. Email是个不小的挑战。投递正确性难以保障。开始时使用自己的邮箱服务器,现在已经转向电子邮件服务提供商。

5. 队列是“救世主”。在做组件间工作传递时,将其放入一个队列,将是一个非常不错的小缓冲区。(Reddit使用RabbitMQ支撑队列)

6. 混合使用Nginx和HAProxy。许多传输是相互的,为了负载均衡,在Nginx无法处理时果断转向HAProxy。它使用L7负载均衡,而Nginx仍然用来终止SSL及服务静态内容。

代码

1. 框架。开始时,使用的是Pylons(Django太慢了),一个基于Python的框架。确实易于起步,然而很快就被迫放弃,因为它们不符合你的用例。Pylon被做了太多的修改以至于无法更新到下一个版本,这个问题现在已经被修复了,所以还会再次使用Pyramid(pylon的新名字)。

2. 基于事件还是线程?基于线程更好做容量规划,但是线程池的容量需要投入很多的精力。基于事件,可以获得更多的连接,但是你必须花时间去做好棘手问题凸现的准备。

3. 开源是极好的。Reddit基于开源打造,付费软件并不一定是个很好的决策,特别在起步阶段。

数据

1. 数据是最宝贵的财产。类似Facebook、Google及Flicr都是建立在数据之上。

2. 以数据为中心。围绕数据建立应用程序,也就是应用程序需要绕数据运作。数据建立了一个重力井,所有的一切都需要向它靠拢,因为数据是最难移动的。数据集越大,迁移就越困难。如果将现在的Reddit搬离EC2,将造成非常大的开销,这也是为什么EC2在数据传入时是免费的,读出时却是收费的,因为他们企图将你所有数据都带入云中。

3. 关系型数据库和非关系型数据库。大部分Reddit数据都是键值型的,储存于PostgreSQL。基于事务的需求及易于分析,所有涉及金钱的处理都使用了关系型数据库。

4. 铁打的PostgreSQL。PostgreSQL非常可靠,使用至今未发现其自身问题。如果真的出问题了,肯定由其它事件引起,比如使用Python编写的备份系统。之所以PostgreSQL的使用场景多于Cassandra,因为Cassandra出现的比较晚。再加上PostgreSQL确实非常的快,并且原生支持KV。

5. 分片。写操作被分布到4个主数据库: 链接、 账户、subreddit、评论、投票及杂项。

  • 每个都有从节点。投票使用了1主+1从模式,而评论则是1主+12从
  • 尽可能的避免从主数据库中读取,直接在从节点上读取,从而让主节点专注于写操作
  • 客户端库将负责从节点的负载平衡,在某个从节点繁忙时会自动选取另一个
  • 编写了数据库访问层“thing”
  • 这个组合使用了很长一段时间:结合分片数据库、从读并且监视从读性能以更好的均衡负载

7. Cassandra

  • 写入速度快,否定查询速度快,易扩展,没有单点故障
  • 在Netflix每个数据都会被分配到3台主机上,如果1台主机故障,余下的可以继续运行。
  • 将投票数据迁移至Cassandra让Reddit获益不浅:Cassandra布隆过滤器提供了非常快的否定查询,对于评论来说,可以非常快的查询出没投票的评论,这样反的答案将非常快的出现。( 更多细节)

社交

1. 2008年的Reddit是开源的

  • 用户可以查看源代码,然后确定没有投票干预成分存在
  • 用户可以添加自己一直想要的特性,Reddit就会支持它,当然这对不想写代码的人毫无作用
  • 招聘。因为代码为许多人知晓,所以就更容易招聘了解代码的人,这个理论通常被用于创意推销

2. 蠕虫事件。有人发现了如何通过给页面注入javascript来编写蠕虫,虽然无意传播但是已经泄露。而那天,刚好是Reddit一个创始人的大婚之日,整个团队都在一架飞机上往回赶。然而不想一个用户已经设计好了阻止蠕虫传播的补丁,并将之开源,在最危急的时候帮助到了社区。

Reddit如何赚钱

1. Sidebox广告、自助式广告、商品、Reddit Gold 服务、市场。

2. 需要注意的是 Reddit尚未盈利,它同样带给我们一个问题——像Reddit这样的网站是否可以通过云来盈利?

3. 同样需要注意的是Reddit已不再属于Condé Nast,也就是它独立了。

曾犯过的错误

1. 未考虑迁移到EC2的延时。数据中心机器间访问延时是亚毫秒级,所以针对一个页面负载访问1000次memcache也是可行的。然而在EC2中就不行了,memcache访问时间延长10倍至毫秒级,这就让老方法并不适用。应对方法是对memcache进行批量访问,这样一个请求将返回大量的结果。

2. 未履行的承诺。Amazon不总是遵循承诺,并一遵循承诺为目标。要学会与故障周旋,而不是去修复。

3. 不要怕使用新产品。Cassandra采用时,还处开发阶段,虽现在发展不错,但仍不乏问题。

4. 在发往客户端前,是否需要尽可能的简化工作。在推送到客户端之前,服务器做了很多的页面渲染。Facebook在这方面的经验非常丰富,你得到一个拥有许多div及API(用于填充div)的矩形,这也是Reddit想尽快实现的地方。这样会让应用有更好的扩展性,同样帮助到了调试,因为很容易确定是哪个API产生了问题。

5. 没有足够的监视,使用的唯一监视系统并不适合虚拟化场景。开始时使用的是Ganglia,它提供了非常不错的图形,但是难以使用并且变化的非常快,特别是在实例变化不断的虚拟化环境中。

6. 没有给数据设置生命周期。在Reddit ,评论并没有一个到期时间。他们已经着手限制老评论的投票,以及旧主题评论。这就导致了数据的一直增长,直到数据库难以支撑热数据的存储。

7. 没有使用一致性哈希。当给缓存哈希时,问题就卡在想为缓存增加容量的情景——因为所有数据都在一个缓存上,或者你需要哈希太多缓存。在缓存增加后,无法再平衡。一致性哈希就是问题的解决方法之一,他们通过迁移到Cassandra解决了这个问题。

经验教训

1. 扩展的关键就在于先用户发现瓶颈所在

2. 使用proxy非常有益于扩展。用户可以通过URL被路由,Reddit拥有一个可以监视每个发送给服务的URL长度。给流量的速度分级,基于响应速度的平均值去拆分流量是个巨大的提升。

3. 自动化一切。如果可以像对待代码一样去对待基础设施,那么工作将非常轻松,所有基础设施最好能自动打开和关闭,并且自动配置。

4. 开始时并不需要建立一个可扩展架构。因为在初期你根本不知道最终的特性集,所以你有很多的时间来解决扩展问题。随着网站的增长,你将清晰的发现问题所在。

5. 在开始时并不需要使用一个面向服务的架构。将它做为目标,在网站发展到中等规模时可以去实现,否则只会带来更多的开销。

6. 不必刻意追逐潮流,但是偶尔试下也不错,比如node.js。

7. 限制一切。时常发生的事情需要加上限制,并根据需求抬高或者放低。如果超出限制,需阻止用户已保证服务的正常运作。

8. 长远的计划。设计时总是假设当下做的事情以后会有更多,应用程序服务器、数据库、缓存。开始时就假设不会只有1个,那么以后的横向扩展会容易很多。

9. 将Python使用C来重新编码。随着Reddit不停扩展以追求更快的速度,他们使用C来重新编码了经常用到的功能(之前用的是Python),特别是过滤器、Markdown渲染以及memcache调用。这时Python作为胶水语言的好处就出来了,调用C时非常简单且效率。

10. 尽量保持无结构化模式,这将让服务很容易添加特性——在不更改表格的情况下就可以增加属性。

11. 数据的生命周期。对旧主题进行锁定,然后建立一个完整的呈现页面并缓存,这样就可以保证数据库不会被旧数据淹没。同时,停止旧评论的投票及旧主题的评论,用户一般很少发现。

12. 将SSD看做便宜的RAM,而不是磁盘。当Reddit将磁盘都换成SSD后,服务器数量从12台减少到了1台,并且还有资源结余。SSD是比磁盘贵4倍,但是得到的却是16倍性能,值得投入。在Netflix与Reddit,一些最大的Cassandra都使用上了SSD,各方面得到了很大的提升。

13. 每个工具都有特定的用例。Memcache无法持久化,但是却非常快,所以投票数据就存储在那里以保证页面的飞速渲染。Cassandra可以持久化并且很快,同时布隆过滤器还提供了快速的反查询,所以当数据不在缓存中时用它来储存投票的副本非常合适。PostgreSQL是可靠的关系型数据库,所以用它来作为Cassandra的备份储存投票数据,以及用作需要相关性的批处理操作。

14. 将未登录用户视为2等公民。开始时这些用户占了网络流量的80%,至今仍有50%之巨。让未注册用户远离缓存,Akamai首当其冲,性能将得到大幅提升。附带的好处是,如果Reddit宕机了,未登录用户甚至毫无所知。

15. 将一切都放到队列中。投票、评论、缩略图创建、预计算查询、垃圾邮件处理及修正,队列可以让你在监视长度时发现问题所在。附加好处是,队列可以让问题对用户透明;比如队列中的投票请求,如果没有立即生效的话不会有任何人注意到。

16. 将数据保存在多个可用区域

17. 避免将网站放到一个单实例上

18. 频繁的抓取EBS磁盘快照

19. 不要在实例上保存秘钥

20. 通过Security Group划分功能

21. 提供一个API。程序员将在你的平台上开发,比如Reddit的iPhone应用就是用户通过API建立的。

22. 在社区中保持一定的活跃度。Reddit管理员经常在论坛现身并参与互动,这点深受其用户的喜爱。

23. 让用户为你做事。人气网站总是不乏欺诈、垃圾邮件等问题,而在Reddit这项工作由上万个志愿者完成,他们仔细的处理了大多数的垃圾邮件问题。这个工作模式顺利的难以置信,同时这也是Reddit的团队可以维持很小的原因。

24. 给用户动手空间,看看他们都在做什么,然后将好的东西加入到特性里面。比如赋予用户给subreddit添加CSS的能力,选择好的功能,并为每个用户都添加。这同样让用户乐于在Reddit上做些东西,让他们满足于这种控制感。

25. 听用户的话,用户将告诉你许多想知道但还不知道的事情。比如,在社区中Reddit Gold服务以笑话的形式开始,但是做成产品后却深受用户喜欢。(编译/仲浩 审校/周小璐)

原文链接: Reddit: Lessons Learned from Mistakes Made Scaling to 1 Billion Pageviews a Month 

更多内容请关注CSDN云计算频道 及@CSDN云计算微博

取经:《捕鱼达人2》每月捞金160万美元的秘密 AWS推数据仓库服务Redshift 价格仅是Teradata IBM Oracle的十分之一 美国开展数据中心整合计划 简化政府IT运营 阿里巴巴数据交换平台——集大成于一身 [体验]Windows 8 Metro/Modern Style IE 10 Growth Hacker正席卷全球,你了解它吗? Splashtop发布Ubuntu Linux版本Streamer 性能超过VNC 10倍 Windows 8引领智能操作 人机交互进入触控时代 豌豆荚发布新版应用搜索 推出“绿色标签”机制 权威解读:苹果的未来将走向何方? Google炮轰Facebook:你们的社交已经过时了! iOS设备硬件规格完整汇总 2012 MDCC“2012移动互联网应用创新大赛与开发者面对面”专场:创所未享,携手逐梦! RIM携QNX为“2012 BlackBerry平台移动应用高校竞赛” 颁奖 BlackBerry 10 策略:用金钱吸引游戏开发者 黑莓10要来了:RIM正式开放应用提交 从RIM与微软达成exFAT授权所想到的 OpenStack中国行来到南京 中兴通讯分享电信行业应用 CSS架构目标:预测、重用、扩展、维护 黑客利用移动浏览器漏洞窃取云计算资源 地位动摇:Windows设备10月销量同比下滑21% 手机QQ浏览器4.0 Android版 极速快感 生存还是毁灭:Facebook惨败真是HTML5的错? OpenStack基金会主席:一年后成熟度超越CloudStack 在线学习新编程 技巧全攻略 “英特尔杯”HTML5程序开发邀请赛侧记 C#编译器组首席工程师Eric Lippert离职 加盟Coverity Testacular:Google开源的JavaScript测试执行过程管理工具 黑莓亚洲开发者大会报道:BB10将敲开亚洲应用市场大门 挑战Google!传Facebook与Yahoo要联手开发搜索引擎 揭秘Android 4.2 开发者的天堂与地狱 paradox数据库表导出excel的问题 如何在delphi中显示word文件? 一个关于文件读取的问题 有没有办法更改ClientDataSet的Delta? HELP ME!!!怎样用JAVA作成系统托盘 有没有办法更改ClientDataSet的Delta? 谁能告诉我这样一个问题???pagecontrol的底面颜色怎么改变?????? 请教DWORD的用法 主键。。。。这下傻乐 散分阿 问题没有解决,再给五十分! 当鼠标移至一个VCL上如LABEL的时候其颜色为改变,请问用何事件?初级问题,前十个都有十分 那里有 Install shield?? 怎样让一个程序自己关闭后重启?? 请教大家一个低题的问题? 求救 怎么通过程序设置一个CView视图的滚动条?? 怎样在delphi中用sakemail对要验证的SMTP服务器发邮件? rdoRegisterDataSource建数据连接 的network参数值有那几个? 两个多线程的问题,大家都来看看 在那个网站可以查考研的分 我的程序不能对sql2000进行更新,为什么,我用jbuilder6,请高手赐教!!! 怎样修改SQL Server的时间格式? pb8_DATAWINDOW问题!高手HELP ME!!请帮主来帮忙!! 哪里有《c语言手册》卖或下载? pb8用cell连接sybase12。0时用的连接字符串,当然是没有成功,有解决办法吗,sybase本身带ado驱动,但是不知道如何写。 用sql语句,怎样取最后10条记录。 想在北京找个java方面的工作,好找吗? 请问ISA Server 中如何设定某个局域网IP访问Internet的带宽上限? 请教大家一个低题的问题? 用InterDev创建工程的时候为什么总是提示Unable to contact web server http://localhost? 偶的100分就这样没了????!!!!!!! 调查:一般多长时间将你在 download.com 上的程序升级? 请问谁有解三元一次方程的程序,能给发过来吗? 检查表单这样为什么不行? 如何看别人的源代码??? 各位,那位用过华表插件...求救,怎么嵌入html? VC下基于ATL的数据库编程问题,很容易拿分的。 请问怎样才能向数据库插入当前日期,格式为14位字符串yyyymmddhhnnss 怎样从html页面中向ActivXForm传参数,在ActiveXForm中又如何接收? 如何控制 Text 控件中文本的行间距? 如何看别人的源代码??? 一些代码... 那位知道 Microsoft ODBC for Oracle 的驱动程序在那里能下载 ::)access数据库中字段是日期和时间型,用DAO编程应该用什么类型的数据才能填充数据库中的字段。 为什么?(大虾、菜鸟...统统欢迎) 在C/C++ 程序中怎样延时? 关于vb程序关闭的问题 如何得到一个文件夹的所有子文件夹和文件? ISA Server LOG中发现异常记录!是不是有黑客? 今年软件水平考试什么时候开始报名啊? 为什么汞洒出后要用硫呢? 除去铁粉中混有少量铝粉.加过量的NaOH后过滤那么这样子不是生成FeOH了吗?为什么这个对了?不是把铁粉消耗了吗?然后过滤后有FeOH NaCO3+SiO2=NasiO3+CO2 NaSiO3+CO2+H2O=SiO2+NaCO3这两个方程是否矛盾,如果矛盾,为什么 为什么汞洒落地面时要撒上硫粉? 大河野钓鲫鱼如何打窝 NaSiO3+CO2+H2O=NaCO3+H2SOi3的离子方程式! 什么叫硬质沥青,甘油沥青? 用酒米打窝钓鲫鱼好用吗?只能钓鲫鱼吗? NaCO3和H2O不反应原因为什么不反应是没生成气体沉淀或水吗Na2CO3+h2o=na2o+h2o+co2吗 威猛先生厨房重油污净的真正成份是什么?用来洗碗对人体有危害吗? 水银掉地上怎么处理 三乙醇胺、乙二醇、丙二醇、丙三醇、聚丙烯酸酯、聚羧酸盐这些高分子化合物有毒吗 从电解水实验得的结论可以说一个水分子由两个氢原子与一个氧原子组成吗 水银掉在地上怎样处理? 如何用酒泡小米打窝钓鲫鱼 五氧化二磷与水反应生成什么 收集散落在地上的废汞用硫粉撒在地上之后再怎么办啊? 下列关于乙二醇和丙三醇的说法中,错误的是 [ ] A.甘油、乙二醇的水溶液的凝固点很低,乙下列关于乙二醇和丙三醇的说法中,错误的是[ ]A.甘油、乙二醇的水溶液的凝固点很低,乙二醇可作 电解水实验步骤 酒托是什么意思 野钓鲫鱼咋打窝用啥料 进行电解水的实验时,所观察到的现象A.正极产生的气体比负极多 B.负极产生的气体比正极多C.正极产生的气体可被点燃 C.负极产生的气体具有助燃性 甘油一酯 甘油二酯 性质谁能给介绍甘油一酯和甘油二酯的性质,这两种物质是否溶于甲醇? 三乙醇胺与乙二醇混溶么 在电解水的过程中,发生变化的粒子是( ),保持不变的粒子是( ),生成的新粒子是( ) 氯化铁与硫氰化钾的反应方程式 野钓鲫鱼用什么打窝 米奇不锈钢保温杯为什么会生锈 氯化铁与硫氰化钾反应的化学方程 .要除去下列物质中所混有的少量杂质,应加入什么试剂 写出有关反应的化学方程式.(1)铁粉中混有少量铝粉.(2(1)铁粉中混有少量铝粉.(2)FeC12溶液中混有少量FeCl3.(3)Na2CO3中含有少量NaHCO3.(4)乙烷 五氧化二磷溶于10℃水,生成什么? 青田石保养时用的石蜡是什么石蜡?可否告诉石蜡的名字什么的?我现在很急需要这个.我想知道的是青田石保养用的石蜡是什么石蜡?再有就是保养的基本方法是什么谢谢 铁粉中混有铝粉,除杂试剂是?;离子反应方程式? 怎样测出水玻璃中二氧化硅和氧化钠我是菜鸟麻烦大家说的具体一点 如何清除奇石表面的石蜡? 八年级上电解水实验的实验现象 在电解水试验中需要少量加入什么?因为什么? 石蜡可以保存500年么?稳定性达得到么?写小说的时候用到但对石蜡的性能不够了解 偏硅酸钠水溶液和铝反应么? 酒托是怎样的?劲舞团里面有找酒托这种行业,到底这种行业 有没有犯法呢? 请问铝粉中混入铁粉,想用磁设备将铝粉铁粉分开收集,怎么设计?这个是用皮带传送方式,可是铁粉是怎么落入盒子中的呢?不是沾到了磁铁轮上不动了吗? 怎样能使二氧化硅和氢氧化钠溶液更快反应,浓度、温度用多少合适?生成的硅酸钠能溶于氢氧化钠溶液吗? 没听过这个词 将铝粉中混有的铁粉分离出来应怎么办 从海带中提取碘除了用氯水作氧化剂外还可以用什么? 酒托是什么意思 如何用二氧化硅制硅酸钠 从海带中提取碘的实验中,为什么要加二氧化锰和稀硫酸?如题 请告诉我它们的作用 如果有反正发生请附上化学方程式 什么物质能发生质壁分离复原(像甘油一类的都有什么) 二氧化硅与烧碱反应生成的硅酸钠是晶体吗?不知道硅酸钠在离子反应式可不可以拆开来写,要不要打沉淀符号.. wg铁粉和铝粉的混合物,溶于足量盐酸后,加过量的 NaOH溶液,过滤,将沉淀完全收集后,充分加热,直至质量不再变化,称量仍为wg原混合物中铝粉的质量分数是( )A.30% B.50% C.70% D.90% 丙三醇性质 硅酸钠如何生成二氧化硅? 硅酸钠与氯化镁反应是双水解还是生成硅酸镁 甘油的性质特点是什么 为什么可以用氢氧化钠溶液来除去铁粉中的铝粉(求帮助,) 在电解水的实验中,可以直接观察到现象是 汞洒落后,为什么要撒上硫粉? 判断正误:A.除去铁粉中混有的少量铝粉,可加入过量的氢氧化钠溶液,完全反应后过滤.B.为测定熔融氢氧化钠的导电性,可在瓷坩埚中熔化氢氧化钠固体后进行测定.(请给出解释,) 电解水实验
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘