“互联网”是个被媒体说烂的词。在大量吹比、鸡汤的浸泡下,就连很多软件从业人员也搞不清这张网,到底是个什么“网”。

我这里不想纠结于互联网的定义,我姑且将题中的互联网等同于“用户多,访问频繁”的网站来聊聊吧。而且我只说Java的,别的不懂。

网站要给人看,所以首先要有一个好用的前端框架。比如市面上很常见的模版引擎( freemarker )+html(5)+jquery-xxx组合。

UI后头需要业务支撑。这里我可以很负责任地说:很多由Java编写的互联网项目,绝大部分也还是(SrpingMVC | Struts2)+(Hibernate | Mybatis)+Spring这个套路。

一般的项目,数据库该用什么用什么(其实还是Mysql居多,穷逼么)。 但是业务上来之后,可能关系型的这种方案会成为瓶颈,所以现在基于k-v的DB产品也是遍地开花,诸如MongoDB等。另外还需要针对一些关键点架设缓存、监控等。具体产品不表。

由于单台应用服务器的处理能力有限,需要做服务拆分。另外就算服务拆分了,单台服务器的负载也不足以支撑系统中某些核心服务的稳定运行。这时候又轮到集群出场了。机器和人一样,多了就不好管。各种各样的服务需要调度,协议一致,版本一致。。。。这其中又涉及到很多技术和协议,鄙人了解不深,不想只贴个名词装逼。

有过互联网经验的都知道,用户的一个信息都是宝贵的,浏览记录、购买记录。。。这些记录看似渺小,但是一旦有了用户量以及时间的支撑,便会成为一个庞然大物(tb级,甚至是pb级)。单台服务器不足以计算(主要是计算、分析)、存储这些东西,这有需要一个分布式生态。对的,生态:分布式文件存储、计算等。

上面说的这些,可能不会全部出现在一个项目中,但是万变不离其宗。我是按照应用的各个技术层次谈的,不是具体产品。

诸如淘宝网的网站架构是什么?这种蠢问题实在是让人无语。能答的不屑答,不能答的还拼命问,呵呵。

------------------------------------