构建大型网站系统全攻略:从零开始搭建网站教程详解

如何构建大型网站系统

开发者们普遍渴望通过不懈的学习和技能提升,获得更高的报酬,技能提升与高收入虽非易事,却有其规律可循。

一个成熟的大型网站(如淘宝、京东等)的系统架构并非一开始就具备高性能、高可用、安全等特性,而是随着用户量的增长和业务功能的拓展逐步完善,在此过程中,开发模式、技术架构、设计理念也经历了显著变化,技术人员也从少数人扩展至一个部门甚至一条产品线。因此,成熟的系统架构是随着业务拓展而逐步完善的,而非一蹴而就;不同业务特征的系统,各有其侧重点,例如淘宝需解决海量商品信息的搜索、下单、支付,例如腾讯需处理数亿用户的实时消息传输,百度需处理海量搜索请求,它们各有其业务特性,系统架构亦各异。尽管如此,我们仍可从这些不同网站背景中提炼出共用的技术,这些技术和手段可广泛应用于大型网站系统的架构中。以下将通过介绍大型网站系统的演变过程,来了解这些技术和手段。

一、最初的网站架构

起初的架构,应用程序、数据库、文件均部署在同一台服务器上,如图所示:

二、应用、数据、文件分离

随着业务的拓展,一台服务器已无法满足性能需求,因此将应用程序、数据库、文件分别部署在独立的服务器上,并根据服务器用途配置不同的硬件,以实现最佳性能效果。

三、运用缓存优化网站性能

在硬件性能优化的同时,也通过软件进行性能优化。在多数网站系统中,都会利用缓存技术优化系统性能。使用缓存主要源于热点数据的存在,大部分网站访问都遵循二八原则(即80%的访问请求最终落在20%的数据上),因此我们可以对热点数据进行缓存,减少这些数据的访问路径,提升用户体验。

缓存实现常见的方式有本地缓存、分布式缓存。当然,还有CDN、反向代理等,后面再详细介绍。本地缓存,顾名思义,是将数据缓存在应用服务器本地,可以存在于内存中,也可以存在于文件中,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但由于本地空间有限,缓存数据量也有限。分布式缓存的特点是可以缓存海量数据,且扩展性非常强,在门户类网站中常被使用。速度理论上没有本地缓存快,常用的分布式缓存有Memcached、Redis。

四、利用集群优化应用服务器性能

应用服务器作为网站的入口,会承担大量请求。我们通常通过应用服务器集群来分担请求量。应用服务器前部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

常用的负载均衡技术硬件有F5,价格较高;软件有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器;Nginx是七层负载均衡,HAProxy支持四层、七层负载均衡,可以根据报文内容选择内部服务器。因此,LVS分发路径优于Nginx和HAProxy,性能更高;而Nginx和HAProxy则更具配置性,如可用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

五、数据库读写分离和分库分表

随着用户量的增加,数据库成为最大的瓶颈。改善数据库性能的常用手段是进行读写分离以及分库分表。读写分离顾名思义,就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分。水平切分是对一个数据库特大的表进行拆分,例如用户表;垂直切分则是根据业务不同进行切分,如用户业务、商品业务相关的表放在不同的数据库中。

六、使用CDN和反向代理提高网站性能

假设我们的服务器都部署在成都的机房,对于四川的用户来说访问速度较快,而对于北京的用户来说访问速度较慢。这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也是如此,因此数据传输时间较长。对于这种情况,常常使用CDN解决。CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。

而反向代理则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户。如果没有缓存数据,才会继续走应用服务器获取,也减少了获取数据的成本。反向代理有Squid、Nginx。

七、使用分布式文件系统

随着用户量的增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已无法满足需求。需要分布式的文件系统支撑。常用的分布式文件系统有NFS。

八、使用NoSql和搜索引擎

对于海量数据的查询,我们使用NoSql数据库加上搜索引擎可以达到更好的性能。并非所有数据都要放在关系型数据库中。常用的NoSql有MongoDB和Redis,搜索引擎有Lucene。

九、将应用服务器进行业务拆分

随着业务的进一步拓展,应用程序变得非常庞大。这时,我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或共享数据库来实现。

十、搭建分布式服务

这时,我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来,利用分布式服务框架搭建分布式服务。淘宝的Dubbo是一个不错的选择。

这时我们察觉到众多业务应用普遍依赖若干基础业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务构成了支撑各业务应用的基础元素。我们将这些服务提炼出来,借助分部式服务架构构建分布式服务。淘宝的Dubbo便是一个不错的选择。

大型网站的架构是随着业务需求持续优化的,依据不同的业务特性会进行专门的规划和思考,本文仅阐述一个典型大型网站可能会用到的技术和方法。

若您仍有这些疑问,成熟的网站架构师需要掌握哪些核心技能?Java程序员如何实现向互联网架构师的晋升?Java语言在架构构建中扮演何种角色?如何成为年收入几十万的架构师?欢迎来电或到访昌平北大青鸟java培训中心。

网站如何建设

、注册域名

域名可以依据公司名称,也可以依据主营的产品来定。目前优质域名大多已被注册,因此在申请域名时需务实一些,过于理想的域名无需浪费时间寻找,可以选择一些契合公司特色的域名。这一步骤的注意事项是:务必由公司老板或主要责任人亲自操作,前往专业的域名注册网站进行注册,切勿选择不正规的注册公司。此外,不要委托下属员工操作,因为域名是网站的基石,没有域名,所有网站都将如空中楼阁。公司老板亲自操作的好处是,可以记录下用户名、密码和管理地址,即牢牢掌握公司的网络资源。我们在日常工作中,常常发现客户不知如何管理自己的域名,许多情况下都是当初委托朋友或下属员工办理的,如今他人离职,这时作为老板就会感到尴尬。因此,还是由企业负责人亲自注册域名最为妥当。

2、网站程序

对于互联网企业,可以聘请几位专业的建站技术人员进行开发,长期在公司内进行设计和维护网站,当然,大部分企业不会这样做,因为成本过高,可以选择将任务外包给建站公司,注意选择那些有一定知名度、专业的建站公司进行设计和制作。当然,最好的方式是选择专业的网站内容管理系统(CMS),这是目前许多大公司和政府网站常用的方式。一般来说,CMS厂商的技术实力相对于普通建站公司更为专业,且拥有成熟的产品和方案,成本也大大降低。以下介绍几款国内有代表性的建站系统,功能都相当成熟。

通用系统:PageAdmin,适用于企业、单位类型网站

论坛系统:Discuz,适合论坛、社区类网站

博客系统:Z-Blog,适合个人博客网站

视频系统:maxcms,适合制作视频播放网站

购物系统:ecshop,适合购物类网站

知识百科系统:HDwiki,适合知识问答类网站

人才招聘网站系统:骑士CMS,适合人才招聘类网站

以上就是常用的CMS建站系统,均可免费下载安装在电脑上使用。

3、申请服务器,上传网站

网站制作完成后,需要上传到服务器上供用户浏览,因此需要到专业的主机服务器公司网站购买一个服务器(便宜的称为虚拟主机),与注册域名类似,最好亲自申请。这一步骤需要注意的点是,由于主机公司提供的产品种类繁多,作为外行,我们不可能非常清楚自己到底适合哪种产品,这时我们可以咨询主机客服,让他们为我们介绍,他们会根据我们网站系统的开发语言、网站容量大小等因素为我们推荐合适的产品。

以上所转载内容均来自于网络,不为其真实性负责,只为传播网络信息为目的,非商业用途,如有异议请及时联系btr2020@163.com,本人将予以删除。
THE END
分享
二维码
< <上一篇
下一篇>>