词条信息

admin
admin
超级管理员
词条创建者 发短消息   

相关词条

热门词条

更多>>
什么是端口?到底是做什么的呢?
端口一般指两种,一种是硬件比如路由器或者交换机的插网线的端口,一种是软件的逻辑的概念,比如http的80端口!...
7种进阶方法让你快速测试端口连通性
Ping是Windows、Linux和Unix系统下的一个检查网络连通性的命令工具,对于大部分互联网用户来说很...
电脑开机,总需要按F1,是什么原因造成的?
一.主板掉电这个说法是行业内的叫法了,一般是主板的CMOS电池没电了导致的。也是最常见的一种提示你按F1的提示...
社保降费对个人有什么影响?
下调城镇职工基本养老保险单位缴费比例是政府给企业发的一个大红包,特别是对于企业来说是一个利好,但是对个人来说有...
车辆“出险”对下年保费的影响,到底有多大?
【出险对交强险的影响】【出险对商业险的影响】车辆“出险”对下年保费的影响,到底有多大?这里有必要先提下车险第三...

精选图集

更多>>
简易百科旧版 >>所属分类 >> 电脑知识    程序开发   

快速了解Web架构知识

标签: 程序开发 web架构

顶[0] 发表评论(0) 编辑词条

一开始你只是参与一个小项目,架构好像对你来说并不是什么重要的事,大家讨论下就马上开发,一台服务器轻松搞定操作系统+开发语言+应用程序+数据库。可是,突然有一天你的项目突然由于什么不可知的原因你的项目收到广泛专注!!!使用人数激增!!!

于是就很容易涌现各种性能问题、负载问题,如果处理不当也许就错失风投良机了。。。(就快要成为下一个facebook了!)

所以,你说架构重不重要!

但是你也许会说,我只是一只产品狗子,做架构有架构师啊~~但是,我要说的是,很多初创的小团队并没有架构师,而且就算有,人家讲话的时候你一脸懵逼也不合适啊。。。

既然这样,快点来看看架构的小知识!!!

(这里讲的架构并非传统产品经理喜欢研究的那种信息架构或者业务架构)

web前端

运行环境:

其实就是提供程序运行环境的Web服务器,可以向浏览器等Web客户端提供文档文件让全世界浏览和下载。使用最多的 web服务器软件有两个:微软的信息服务器(iis),和Apache。

Facebook采用的技术架构LAMP(Linux、Apache、MySQL、PHP),其中就有Apache。Apache是目前世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上。

1040370

编码开发:

这个很容易引起 “哪种编程语言是最好的?”世界之争。。。大家可以直接看2016编程语言排行榜,但并不代表本主编立场。

QQ截图20160721195745

值得一提的是,Facebook作为开源第一大厂,自家开发并且开源了HipHop for PHP,(yoyoyo很嘻哈么)这是一个PHP到C++的转换程序,目的是旨在加速和优化PHP,HipHop for PHP 比纯PHP有高一倍的效能,从而大大减少了服务器的需求,流弊啊。。。

类库框架:

类库解决代码或者是模块级别的复用或者对复杂度的封装问题。框架则是对模式级别的复用和对程序组织的规范。常用的框架有,Spring Framework (Java开源 J2EE框架)Struts (Java开源 Web框架)Hibernate (Java开源 持久层框架)。

QQ截图20160722112747

而facebook使用的是Thrift框架,对了,也是他们自己开发的。。。thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。 如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 可以在这些编程语言间无缝结合、高效的服务。

负载均衡

硬件负载均衡:

是一种把网络请求分散到一个服务器集群中的可用服务器上去,通过管理进入的Web数据流量和增加有效的网络带宽的硬件设备。能够直接通过智能交换机实现,处理能力更强,但问题就是:贵!如图传说中的f5

QQ截图20160714200901

软件负载均衡:

价格低,甚至有免费开源的负载均衡策略,但效果肯定不如硬件,但一般中型网站够用。目前使用最为广泛的负载均衡软件是Nginx、LVS、HAProxy。

数据库和缓存

数据库方案:

选择数据库需要考虑数据的量级、计算场景和处理数据的频次来选择。

facebook使用MySQL、Memcached、Hadoop’s HBase实现持久化。memcached是一套分布式的快取系统通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

分布式存储服务器:

分布式存储系统,是将数据分散存储在多台独立的设备上。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

Facebook用户所发布的照片数以亿计,其存储由Haystack这个ad-hoc存储解决方案(由Facebook开发)来处理——包括对其进行低级别优化与只扩展写入方式。

QQ截图20160722113204


TAO是Facebook一种用来处理社交图形信息的分布式数据库。针对读取进行优化的数据存储机制,并以单一地理分布实例的方式部署在Facebook当中。 Tao系统的设计初衷在于为“数PB级别”的庞大数据集提供每秒超过十亿次读取操作。

Facebook拥有超过6万台服务器。最近发布的数据中心位于俄勒冈州普赖恩维尔市,硬件完全自行设计,并被归为Open Compute Project。

源代码管理和版本控制

源码管理工具是一种记录代码更改历史,可以无限回溯,用于代码管理,多个程序员开发协作的工具。几种常用的有:svn、cvs、hg、git、vss。

1454292321-0

作为工程师的天堂(产品经理的火葬场),facebook是这样做的:

  • 有非常牢靠的安全体系,以免有人不小心/故意做了些不好的事。

  • 每个工程师可以修改facebook的任何代码,随时可以迁入。

  • 所有的代码修改都要进行审核(通过一个或多个工程师),但News Feed是个例外,因为太重要了,Zuckerberg会亲自review。

  • 所有的修改至少要被一个人审核,而且这个系统可以让任何人很方便地审核其他人的代码,即使你没有邀请他。

  • 工程师负责测试,代码修复,和维护自己的项目。

  • 运维组是受过严格训练,倍受尊敬,而且有商业意识的。他们的工作包括分析错误日志,负载和内存状态等等。还包括用户行为。

另外:

  • 产品经理与工程师的比例大约为1-7到1-10。

  • 浓厚的工程师驱动文化。"产品经理基本可以被忽略",这是facebook一名员工的话。工程师可以修改流程的细节,重新安排工作任务,随时植入自己的想法。

  • 对于某个特性是否值得开发的争论,通常是这么解决的:花一个星期的时间完成他,并在小部分人群中(如1%)进行测试。


 

 

附件列表


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇如何让你的文章上“朋友圈热文”?
下一篇搭建一个完整的移动直播系统

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的百科词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>