几年来中国网民数量激增,已达到3亿多,热门网站在线人数也飙升,百度和腾讯仅凭借内地市场就挤进了Alex排行榜前十名,腾讯更是创下了同时一亿人在线的记录,没办法中国人多啊,但是一想到中国互联网公司由于文化和政策的原因不能在全球大放异彩也有点儿遗憾。这么多的在线请求,网站的压力可想而知了,不仅如此,公司还要保存大量的数据(这年头数据就是信息,信息就是财富)。这就要求网站能提供可靠的高并发访问、支持海量数据存储,同时互联网公司要么很早死翘翘要么大火,所以公司的架构要适应公司的发展,也就是具有很强的伸缩性。互联网公司的架构特点总结如下:
1、支持高并发访问
2、支持海量存储
3、高可靠性
4、可伸缩性
注意这几个特点不是独立的,而是会相互影响。
怎样才能达到以上要求呢?当然升级硬件可以解决一部分问题,但是更好的方法是采用良好的分布式架构。google可以说是采用分布式架构的典型了。Google可是相当抠门,连像样的服务器都舍不得买,用的是烂PC,但是人家有技术啊,人家就是有能耐用烂PC做超级计算机。当然国内的大型互联网公司肯定也采用了分布式架构,集群计算等。
什么是分布式系统呢,我的理解很简单,如果多个个体相互协作去解决一个问题,那么他们就组成了分布式系统。系统外部只知道这个系统能解决什么问题,对系内内部的组成和协作方式一无所知。
在上《操作系统》时,我们都被告知计算机系统分为若干层。同样,分布式系统也可以体现在各层,下图是我对单个计算机系统的分层。
这个分层和书上的有点儿不同,因为我更关注互联网行业,所以针对互联网应用提出自己的分层方法。
硬件: 这个就是那一大堆你看得见摸得着的东西咯
操作系统: OS最重要的作用是给上层程序提供运行环境,而不注重文件系统。
字节数据存储: 这个相当于操作系统的文件系统,提供无意义的字节存储
结构化数据存储: 这个相当于数据库了,不过不一定提供SQL查询
应用: 利用下层数据的计算程序
终极解决之道就是在硬件上提供分布式解决方案,不过这几乎不可能,也不值得,否者Berkeley也不必将TCP/IP协议分四层。
利用分布式的操作系统,把传统操作系统的功能分解开来,这个是可行的,如AT&T实验室开发的Plan9操作系统。不过对于整个行业来说不现实,IT业舍得丢弃巨大的Unix/Linux资源吗?就算Plan9一样是Ken Thompson大神设计的也不行啊!
所以还是在操作系统之上采用分布式比较靠谱。在字节存储层已经有很多分布式案例,如google的GFS文件系统,hadoop项目中的HDFS,Kosmix的KFS。这些文件系统起到了这样一个效果,把各个单独的计算机的磁盘统一起来形成一块巨型磁盘,在上面存储毫无意义的字节数据。
我们可以在分布式的字节存储层之上再采用分布式的数据库。也可以只采用分布式的数据库,只不过这样的话在结构化存储层要做更多的事。在结构化存储层分布式就是使用分布式数据库,如google的BigTable,Hadoop项目中分离出来的HyperTable,还有Amazon的Dynamo等
应用层上的分布式最著名的当然就是MapReduce的计算框架了。写到这里,我发现我的思路被Google左右了。
还有一点要注意的是,每个数据存储层之上都可以有个缓存,我们可以在缓存上分布式。比如很多网站采用MySql+memcached,并没有采用分布式的数据库,而是用了个分布式缓存系统,但是我觉得还是在结构化存储曾采用了分布式架构。
不管在哪一层分布式,都有共同的特点,最著名的恐怕就是CAP理论了,就是任何一个分布式系统都不能同时满足consistency、availability、partition tolerance。所以在设计分布式系统时,我们要根据应用需求来做出选择,然后采用一些算法(如广泛使用的一致性哈希算法、CouchDB采用的版本标注方法)来满足这些特性。
其实我知道就算写了这么多,都是虚的,还是对分布式一点儿都不懂。我的目的是总结自己的想法,对分布式开源项目有个总体的把握,这样我起码能知道自己在哪儿,不会云里雾里。
p.s: 几乎所有的分布式存储系统里都会实现一个基于reactor模式的事件驱动机制,Linux上一般采用NonBlocking+IO Multiplexing,所以如果您想看一些开源代码时,应该先熟悉Linux网络编程,看看怎样利用NonBlocking+IO Multiplexing实现一个基于reactor的事件驱动框架。
转载: http://www.cnblogs.com/john-d/archive/2010/04/16/1713744.html
分享到:
相关推荐
大型网站架构是互联网技术领域的一项重要研究课题,它涉及到如何构建一个能够处理高并发访问、高性能、高可用性、可扩展性及安全性的网站系统。大型网站架构的设计目标主要包括高性能、高可用性、伸缩性、扩展性和...
微服务化是IT行业中SOA概念的一种具体实践,特别是在云服务领域,它通过将大型应用拆分为一系列小型、独立的服务,提高了系统的灵活性、可扩展性和可维护性。微服务架构与传统的总线服务架构相比,具有更高的自治性...
这种架构特别适用于大规模的互联网应用,如大型社交网络、电子商务平台、在线游戏等,这些应用往往面临海量数据处理和高并发访问的需求。 然而,分布式数据库架构的实现和管理相对复杂,需要解决数据一致性、节点间...
### 浅谈Soap Web Service架构及其应用 #### 一、背景与发展趋势 随着互联网时代的到来,信息技术的发展使得传统的局域网或单机式信息服务结构已无法满足现代社会的需求。分布式应用技术逐渐成为主流,以适应日益...
文章中提到,软件项目开发离不开数据库,尤其在B/S架构下的Web开发中,数据库的交互操作必不可少。数据库的选择会根据项目的不同需求而有所差异。在众多数据库产品中,Oracle数据库因其稳定性和强大的功能常用于大型...
【微服务架构】微服务架构是一种现代化的软件开发方法,旨在将大型的单体应用分解为一系列小型、独立的服务,每个服务都能自主地运行和管理,以提高开发效率、可扩展性和系统的灵活性。该架构模式由Martin Fowler在...
ThreatSource鸟哥,作为阿里云安全的工程师,结合自己15年安全领域的工作经验,其中7年多的云安全经验,深入浅出地分享了国内外云安全技术与架构的亮点。 首先,鸟哥分享了国外云安全厂商的一些特点,例如AWS的安全...
B/S架构是随着互联网技术的发展,由C/S架构演变而来的。它将客户端的显示功能与应用功能分离,将应用功能模块放置在Web服务器上,仅保留浏览器作为客户端,大大简化了客户端的部署和维护工作。 #### B/S架构的特点 ...
### 浅谈云计算——未来网络趋势技术 #### 引言 随着互联网技术的快速发展,新的概念和技术不断涌现,改变了我们获取、处理和分享信息的方式。其中,“云计算”作为一项前沿技术,正在引领着信息技术的新潮流。它...
首先,互联网金融领域存在技术漏洞,即便如支付宝这样的大型互联网金融平台也难以完全避免技术漏洞带来的安全威胁。其次,监管主体和权责不明确,监管力度不足,缺乏明确的监管标准,导致监管权利缺失和监管空白。...
浅谈机器学习与深度学习的概要及应用 机器学习和深度学习是人工智能的两个重要分支领域。机器学习是指在没有明确的设定情况下,使计算机具有学习能力的研究领域。深度学习是机器学习的一个子类,可以把它看作一种...
再者,互联网企业的兴起,尤其是像美团、淘宝、京东这样的大型互联网企业,对青年人的价值观产生重要影响。这些企业通过其平台的社会责任感和公益活动,如产业扶贫,积极引导青年人形成社会责任感和使命感。互联网...
互联网上的防火墙大约25%被攻破;窃取商业信息的事件平均以每月260%的速度增加;约70%的网络主管报告了因机密信息泄露而受损失。企业的信息化建设对于企业的发展具有重要的战略意义,但信息化也使企业同时承受着巨大...
1. 大型互联网公司:在中国乃至全球范围内具有较大影响力,如腾讯、百度、华为、阿里巴巴、京东、抖音等国内外知名企业。 2. 本土中小型互联网公司:在本土具有较大影响力的区域性互联网公司。按照经营模式可以分为...
依靠大型金融机构融资难度大,而通过民间资本如众筹等方式则会带来较大的资金压力。 4. 投资风险分析:互联网行业的更新换代速度快,企业如果不能及时跟进技术的发展,将面临较大的投资风险。而且,由于行业竞争...
互联网技术的介入,还使得每个环节的数据化记录成为可能,形成了一个大型的数据库。这样,学校、教师和学生可以根据兴趣搜索相关内容,并建立起搜索、体验、互动和创新的模式。例如,对于正统书法的传播,教师可以...
1. 企业背靠互联网巨头公司:许多互联网金融企业背靠如阿里巴巴、京东集团、腾讯等大型互联网公司,具备强大的品牌背书和资源支持。 2. 品牌传播渠道多样化:互联网金融企业采取线上线下相结合的方式,通过多样化...
通过信息化平台,高校可以建设学科资源分享平台,促进多方面协同发展,打造大型校园信息化平台,为高校提供更加完善的教育环境。 在数字化财务管理的发展中,还需要注意到随着互联网的高速发展,电子支付和电子贸易...
因此,无论是大型企业还是小型创业者,都希望在这一新兴领域取得成功。 总的来说,社交电商的兴起和发展是移动互联网技术发展的必然产物。随着5G时代的到来,社交电商还有巨大的发展潜力和空间。对于广大商家和消费...
直接融资是中小企业获得资金的重要途径,但与大型企业相比,其融资体系建设能力明显不足。目前,中小企业对新型融资方式表现出极大兴趣,尤其是互联网众筹和P2P网络借贷。这些新型融资方式已成为中小企业融资的重要...