大型网站网络结构过渡与软件架构的黄金搭档

前言

  你可能常常听说,F5、集群、网站架构等名词,却又不知道何为网站架构,更不知一个大型高并发网站的演变过程。

  如果你是个JavaEE初级程序员,想明白除了软件开发,你还可以做什么。

  ---那么,这篇文章可以让你领略一二。

了解数据怎么变大,网站由小向大过渡结构(通过不断硬件的扩充实现大的负载)

1) 静态网站

背景:最开始,我们想做一个小网站,一个静态网页,把自己的个人简历放上去。

需求:需要一个网络空间(在服务器上,这个服务器很多用户一起使用)

结构图

说明:为了保证服务器数据的安全性,个人电脑和手机不能够直接访问服务器。要通过防火墙才可以。

2) 交互网站,动态BLOG

背景:通过在静态网站上分享一些内容:博客、心情之类的。在QQ、微信上宣传,大家对博客很感兴趣,用户访问量增多,并且想写一下回馈。这样就需要升级,做一个动态的网站。

怎么办:使用JSP/ASP/PHP等动态语言写服务端代码。

结果:升级以后,满足了浏览者留言、回馈的需求。

背景2:随着人数增多,访问增多,压力增大,出现了留言板刷不出来的情况,妨碍了用户体验。这时候,与别人合用的服务器已经无法负载,需要升级。

怎么办2:更换服务器,租用一个独立的服务器。

结果2:由于更换了独立的服务器,用自己腰包的钱,便开始想着如何能够盈利一些,让收支平衡,便开始为应用提供一些小功能:上传、下载等。由于有了独立的服务器,可以支持我们的负载。

3) 业务应用,数据库服务器和应用服务器分离

背景:但是好景不长,大家对我的网站很有兴趣,上传下载分享一些东西。导致,访问的人数又变多了。

怎么办:有了业务应用后,业务服务器和数据库服务器分离。

结构图

结果:由于业务服务器和数据库服务器分离,性能提高。可以满足日常秒级百人并发(日访问至少千次以上了),相当不错了。

4) 小的电脑外设零件(小商城,内存吃紧,页面缓存html)

背景:随着网站扩展,不满足了。想办一些实体,卖一些东西,优盘、硬盘等,做一个小小商城。增加了业务:购买。这样就需要购物车,需要保持链接持续,要用Session保持会话,导致内存吃紧。

怎么办:而且加内存很贵,需要考虑成本。既然内存吃紧,就在内存上做做文章。购物车中的货物,老是动态查询,没有太大意义。图片之类的可以先做好等。可以使用页面缓存技术来解决,将静态内容与动态内容相分离。

结构图

结果:增加了页面缓存,静态数据不再从数据库获取,直接从业务服务器获取。对数据库访问压力变小,对同时在线支持的人数变多了。

5) 中型商城(用户量,加前置机,加高性能的web服务器)

背景:小小商城办的好,固定粉丝(用户)变多,买的东西越来越多,货物越来越多。客户开始抱怨,货物看不到,页面半天出不来(访问请求过多)。

怎么办:由于是中型商城,有钱了,扩充一台Web服务器。这时,我们有两台服务器,那我们的防火墙连谁? 可以再增加一台前置机(只有中转请求的作用)。扩展了一台应用服务器,相当于可访问连接翻倍了(以前可以100人,现在可以200人)。两台web服务器,都去访问一台数据库。

结构图

结果:这样,问题解决,可以稳定支持在线200人运行。

6) 向大型商城发展(用户量,增加F5,负载均衡,数据库读写分离,集群)

背景:现在有野心了,想做大型网站(京东、淘宝)。并发两百人访问,支持在线500人访问。每日订货3000人次。而且,经过一年的积累,也有钱了,可以买几台服务器。

怎么办:进一步扩展硬件。之前我们说增加web服务器,可以增加支撑的在线人数(每个服务器支撑的人数是大概固定的),只能通过继续扩展服务器,增加可以支撑的在线人数。集群出现(几十台、上百台)。而且,随着服务器增多,前置机已经无法支撑负载均衡了。为了解决,增加一台F5(专业转发,一台20W,很小很贵),性能很强,能连几十台上百台,轻松转发链接。这样,多台Web服务器连接一个数据库服务器。

结构图

结果:F5解决了Web服务器集群问题。但是用户反馈,响应照样很慢。照样页面出不来,那么问题出在哪里了?原来问题出在服务器了,所有Web服务器都读写一个数据库(读写竞争)。这时候瓶颈变成了数据库服务器。

怎么办2:再加一台数据库服务器,这个时候,web服务器,到底连接那一台数据库服务器? 数据库数据不同,造成数据丢失。这时,需要同步数据库。在读写时,数据库同步依旧会耗费时间,会造成读写冲突,读的人把写的人时间浪费了。为了避免读写冲突,使数据库读写分离。

**结构图2

结果2**:这样,日常浏览的,走读服务器。购买的走写服务器。但是问题又来了,F5是硬件,很笨,只懂得转发,不会处理业务。这时,需要前置机处理简单的业务判断。

怎么办3:增加前置机,处理简单的读、写业务判断。

结构图3

结果3:不错了,系统可以支撑大量的访问,形成了初具规模的大型商城。

大型系统解决方案黄金搭档

1) 通过硬件的扩充,解决了大并发、大负载量的问题。但是,成本是非常高的。

2) 有了结构,具体的结构中,用的核心技术是什么?

  1. 前置机(Web Server)

    用处:放置静态资源(图片、文件、css、js)。好处:不用再从后台取,效率极高!

    技术:Apache、nginx。使用nginx的网站:迅雷、网易、爱奇艺、当当、腾讯等。

  2. Web Server(中间件,响应动态数据)

    第一级(开源、免费): Tomcat(稳定支持100人秒级并发。最高150。配置不好50人就会死)、Resin、glassesfish(可以实现热部署)。

    第二级(收费):JBoss、

    第三级(收费,很贵) :WebLogic(100万左右)、WebSpare。业界最强悍的。可以稳定支撑200人秒级并发。一台服务器最多200人秒级并发。可以使用虚拟机技术,扩充虚拟服务器,扩充并发量。如果集群,需要大量投入资金。

  3. 数据库

    Mysql(免费)

    Oracle(收费) :单台性能极高。卖用户数,少则几十万,多则上百万。如果集群,需要大量投入资金。

  4. 高效系统黄金搭档nginx(前置分发) + tomcat(中间件) + mysql(数据库) + mybatis(技术) + spring(技术)

总结

小小分享,希望对大家有所帮助。转发请注明出处。

时间: 2024-07-31 06:17:45

大型网站网络结构过渡与软件架构的黄金搭档的相关文章

软件架构设计学习总结(13):大型网站技术架构(七)网站的可扩展性架构

扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力. 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性.模块通过分布式部署,独立的模块部署在独立的服务器上(集群)从物理上分离模块之间的耦合关系. 模块分布式部署以后具体聚合方式主要有分布式消息队列和分布式服务. 1.利用分布式消息队列降低系统耦合性 如果模块之间不存在直接调用,那么新增模块或者修改模块对其他模块影响最小,这样系统的可扩展性无疑更好一些.         事件驱动框架:通过在

软件架构设计学习总结(12):大型网站技术架构(六)网站的伸缩性架构

网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力."伸"即网站的规模和服务器的规模总是在不断扩大. 1.网站架构的伸缩性设计 网站的伸缩性设计可以分成两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩.前者是不同的服务器部署不同的服务,提供不同的 功能:后者是集群内的多台服务器部署相同的服务,提供相关的功能. 1.1 不同功能进行物理分离实现伸缩 纵向分离:即分层后分离,将业务处理流程上的不同部分分离

大型网站系统架构技术原理透析

跟朋友聊天的时候,发现很多人对大型网站系统架构非常感兴趣,我也很感兴趣,经常会在家里2台笔记本和1台服务器组成的局域网环境里作些实验.我进 入IT行业的时间,大约是97,98年吧,那时候PC客户端软件最为盛行,做软件开发是一份很体面也很喜欢的工作.我从Win3.1上的VC1.5开始一 直到VC6.0,然后转为.Net开发,基本上都是从事客户端软件开发.本人的性格是危机意识向来严重,所以深感互联网必将盛行,传统软件必将走向没落, 于是转向了WEB开发.记得以前去某Portal网站应聘的时候,主考官

大型网站--负载均衡架构

负载均衡 (Load Balancing) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 大型网站负载均衡的利器 全局负载均衡系统(GSLB) 内容缓存系统(CDN) 服务器负载均衡系统(SLB) DNS域名解析的基本过程 最初的负载均衡解决方案(DNS轮询) 优点 基本上无成本,因为往往域名注册商的这种解析都是免费的: 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网I

大型网站系统架构分析

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题. 数据库海量数据处理:负载量不大的情况下select.delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题.另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的.索引和更新是一对天生的冤家. 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的

【转】Yahoo!团队:网站性能优化的35条黄金守则

Yahoo!的 Exceptional Performance团队为改善 Web性能带来最佳实践.他们为此进行了一系列的实验.开发了各种工具.写了大量的文章和博客并在各种会议上参与探讨.最佳实践的核心就是旨在提高网站性能. 原版猛戳:https://developer.yahoo.com/performance/rules.html,本文转自:http://blog.csdn.net/xianghongai/article/details/9241549 Excetional Performan

《大型网站技术架构:核心原理与案例分析》笔记03

<大型网站技术架构:核心原理与案例分析>笔记01 1.大型网站核心架构要素. 架构:"最高层次的规划,难以改变的决定."从这个角度而言,人生规划也是一种架构.选什么学校.学什么专业.进什么公司.找什么对象,过什么样的生活,都是自己人生的架构. 软件架构:"有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计." 五大要素:性能.可用性.伸缩性.扩展性和安全性. 2.性能测试指标: 响应时间:指应用执行一个操作需要的时间,包括从发出请求开始

《大型网站技术架构》笔记

最近又把<大型网站技术架构>看了一遍.而中间读了一本<计算机操作系统>的教材后,感觉对大型网站的技术架构有更深的了解.在此结合对这两本书的理解做一些笔记 传统的OS(Operator System)有四个基本的功能: 处理机管理:以进程为基本单位,对其创建和撤销 a)         进程控制 b)         进程同步 c)         进程通信 d)         调度 存储器管理 a)         内存分配 b)         内存保护 c)         

关于大型网站技术演进的思考--存储的瓶颈(转)

(一)第一部分 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程. 首先我们要思考一个问题,什么样的网站才是大型网站,从网站的技术指标角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那