大型网站网络结构过渡与软件架构的黄金搭档
前言
你可能常常听说,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) 有了结构,具体的结构中,用的核心技术是什么?
-
前置机(Web Server)
用处:放置静态资源(图片、文件、css、js)。好处:不用再从后台取,效率极高!
技术:Apache、nginx。使用nginx的网站:迅雷、网易、爱奇艺、当当、腾讯等。
-
Web Server(中间件,响应动态数据)
第一级(开源、免费): Tomcat(稳定支持100人秒级并发。最高150。配置不好50人就会死)、Resin、glassesfish(可以实现热部署)。
第二级(收费):JBoss、
第三级(收费,很贵) :WebLogic(100万左右)、WebSpare。业界最强悍的。可以稳定支撑200人秒级并发。一台服务器最多200人秒级并发。可以使用虚拟机技术,扩充虚拟服务器,扩充并发量。如果集群,需要大量投入资金。
-
数据库
Mysql(免费):
Oracle(收费) :单台性能极高。卖用户数,少则几十万,多则上百万。如果集群,需要大量投入资金。
-
高效系统黄金搭档:nginx(前置分发) + tomcat(中间件) + mysql(数据库) + mybatis(技术) + spring(技术)
总结
小小分享,希望对大家有所帮助。转发请注明出处。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。