很多初创的小团队并没有架构师,而且就算有,人家讲话的时候你一脸懵逼也不合适啊。
web前端
运行环境:
其实就是提供程序运行环境的Web服务器,可以向浏览器等Web客户端提供文档文件让全世界浏览和下载。使用最多的web服务器软件有两个:微软的信息服务器(iis),和Apache。
Facebook采用的技术架构LAMP(Linux、Apache、MySQL、PHP),其中就有Apache。Apache是目前世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上。
编码开发:
这个很容易引起“哪种编程语言是最好的?”世界之争。。。
值得一提的是,Facebook作为开源第一大厂,自家开发并且开源了HipHopforPHP,(yoyoyo很嘻哈么)这是一个PHP到C++的转换程序,目的是旨在加速和优化PHP,HipHopforPHP比纯PHP有高一倍的效能,从而大大减少了服务器的需求,流弊啊。。。
类库框架:
类库解决代码或者是模块级别的复用或者对复杂度的封装问题。框架则是对模式级别的复用和对程序组织的规范。常用的框架有,SpringFramework(Java开源J2EE框架)Struts(Java开源Web框架)Hibernate(Java开源持久层框架)。
而facebook使用的是Thrift框架,对了,也是他们自己开发的。。。thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。如C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,andOCaml可以在这些编程语言间无缝结合、高效的服务。
数据库和缓存
数据库方案:
选择数据库需要考虑数据的量级、计算场景和处理数据的频次来选择。
facebook使用MySQL、Memcached、Hadoop’sHBase实现持久化。memcached是一套分布式的快取系统通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
分布式存储服务器
分布式存储系统,是将数据分散存储在多台独立的设备上。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
Facebook用户所发布的照片数以亿计,其存储由Haystack这个ad-hoc存储解决方案(由Facebook开发)来处理——包括对其进行低级别优化与只扩展写入方式。
TAO是Facebook一种用来处理社交图形信息的分布式数据库。针对读取进行优化的数据存储机制,并以单一地理分布实例的方式部署在Facebook当中。Tao系统的设计初衷在于为“数PB级别”的庞大数据集提供每秒超过十亿次读取操作。
Facebook拥有超过6万台服务器。最近发布的数据中心位于俄勒冈州普赖恩维尔市,硬件完全自行设计,并被归为OpenComputeProject。
源代码管理和版本控制
源码管理工具是一种记录代码更改历史,可以无限回溯,用于代码管理,多个程序员开发协作的工具。几种常用的有:svn、cvs、hg、git、vss。
作为工程师的天堂(产品经理的火葬场),facebook是这样做的
有非常牢靠的安全体系,以免有人不小心/故意做了些不好的事。
每个工程师可以修改facebook的任何代码,随时可以迁入。
所有的代码修改都要进行审核(通过一个或多个工程师),但NewsFeed是个例外,因为太重要了,Zuckerberg会亲自review。
所有的修改至少要被一个人审核,而且这个系统可以让任何人很方便地审核其他人的代码,即使你没有邀请他。
工程师负责测试,代码修复,和维护自己的项目。
运维组是受过严格训练,倍受尊敬,而且有商业意识的。他们的工作包括分析错误日志,负载和内存状态等等。还包括用户行为。
白癜风治疗哪家最好皮肤病医院