突然想起要写这个系列文章的起因是前阵子我内推了一大学同学,他面试完之后面试官对他扎实的基础、严谨的思维等优点非常满意,唯一可惜的是他之前没有过任何互联网行业的开发经验,最终难以达到该职位的要求。
我内推这位同学时对他是心里有数的,他在学校期间就很优秀,理论扎实动手能力也强,如果单论编程、算法、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
相关推荐
互联网金融是近年来发展迅猛的新兴金融形态,它借助于互联网技术,如支付、云计算、社交网络和搜索引擎等,实现了金融业务的创新和拓展。互联网金融不仅仅是传统金融与互联网的简单叠加,而是在确保安全性、移动性和...
一、互联网金融与财富管理的理论概述 互联网金融是利用大数据、云计算等现代信息技术,将互联网平台与传统金融服务结合,形成了全新的金融业态。它以技术手段弥补传统金融服务的不足,具有高效率、低成本、广覆盖、...
随着互联网技术的不断发展,酒店行业也在积极探索如何利用这些新技术来改进自身的管理和运营模式。互联网技术的应用不仅提升了酒店管理的效率,还为客户提供了更加便捷和个性化的服务。本文旨在探讨互联网环境下酒店...
### Mesh网络技术浅谈 #### 一、Mesh网络概述 Mesh网络作为一种新兴的网络技术,在近年来得到了迅速的发展和广泛的应用。Mesh网络的核心理念在于构建一个由多个节点组成的自组织网络,其中每个节点不仅可以作为...
信息技术的飞速发展,尤其是互联网技术的广泛应用,为教育提供了新的平台和工具。互联网打破了时间和空间的限制,使教师和家长能够更加便捷地进行沟通和协作。 互联网时代家校共育的对策中,首先提出了建立QQ群和...
随着互联网技术的不断发展,IPTV作为一种新兴的电视服务模式,正在逐步改变人们的观看习惯。其核心优势在于能够提供个性化的内容和服务,以及更高的交互性。然而,为了确保IPTV行业的健康发展,还需要不断加强版权...
物联网的技术架构通常分为三层: 1. 感知层:这是物联网的基础,由各种传感器(如温度、湿度、二氧化碳浓度传感器)和读写器等设备组成,它们如同人体的感官,采集环境或物体的数据。 2. 网络层:由通信网络(包括...
《浅谈电子信息技术在人工智能中的应用》 随着科技的飞速进步,电子信息技术已经渗透到我们生活的方方面面,尤其是在人工智能领域的应用,更是展示了其强大的潜力和影响力。本文将深入探讨电子信息技术的基本概念,...
### 如何决定自己的未来:浅谈程序猿的职业规划 #### 引言 本文旨在探讨程序猿(即程序员)的职业规划,帮助他们更好地规划自己的职业道路。文章从职业规划的重要性和基本概念入手,深入分析了几种典型的职业发展...
【4G通信技术概述】 4G通信技术,全称为第四代移动通信技术,是在3G技术基础上发展起来的,旨在提供更高的数据传输速率和更强的通信能力。4G技术不仅提升了无线通信的性能,还增强了局域网的可靠性,为用户提供更加...
### 大数据处理技术架构的演进 #### 引言 随着互联网的飞速发展,尤其是Web2.0时代的到来,大数据技术面临着前所未有的挑战。本文聚焦于大数据处理技术架构的发展,特别是针对实时性需求的变化。传统的离线处理...
在物联网的概述中,它被认为是信息技术发展的重要产物,基于互联网,扩展了物品与物品之间的信息交流和互动。物联网技术与人工智能的融合,使得物联网可以智能地处理互联网相关技术,并有效应用于信息整合。提高用户...
互联网电子证据公证法律问题是指在互联网环境下,以电子方式储存和传输的数据信息作为证据时,在公证环节出现的法律适用和程序操作上的问题。这通常涉及电子证据的搜集、确认、保全以及公证过程中的规范性问题。...
Oracle数据库作为一款广泛应用于管理信息系统、企业数据处理、互联网和电子商务领域的关系型数据库管理系统,其性能优化对于确保系统的稳定性和高效运行至关重要。随着数据量的快速增长,数据库性能优化成为数据库...
云计算是21世纪信息技术领域的重要发展,它是一种基于互联网的计算方式,将大量分布式计算资源统一管理和调度,以提供灵活、便捷的服务。云计算的核心思想是将计算任务分散到众多网络连接的设备上,而不是依赖单一的...
【云存储概述】 云存储是近年来随着云计算技术的兴起而发展起来的一种新型数据存储方式。它将数据存储在互联网上,通过集群应用、网格技术或分布式文件系统等手段,将多台存储设备协同工作,为用户提供高效、便捷的...
一、通信技术概述 通信技术是连接人与人、设备与设备之间的桥梁,其核心目标是高效、稳定地传输数据、语音和图像等信息。随着科技的进步,长距离通信已从最初的无线电报发展到现在的卫星通信、光纤通信和微波通信等...