`
rijin
  • 浏览: 139480 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅谈互联网产品的技术架构:(一)概述

 
阅读更多

突然想起要写这个系列文章的起因是前阵子我内推了一大学同学,他面试完之后面试官对他扎实的基础、严谨的思维等优点非常满意,唯一可惜的是他之前没有过任何互联网行业的开发经验,最终难以达到该职位的要求。

我内推这位同学时对他是心里有数的,他在学校期间就很优秀,理论扎实动手能力也强,如果单论编程、算法、SQL、工具的使用等技能他是可以通过面试的。不过他毕业后一直做的是ERP系统开发,确实与互联网开发有出入。

我向他反馈完面试结果之后自己也在想:他所欠缺的互联网开发经验,是指哪些内容呢?我跟他其实正好相反,我毕业后一直就是在互联网公司做后台开发,反而是没有什么传统软件行业的工作经验(虽然大学里也选修过相关课程,如ERP系统导论、信息系统开发等,但高校的课程难免是纸上谈兵,可忽略)。

在跟他私下讨论了解了一番之后,大概心里有了个谱,结合自己毕业后的工作积累,就有了写些文章来整理、总结这些经验的想法——否则总感觉太过于零散,说起什么都知道一些,但很难系统的去认识,自身提升的也慢。不过毕竟自己也尚是稚嫩,所以论起技术架构这么大而高深的话题,也难免会力不从心,所以只能是“浅”谈,内容定位是在入门到进阶的级别——当然,欢迎也希望大家留言讨论,共同进步。

———————————–我是分割线———————————————

在我的认知里,或者说是在我的工作经验中,一个互联网产品(服务),其技术架构是怎么样的呢?

要了解这个,首先我们要知道一个互联网产品在技术人员眼中常具备的几个特点:一、用户量大。互联网产品面向的是所有网民,产品的PD、运营人员也会通过各种办法去推广产品,相比起如ERP、OA等一些传统软件系统,互联网系统的用户群体是庞大的。

二、数据量大。用户量大所带来的数据量自然也大,现在的网站也不再是只做后台内容编辑、向用户展示的单向行为,用户的互动、贡献等动作都会带来数据量。这些庞大数据的存储、加工处理等方式自然也需要有所区分。

三、访问并发量大。同样是由用户量大所带来的直接后果。

四、多数情况下可靠性要求不苛刻(可以接受有损服务)。如果换做是金融系统、银行系统,这点简直是不敢想象的。但大部分的互联网系统里是可以接受的,尤其是大多数情况下涉及到性能问题时。但在这点上要具体问题具体分析,切不可滥用。

有了这些认识,我们看下下面的架构图:



 

LB:Load Balance。负载均衡,该集群一般是互联网系统的最前端,其主要功能是分发用户的请求,使其可以较为平均的落到前端服务器集群的每台机器上。并且能对前端服务器进行一定的保护,避免了前端服务器直接接入公网。目前而言,从LB的层次划分主要是考虑四层LB和七层LB。

前端web服务器:LB分发后的请求会落到前端服务器集群上。这层内容是用户所能看到的内容。一般来说包括页面的展示、业务逻辑的控制,有时会有较轻量级的本地缓存。当然,页面的展示可以是多平台的,如web、wap甚至是嵌入到移动终端。

后台server:一般来说,一个互联网系统较重的操作行为,会与前端服务器集群分开部署,然后通过其提供的接口来远程调用。当系统规模的规模越大、承载的功能越多时,的这样做的好处就越明显:降低系统耦合度、提升系统的可扩展性和维护性(这点对于互联网系统来说很重要)、架构划分清晰、保持每个server的功能单一、对外开放接口便捷(通用性好)、提升了整个系统的可靠性(在可以接受前面提到的有损服务时更为明显)、在安全性上也更有保障……当然,有利就会有弊,相比起集中部署而言,这样做会使得整个系统的部署更复杂,前端和后台、后台和后台之间调用、交互时,数据传输存在了对网络的依赖且对带宽要求更高,降低了同等条件下的吞吐量。

分布式缓存:由于互联网系统数据量和访问量较大,为提升系统性能,避免磁盘I/O的读写成为瓶颈,同时也是出于对DB或者文件存储系统等数据持久化载体的保护,一般都会在server和数据持久化层之间加上一层缓存。考虑到数据量大单机Cache难以承受,一般会用到分布式缓存。在专门的分布式缓存集群中,会缓存有大量的数据,尽可能的做到全缓存,或者根据业务特点采用适当的淘汰机制,以提升命中率。

持久层:数据持久化的地方。一般是DB或者各种文件存储系统。这里主要考虑到主备机制、读写分离机制等,以及数据量过大时的分表分库等。

其它:一个互联网系统往往还会包含有一些对应的CMS、内部平台。主要是实现诸如字典数据、审核工作、数据分析等功能。如果有合作方的可能还会有对外开放平台(这个开放平台与近来较火的开放平台不一样,是指开放给第三方合作方来使用,共同维护系统数据的平台),这时要充分考虑好安全性和权限控制等问题。

上面的内容都写得较为粗糙,只能算是简单提及。后续文章里会对每层展开,并且给出目前较为普遍的实现方案。

本文同时发表在本人博客:http://www.newhottopic.com

  • 大小: 201.5 KB
3
11
分享到:
评论
4 楼 xtel 2013-05-15  
楼主写的很好,支持一下,继续写下去
3 楼 rijin 2013-04-19  
yangfuchao418 写道
楼主不用费劲写了,直接给你个链接http://dragonsoar.iteye.com/blog/1764713

哇,感谢,好东西啊,学习了。这次写的主要是记录我自己平时工作中接触到的内容,想积累提升下
2 楼 yangfuchao418 2013-04-19  
楼主不用费劲写了,直接给你个链接http://dragonsoar.iteye.com/blog/1764713
1 楼 guiqian725 2013-04-19  
不错,我是做移动终端的,想了解一下服务器端!希望能继续写!

相关推荐

Global site tag (gtag.js) - Google Analytics