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

覆盖全领域:Google、Facebook、Twitter等大师的最佳推荐

HTML文档下载 WORD文档下载 PDF文档下载
每个公司都会针对自己使用场景做合适的设计,然而总有一些万变不离其宗的思想;比如:让应用程序保持简单、让所有事情自动化、重做你的解决方案、在适当的地方使用缓存、根据场景在数据的一致性和可用性之间做取舍。

Dodgy Coder发布了一篇关于高访问量公司扩展经验的总结文章,内容主要是High Scalability Blog上关于Google、YouTube、Twitter、Amazon、Ebay、Facebook和Instagram博文的摘取。

在具体看每个公司之前,先看一下这7个公司中的通用思想

  • 让应用程序保持简单——在扩展过程中、复杂性总会一直出现。
  • 让所有事情都自动化——包括灾难恢复。
  • 重做你的解决方案——在你准备好将其扩展到下一个等级时,你必须做好丢弃一个工作组件的准备。
  • 在适当的地方使用缓存。
  • 根据场景,在数据的一致性和可用性之间做取舍。

下面来分别看一下7个领域中大师级公司的优秀建议:

一、  Google

可靠的存储(Reliable Storage)

可靠、可扩展的存储基本上是任何应用程序的核心。GFS(Google File System)是Google的核心存储平台——它是一个大型分布式结构化的日志文件系统,Google在其中投放了大量的数据。然而为什么会自建系统,而不是使用其它已有的产品,其主要原因是Google需要对系统持有绝对的掌控力,同时这个平台也是Google与其它机构的区别之处。对GFS,他们的评价是:实现跨数据中心的高可靠性处理、具备扩展到上万个节点的能力、提供巨大的读写带宽、支持以G为单位的大数据块处理以及使用降低瓶颈发生的高效跨节点操作分发技术。

基础设施即竞争优势

Google可以释放出更快、更便宜,并且在规模上罕有匹敌的新互联网服务。许多公司与Google的想法并不相同,他们把基础设施的赡养看作是一笔负担。每个机构都使用完全不同的技术,并且缺少系统建设的计划和共识。

在平台的基础上构建应用程序

平台解决方案有一个经常被忽略的优势就是初级开发者就具备快速建立强健应用程序的能力。如果每个项目都需要建立分布式基础设施,那么你很快将会陷入困境,因为懂得这么去做的开发者非常少。协同效应并不总是空谈,从整个系统上着眼改善,可以帮助到建立在这个系统上的所有应用程序或项目。比如:改善了文件系统就可以让所有项目都立即和清晰地获益。如果每个项目都使用不同的文件系统,那么在整个堆栈上的改进将不会带来持续不断的增益。

自动化和恢复

建立订制的管理系统,让工作不需要停机进行。这样允许你更容易的进行以下操作:平衡服务器间的资源使用、动态的添加性能、将机器移除以及从容的处理更新。

建立一个Darwinian版的基础设施

并行地执行一个耗时(CPU绑定的)操作,并取优胜者。这尤其适合在CPU富余而IO不足的情况。

不要忽视学术

学术中有很多很棒的思想并没有产品化,你现在看到Google所做的事情只是在已完成技术上的部署,这些“顶尖”的技术在很早以前就已经被研发。

聚焦数据压缩

当由许多机器组成的大型集群受限于IO时,压缩不失为一良策。

二、  YouTube

越简单越好

寻找问题领域的最简解决方案。这里存在许多复杂的问题,但是选择解决方案的首要前提就是不能复杂。随着时间的发展,复杂性会一直存在,而最简单和最松散的解决方案是始终适用的。这样做的原因是保持解决问题的灵活性,反之你则会把自己逼入角落。你将会失去对程序的控制,同样当你试图解决时,问题将变的越来越复杂,你会变得无路可走。

欺骗:知晓如何在数据上作假

最快的函数调用就是根本上没有发生。当你需要做一个持续增加的计数器时,比如说一个浏览计数,你需要为每次的更改做数据库调用。或者你可以每隔一段的时间做一次调用,或者是一个随机数量做更改——但是人们可能就会认为它是实时显示的。你必须要知道如何在数据上作假。

抖动(Jitter)

如果你的系统不存在抖动,将会因为用户在同一时间对同一个资源进行请求产生Thundering Herd(“惊群效应”)。对于一个流行的视频,YouTube会尽可能的为其做缓冲。最流行的视频可能会缓冲24小时。如果所有缓存同时到期,将会造成上面所说的Thundering Herd。通过抖动,你可以设置随机的时间(18-30小时)。这将阻止事情在同一个时间发生,并且保证很长时间内请求的顺利完成。

近似的正确

用户所见就是你系统的状态。如果用户看不到你系统中存在的偏移和不一致,那么这些问题从本质上来说根本“不存在”。如果你正在一个页面上发布评论,而这时候某些用户刚好打开了这个页面,那么这些用户在半秒内可能根本看不到你的评论,然而那些阅读这个页面的用户根本不会在意这个事情。这种情况就允许你稍微的进行“作弊”,因为你的评论并没有达到全局一致性。如果真的去做这个全局上的一致性,那将会投入大量的开销,同样也是牛刀杀鸡——因为你并不是在做金融系统,所以你可以作弊。

三、 Twitter

实现一个API

Twitter的API Traffic是Twitter网站的10倍,API的使用是Twitter增长他们用例的最重要手段。保持服务的简单,允许用户在各自基础设施上建立服务,并且提出比Twitter能想到的更好应用程序思想。所谓众人拾柴火焰高,集思广益才能做更好的创新。所以开源你的应用程序,并且让其保持简单,这样就可以和其他人的应用程序进行整合。

使用你清楚的东西

Twitter使用了一堆消息传送。对用户发布的消息进行排队,然后分发给指定的用户。Twitter最主要的功能就是扮演消息传递的桥梁,架起不同格式(SMS、Web、IM等等)之间的消息传送。在后台同步发送消息去清除朋友的缓存,而不是单独的进行。Twitter开发者对Ruby最为熟悉,所以他们抛弃DRb转至Starling(一个Ruby编写的分布式队列系统)。分布式队列系统将队列写入磁盘,以防止系统崩溃。以Twitter的经验,大部分的性能提升不是语言的选择而是应用程序的设计。

知道何时进行缓存以及缓存什么

举个例子,获得你朋友的状态是很复杂的,包括了安全等多个隐患。所以,取代对数据库进行查询,朋友的状态将会被放入缓存。永远都不会接触到数据库。90%的请求都是API请求,所以他们在前端基本上不做任何页面缓存。因为Twitter的页面都对时间敏感,这样做(缓存页面)没有任何好处。

四、 Amazon

使用SOA

Amazon的架构都是松耦合的,并且围绕着服务建立。一个面向服务的体系结构(SOA),基于他们可以快速及独立的建立软件的多个组件,允许他们更快的向市场上投放。Amazon.com Web页就是一个类似的应用程序服务器。这样的话这个应用程序同时服务了网络服务接口、用户服务应用程序以及卖方接口。

使用API打造你的系统,你将围绕你的应用程序建立起一整套的生态系统。围绕着服务展开将给你更高的灵活性——你可以并行的进行操作,因为所有的输出都是一项服务。禁止客户端直接对数据库进行访问,因为不会涉及到客户端,所以你的服务将拥有更好的扩展性和可靠性。这点很像谷歌的改变某个组件让建立在整个系统或平台上的应用程序都获益。

根据场景在数据的一致性和数据的可用性之间做取舍

既然扩展你就必须做分片,所以你必须为特定的系统做高一致性或者高可用性的选择。你必须发现有效性和一致性上的重叠部分,根据服务的需求选择一个合适的方案。举个结账系统的用例:你总是希望将请求作为购物车的添加项,因为它产生了收入。在这个用例中,你就选择了高可用性。错误就隐藏在了客户方面,并且由其提出:当客户进行提交时,你必须对一致性进行重点对待,因为不同的服务(信用卡处理、运输、操作、报告)都将同时访问数据,并且每个都有各自数据一致性的需求。

拥抱失败

对失败抱平常心,它可能会经常出现,所以拥抱它。比如,使用一个快速重启和快速恢复方案。选用一个合适的数据传输,服务正常运行的几率将接近100%。建立一个自我修复、自我组织、无人值守类型的操作。

只用你需要的

让设计保持简单,确定设计中没有隐藏的需求及依赖性。将技术程度降到最低,你只需要一些解决问题的必须技术。确保这些技术不会带来更多的复杂性,慎重甚至是不选择一些特定的方法或者技术堆栈。有些地方他们使用jboss/java,但他们只选用Servlet,而不使用余下的几个J2EE框架。使用C++来处理请求,使用Perl/Mason来建立目录。

根据客户的反馈来指定决策

使用测量和客观的讨论去区分好坏。给客户一个切实的选择来测试哪个更好,并且通过这些测试制定决策。这点通常使用类似A/B测试和Web Analytics等技术实现。如果你产生决策上的问题,那么将其编码,让更多的人使用,从而清楚哪个选择才是你真正想要的。

扩展性即竞争优势

和Google一样,基础设施同样是Amazon竞争优势所在。他们可以简单的在原始服务上建立非常复杂的应用程序。他们可以独立的进行扩展操作,保持无与伦比的系统可用性,在不需要大规模的重配置下就可以快速的推出新服务。

五、 eBay

切分所有

如果你不能对其进行切分,那么你就不能对其进行扩展。通过功能和数据,将所有东西都切割成容易控制的组块。

异步所有

通过事件驱动队列和传输管道,连接起所有的组件。

拥抱失败

监视所有发生的事情,别间断服务——即使有些部分开始发生故障。最小化和控制依赖性,使用抽象的接口和虚拟化技术,组件中包含一个SLA,用户从SLA违规中恢复。自动化所有事情,组件需要自动的调整,而系统则需要自我调节和完善。

拥抱不一致

在需要使用CAP原理的地方挑选好每个特征,如果选择非分布式事务,不一致性可以通过操作顺序来最小化,通过异步恢复和调整实现最终一致性。

保存你所有的数据

数据驱动最佳的机遇、预测和推荐的发现,所以保存所有。清楚哪些数据是有权威的,哪些数据没有,进行不同的对待。

基础设施:给指定的工作分配合适的工具

需要最大化的使用每个资源:数据(内存)、处理(CPU)、时钟时间(延时)等。没有通吃的策略,区分规模对待。由商用、工业服务器共同组成。

六、 Facebook

扩展需要多次的迭代

解决方案通常是在工作的开始时提出,然而随着发展你必须对其进行修改——已经使用了一年的方案,以后可能不再适用。一个好的例子就是图片,Facebook现在(文章撰写时)每秒需要服务12亿张图片。第一代的思想就非常简单,没有考虑到扩展到如此规模,只注重功能上的实现。Uploader会将文件储存为NFS格式,而原数据将会保存在MySQL中。这个方案只用了3个月,但是这并不重要,在上市时间上他们赢得了巨大的竞争优势,同样功能上的特点比深思扩展方案来的更加重要。第二代则使用了不同的访问方式对其进行优化,鉴于较小的图片访问频度会比较高,所以对其使用了缓存,他们同样开始使用CDN(内容分发网络)。第三代则是一个overlay系统,让Facebook可以在原有的文件系统上使用BLOB存储。图片被存储到一个二进制的BLOB,因为你清楚BLOB中图片的字节偏移量,所以每张图片对磁盘只进行一次IO操作。

不要重复设计一个方案,让其保持简单

在你对系统进行横向扩展时,只使用你需要用到的。找到方案中需要重做的地方,进行优化,或者着手重新建立堆栈中需要修改的部分。Facebook花费了大把的时间去优化PHP,最终完成了HipHop的编写,完成了PHP到C++的转换,这为他们节省了大量的内存和CPU开销。然而你不需要从第一天就着手做这个事情,在完全重写一门语言之前你需要做的是聚焦产品的特性。

针对工作选用正确的工具,并且接受这个选择所带来的开销

如果你需要使用Python,并选择了它进行开发,但是必须要认识到这个选择是有开销的:通常是部署、监视、运营等方面。如果选择了一个面向服务的体系结构(SOA),你必须自己动手建立大部分所需的后端,这需要大把的时间。通过LAMP你可以省下许多开销,但是一旦你真的选择了LAMP堆栈,类似服务的配置以及监视将是随之要面对的问题。随着你对这个服务了解的加深,你必定会自费力气做重复的工作。

正确的公司文化

建立一个可以促进生产的内部环境,并根据需求不断的进行完善。在进行正确的编码和做出正确的产品之前,你首先需要定义正确的公司文化;没有一个正确的文化,公司将不会得到发展。

七、 Instagram

利用现有的云基础设施

不要去做重复的事情,你可以使用可靠并且得到证实的技术。Instagram在Amazon的EC2云计算基础设施上运行了100多个Ubuntu 11.04实例,他们同样还使用了Amazon ELB,其中包括3个NGINX实例以及自动的故障恢复(撰稿日期)。图片被储存在Amazon S3上,他们还使用了Amazon CloudFront作为他们的CDN,这么做可以有助于世界各地的图片加载时间。

异步的任务队列

当一个用户决定将Instagram上的图片分享到Twitter或者Facebook时,或者当他们需要给发布的图片发送一个实时的通告,他们把任务推送给开源的Gearman任务管理框架。使用异步队列意味着当“重载”在后台进行时,媒体上传可以快速完成。大约有200个工作者(Python编写)忙于任务队列的处理,处理服务中自己分割的份额。

推送通知

他们使用一个开源Apple Push Notification Service(APNS)提供者pyapns(基于Twisted),每天稳定的为Instagram解决10亿推送消息的任务。

实时的系统级监控

对于拥有100多个EC2实例的Instagram来说,对系统进行实时的全方位监控无疑是重中之重。他们使用Munin进行系统级监视,这个监视工具在系统任何操作超过正常范围时都会发出警报。他们开发了Munin的定制插件,基于Python-Munin之上,监视非系统级事件。他们使用Pingdom进行服务的外部监视,并且使用PagerDuty处理通知和事件。而Python的错误报告,他们使用Sentry,一个开源的Djngo应用。在任何给定的时间,他们可以实时的开始指令并得知系统中正在发生的错误。

选择性使用NoSQL技术(比如Redis)

Redis驱动了大部分的操作,活动、会话系统以及其它相关系统。Redis所有的数据都需要写入内存,所以他们在EC2上为Redis运行了几个Quadruple Extra-Large Memory实例,并且不定期给任何给定系统做跨Redis的分片。

原文链接: Scalability lessons from Google, YouTube, Twitter, Amazon, eBay, Facebook and Instagram  (编译/仲浩 审校/王旭东)

“  第五届中国云计算大会 ”将于2013年6月5-7日在北京国家会议中心隆重举行。猛击报名!

相关活动已经火热启动:

2013中国云计算大调查,每周大奖等你拿! “

Innovation Cloud 2013云创新产品与应用项目征集,欢迎研发者、团队和创业企业参加!

阿里将推无线领域重磅计划 阿里百川无线开放大会揭晓 提升网站转化率的四步优化方案 开发者应该了解的API技术清单! 【讲师】腾讯刘永峰:Docker时代,公有云面临的挑战和机遇 移动开发工具服务商Mob推出免费短信验证码SDK 遇见他们,MDCC 2014移动开发者大会嘉宾揭秘 揭秘全球最小无线耳机背后的技术 《最终幻想》之父访谈:我为何转战F2P游戏开发 寓教于乐 11款最适合教儿童编程的学习工具 苹果iPhone6获工信部许可 本月17日在内地发售 使用Redis之前5个必须了解的事情 妆媒体微信公众号背后的酸甜苦辣 TIOBE 2014年10月编程语言排行榜:Dart首次进入前20 Instagram工程师教你如何改善App的性能 利用Neo4j对电影评论进行深度学习情感分析 【简讯】SQLite 3.8.7来了 性能提升超50% 浏览器重定向性能分析经验谈 豆瓣工程副总裁段念:看板方法核心瞄准流程中的“流动性” 【图文实录】CTO俱乐部公开课:探讨如何成为技术团队管理者 资深产品交付咨询顾问何勉谈看板:“以价值拉动”解决敏捷困扰 开源HTML5游戏引擎Frozen背后的技术 MDCC 2014精彩日程、演讲嘉宾、参展开发团队全揭秘(图) Hi,约吗?2014华为开发者联盟沙龙(上海站)火热报名中! 找虐新方向!TinyScreen显示屏打造最小游戏机 精彩继续 MDCC2014首次推出技术训练营 复制器官哪家强?3D生物打印找PrintAlive 电信开放平台应用内计费SDK 助力App小额快捷支付 专心做设计!开源跨平台应用开发框架Appverse Mobile 无线盛宴尽在阿里百川开放大会 医学界的Instagram:加拿大重症监护医生开发照片分享应用 2014中国移动开发者大调查第二批获奖名单揭晓 有办法保证我的asp程序只能在一台指定的服务器上运行吗? 怎样将该段VB的代码传为C#(有关调用winAPI)? 关于Remoting的配置问题,高手帮忙! 关于安装系统的问题? 各位见笑了,对office不熟,在powerpoint里更改了母版并保存过了以后,怎么再改为不用母版? 高分讨教:如何控制用户的行为 高难度问题!!!~~~~~ 打开首页时,弹出另一窗口! 请问这个问题该怎么处理!十万火急!谢谢! 急:一个.Net 写DLL及调DLL的问题,请大家帮忙!(在线等候......可以再加分msn:w.hua@ynmail.com,qq:25857100) 救命啊 查找某个目录下是否有某个文件 邮箱命名的问题??? 怎样在一个窗口控件中显示两条自由报表的记录? 紧急求助USB带宽 请问哪里能下到《inside the c++ object model》英文版啊,谢谢 新手提问,大侠莫抛弃我,谢谢,请往里看。 求教:我想拦截CreateProcess()的调用,并取出参数是否可行???? 这是什么病毒 如何指定发送端口 如何设置treeview的scrollbar? 请问各位,谁写过一个程序的整个文档,小弟很急,想参考一下。不知是否可以。谢谢了! 打算过年后跳槽,大家帮帮忙看看我这水平能拿多少?来者有分 天灾 +人祸100分求救 各位再请看看: ccur(922337203685477.30)=922337203685477.25 ??? 用JAVA做APPLET程序的朋友请进!!! 如何使应用程序(基于对话框)在状态栏里不可见 急,求救!在线等!请帮忙,谢谢 SQL Server 的客户端问题? 在线等; 好好的程序不能运行了 ,提示:不能创建宏 怎样打开一个数据库在单文档的视中显示数据??(我没有没结过的贴) 调用外部程序的问题 偶去吃饭了!大家去吗?我请客好了:) 大家能不能介绍一下四川的迈普 VB6到VB.NET升级问题?有的FORM可以升级,有的不行,错误如下:(急!!!搞定立即散分!在线等!) 男人的花样,女人的年华(淡月儿) 如何在VB中正确将调用的Excel进程关闭? 请问 void UpdateDialogControls()函数怎么用……(******) 求教:我想拦截CreateProcess()的调用,并取出参数是否可行???? 我想请问一下sql的认证问题 触发器:For ,Instead OF 和After有什么区别?? slq7.0是不是不支持Instead OF 和After 远程访问方案征求!!! 为什么在我的XP的文件夹里面有Thumbs.db???? 不难的问题,请帮忙!! 如何改变ASP.NET Web应用程序生成的项目的位置?? 如何在JBuilder7中连接远程MS SQL2k数据库? 为什么在x-win32的窗口中,不能使用KDevelop,创建QT工程?? 数据源的连接问题?急!急!急!急!急!急!急!急!在线等待! paradox7表有没有最大记录数或最大容量?! 请问safety-critical systems是什么系统? 英语盲填The old man gets into mike's car,and they___off. the boy is (my brother) 对括号里的提问是什么? 晓凯的英文名怎么写或者是英文谐音也行 jump into the same car 翻译成汉语 句式转换:1、I like my classroom (because it is big and clean).(对括号提问)2、Most students do homework every day .(改一般疑问句)___ most students ____ ____ every day?3、After lunch ,I’ll go to sleep.(改否定句 中译英两个句子,注意时态Ⅲ急!1.如果你不想和我在一起,你就收拾东西走人.(pack up)2.战争时期,我受了很多苦.我用日记记下自己的经历,以便老了以后能够记住.(suffer;set down) 翻译句子bill hit his car into a wall last night I'd like to buy a big and modern house.________,I hope it's a quite neighborhood.A.After all B.Above all C.As a result D.At the moment就这个题,我说是选B,但是英语老师就是说选D,我也看见网上有这个题,就是选B,我去,这个 两个句子中译英1.和你交谈的目的是为了提高英语2.迟到的理由是起床晚了 It's __ that they will go there with me because they all like the place.A.necessaryB.certainC.impossibleD.wrong i would like to buy a big and modern house._____,i hope it is in a quiet neighborhood.after allabove allas a resultat that moment 中译英两个句子今天,我们将伴着春天的气息,敞开心扉.今天,我们将乘着青春的臂膀,放飞梦想.麻烦将这两句话准确翻译成英文, We like to live in tall buildings because we can be close to our fridens.Our new house is__(close)tWe like to live in tall buildings because we can be closeOur new house is__(close)to my school.1、第二句以适当形式填空2、为什么第一句 I like the room,______it is not big or bright.A.because B.so C.but 寒假打算回徐州学雅思课程,哪家好.我在南京上学,寒假回徐州打算学雅思课程,哪家机构有合适的课程? Who will go there and when they will go there ___not known.用is 还是 are 填 HE like art because it is fun.划线是because it is fun (对划线部分提问) my brother's name is (John) 针对括号部分提问? our love in the house什么意思? 我的理想是老师,写一篇《我的理想》,600字的,今天9要 英语定语从句The boy with whom John sopke is my brother.句中的whom为什么不可改为who 不是说who也可以用作宾语吗? 还是说这里应该用宾格,而我把宾语和宾格弄混了? Why does the third man get out of the waiting room的中文是什么? A man was travelling abroad in a small red car.One day he left thecar and went shopping.When he came back,its roof was badly damaged.Some boys told him that an elephant had damaged it.The man did not believe them,but they took him to a circus which w 约翰是我哥哥的名字 john is the ---- --- my brother 下面是一首歌的歌词,你能找出描写天气的单词吗?Oh,the weather is hot.And the sky is clear.It's a beautiful spot.This time of year.Oh,the weather is hot and the sky is clear.Oh,I'm never going to leave this place again.Oh,the clouds A man was traveling abroad in a small red car.One day he left the car and went shopping.When he c请问谁能帮我翻译一下呢?感激不尽! My brother is the boy with b____ e______. 用所给单词的适当形式填空 I__(see)the man __(go)out of the room and __(get)on a bus yesterday. The man started his car and drive away quickly.He was in a hurry. Could I take a few minutes of your time,doctor?帮忙翻译帮忙翻译一下,谢谢 They often go there with their books.(对划线部分提问)划线部分:their 【辨音】there they here where划线是ere,they的划线是ey 选择 today is __ teachers' day and __teachers in our school are all happyA.the,the B./,/ C.the,/ D./,the They are (burning rubbish there)( )中为划线部位划线部分提问 we have got [ ] juice [ ] our picnic .many\for enough\for much\away Japanese for kinds .Chinese is fun .our would in English .french for todayhhhhhhhh翻译 阅读判断对错:John doesn't like his house because it is very small and he hasn't hisown room.He is very happy to live in his uncle's home for the summer holiday.His uncle is very friendly to him.He lets John to stay up at night and John ca We have so many things for our picnic 什么意思 1.Peter出去一个小时了 (3句:过去时,系表结构现在完成时,句型)2.Lucy和John结婚5年了 (3句:同上)3.我去过上海3次了 (1句)4.他每天花两个小时写作业 (1句)5.学好一门外语不容易 (1句)6.许多国家讲 I went to see____ film named the Trojan War with my friends yesterday.I went to see__A__ film named the Trojan War with my friends yesterday.A.)a B.)an C.)the D.)/ ___A__ are you allowed to play on the computer in a week?A.)How long B.)How soon C.)Ho The house is worth--- because it dosen't cost much.A.being bought B.buying 为啥选B? 爸爸……英语怎样写 划分英语成分句子 yesterday my good friends and my family went to have picnic outside in the forest 英语一个根据首字母天单词PLEASE TAKE CARE OF EVERYTHING HERE,AND DON'T D( ) ANYTHING weather可以组成哪几个单词是 w e a t h e r 7个字母都要用啊 最少14个 写够14个 给高分啊7个字母都要用啊 Because of his careless,Jack hit his car into a big tree by the roadside的意思? Loook at the house ____ the tree .It is made ____ wood.The sound____ drill is so noisy.介词 They are long.They are smooth.Then have no tails.What are they?不是翻译。问题就是They are long.They are smooth.They have no tails.What are they? The car knocked into the post because of the driver's __.(care) there are always a lot of s___ in the shopping mall on the weekend When we stopped at the picnic place,we found some wood and ___to cook some food.A lighted the fireB lit a fire,选哪个,为什么,lighted也是过去式, Nobody noticed the thief slip into the house because the light happened to ---. 【The tall boy in the room】 is my brother 对话括号地方提问 There are tow parks in the citys.Children can visit them.改为定语从句的复合句 字母组词 urlnfodwe 关于天气的词 (The tallest boy) is my brother.对括号内部分提问.— — is_brother? When I was walking past the office,I heard some students____about the weekend picnic.A.talk B.talking C.talked D.to talk 求答案 求解析 He got into his car and drove down the road.翻译下 the boy is (tall)对括号中的单词发问并解答 my football socks are ___ out.how long have you __ them A worn,bought B wearing,had c Wearing bought D worn had
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘