普通微博系统结构Word文件下载.docx
- 文档编号:15729487
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:16
- 大小:65.01KB
普通微博系统结构Word文件下载.docx
《普通微博系统结构Word文件下载.docx》由会员分享,可在线阅读,更多相关《普通微博系统结构Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
参考新浪微博等需要支持大并发、大压力问题的系统解决方案,一开始就采取了把读、写分开的方式来处理数据压力问题,写的压力从业务角度而言比较纯粹,读的压力则比较复杂,涉及的数据量也更大,但是解决的手段也多,下文再详细分析。
3.基本结构
新浪微博压力比本系统大,而且其架构已经证明了事实可行,所以,本系统尽可能参考新浪微博的架构。
3.1基本B/S系统三层架构
<
图2.1>
3.1.1简述
如上图2.1所示,这是一个最基本的三层架构的B/S系统。
用户通过浏览器访问web站点来进行业务操作,浏览器可以是:
IE、googlechrome、fireFox等。
被访问的web站点可以是任何形式:
php、java、.net等等。
客户浏览器与web站点之间的通信是采用http协议(有安全性要求则采用https协议)来实现,这个通信是在广域网进行。
Web站点往往会采用一个MVC框架来组织业务实现,在此,MVC不是重点不再赘述。
Web站点的数据持久化功能会采用一个数据库管理系统来辅助实现,web站点的各种业务模块会通过socket(TCPIP协议的一个实现)工具来实现与数据库的通信。
这个通信是在局域网进行。
3.1.2系统瓶颈
B/S系统的瓶颈会出现在以下几个方面:
A.用户并发请求太大,导致web服务器无法及时处理完所有请求
B.用户请求的数据量太大,导致web服务器的上行带宽被耗尽
C.业务计算量太大,web服务器cpu被耗尽
D.业务计算产生的中间数据太多,web服务器内存耗尽,cpu时间被消耗在处理缺页中断上
E.用户并发请求太大,需要的数据库链接数超过连接池的性能指标,导致无法获取数据库链接
F.数据库压力过大,IO量超过硬件性能指标。
以上6种问题,本系统会碰到A、B、E、F。
3.1.3针对大运算量和大量中间数据的扩展方法
图3.1.3>
如上图3.1.3所示,上部灰色方框部分是对图2.1中web服务器层的细化,web服务器的作用是响应http请求,根据请求的url返回对应的文件数据(html、图片、音频、视频等静态内容),web服务器本身是不支持动态内容的处理的,web服务器会检测接收到的请求是否动态内容请求,如果是,则在配置文件中查询是否有动态处理扩展,如果有,则将请求转交给动态处理扩展的模块,例如,apache就是单纯的web服务器,tomcat就是提供动态内容处理的模块。
Tomcat接收apache转发的请求,处理完成后,将数据返回给apache,由apache返回给http请求方。
Apache是基本web服务器,apache+tomcat是广义上的web服务器。
在计算压力不大的情况下,web服务器自己提供动态内容处理也行,在计算压力大的情况下一般会把动态内容处理的业务交给第三方专用模块----应用服务器来处理。
这种应用服务有很多技术实现,如:
EJB、SOAP、CICS等。
使用专门的应用服务器来解决计算压力,可以解决瓶颈C和D。
而微博这种系统,从业务上来说,已经是极度简化的功能,没有什么计算压力,不必使用专门的应用服务器。
3.1.4针对大并发量和大数据量的扩展技术
大并发量和大数据量一直就是B/S系统要面对的主要问题,有非常多的解决手段,有些是技术层次的、有些是设计层次的、有些是硬件层次的、有些是第三方提供的,需要根据情况从中选择最合适的组合来使用。
3.1.4.1尽可能让用户访问静态资源
对应极端的压力需要采用极端的措施,各大门户网站和购物网站是典型的大并发量的例子,他们采取的措施是实现CMS(内容管理系统)的功能,并且,尽量让用户访问静态内容,减少实时计算处理,例如:
记者发布一则新闻或者商家发布一批新商品,系统并不是等用户查询时从数据库中查找新闻或商品,然后生成显示页面的内容,而是在发布的时候就生成了静态内容,并且将链接加入到一系列需要这个内容的页面中,或者直接将静态内容嵌入到需要的页面中。
这种逻辑的实现,比动态查询要复杂得多,得到的好处有两点:
第一,用户查询信息时不再需要实时查询数据库、生成html标记,减轻了大并发量时的服务器压力;
第二,静态的内容可以简单使用web服务器集群来线性扩展性能,只要增加硬件设备就能提供更强大的性能。
要注意,静态内容需要预先准备,需要付出的代价是系统功能和系统结构更复杂,要实现完全让用户只访问静态内容是不可能做到的,需要根据实际业务,找出必须用静态内容才能满足要求的核心业务去实现,而不是什么东西都采用静态内容。
3.1.4.2静态与动态是相对的
静态与动态是相对的,比如,用户要查看一则新闻,最典型的静态模式就是系统已经预先为这个新闻单独生成一个网页,在用户点击新闻标题时弹开一个新窗口显示这个网页;
而动态模式就是在用户点击新闻标题时,系统实时去数据库查询新闻数据,然后根据新闻数据生成一个网页,然后打开这个网页;
还有很多处于这两者之间的实现模式,比如系统建立一个常驻内存的hashMap,以新闻名为key,以新闻内容为value,当用户点击新闻标题时,系统在内存hashMap中查找新闻内容,将内容返回给用户浏览器,由用户浏览器上的script根据新闻内容生成html网页显示出来。
在这种模式中,系统服务器提供的是静态内容,但是却利用了客户端的script去动态生成显示内容。
从方法论的角度而言,在定性分析的基础上做定量分析是一种不错的方法,这会让人看得更清楚,定量分析的一个可行手段是采用原型法来测试、验证自己的分析结论。
3.1.4.3web服务器集群和负载均衡原理
Web集群的软件工具和第三方服务极多,从基本原理来看,分成三种:
第一种,DNS负载均衡;
第二种,服务器集群;
第三种,反向代理。
1)DNS(域名服务器)
DNS负载均衡的基本原理是利用域名解析服务器将一个域名与一组IP(每个IP都是提供完全一样功能的服务器)关联起来,当用户找域名服务器索取域名对应的IP时,域名服务器会根据一定的分配规则返回不同的IP。
图3.1.4.3-1>
如图所示,每个用户通过域名访问B/S系统时,需要先找到域名服务器获取B/S系统域名对应的IP地址,域名服务器返回一个IP,用户再根据这个IP去访问系统。
这种做法的好处是系统负荷扩展,增加新服务器,对系统实现而言是透明的、对用户是透明的、各系统服务器之间也是透明的,非常便与系统承受压力增加的情况下进行性能扩展。
不足之处是:
第一,DNS的域名解析是滞后的,如果系统服务器有所变化,不能立刻在DNS上反映出来,在减少系统服务器的情况下,这会导致用户无法通过域名访问系统;
第二,这只是简单的负载均衡,DNS不会知道各系统服务器的性能状态,无法达到最优分配效果;
第三,其实系统也并不是完全不用修改,部署一台系统服务器与部署二十台系统服务器不可能在后台业务处理上是完全相同的,所以,这种扩展透明是有限透明。
2)服务器集群
服务器集群的基本原理是用来组成集群的每个服务器都使用双网卡,一个网卡连局域网(连通即可,并非必须同局域网),一个网卡连广域网,集群服务器在广域网只有一个IP,服务器之间的各种同步和通信是通过局域网实现。
注意,这种群集是工作在IP层,所以不限于实现web服务器群集。
用户的电脑(如下图所示)只需要知道主控服务器的IP:
202.181.112.143,用户的请求只发给这个IP,主控服务器会将请求转发给某个业务服务器,然后由业务服务器直接将返回值发送给用户。
用户浏览器A向主控发出的请求A-1被主控改为A-2发给了web服务器1,然后web服务器1直接把返回值A-3发送给了用户游览器A。
Windows服务器集群和LVS的直接路由模式都是这种集群的实现。
图3.1.4.3-2>
这种做法的好处是对用户透明,扩展方便,不依赖DNS,可以达到良好的负载均衡和对系统开发上的透明,可以随时关闭部分服务器,不影响用户访问,便与维护。
第一,服务器都在一个局域网中,不能分布式地部署服务器;
第二,集群是不会管你的用户会话内容的,要考虑到用户多次请求会被分配到不同的服务器上的情况,很可能需要开发人员来实现会话信息的处理,要么做同步,要么单独提供登陆服务器。
第三,与DNS一样,部署三台系统服务器与部署三十台系统服务器不可能在后台业务处理上是完全相同的,所以,这种扩展透明是有限透明。
第四,由于共用一个广域网IP,所以,系统会受机房的广域网接入带宽限制。
第五,LVS系统中,如果主控服务器宕机,整个系统都无法使用。
Windosw系统没有这个问题,因为windows系统的主控服务器自己也是一个业务服务器,任何一个业务服务器都可以随时自动充当主控服务器(至于主控服务器IP问题如何解决,暂时还不清楚)。
3)反向代理
反向代理的原理是不管是接收请求还是答复请求都是通过一个代理服务器来中转。
图3.1.4.3-3>
这样做的好处是对用户透明,可以利用一堆性能普通的服务器模拟出一台功能强大的服务器,服务器扩展和维护方便。
代理服务器的核心好处是可以提供静态内容的二级缓冲功能,第一,将转交的内容存在代理服务器的内存中;
第二,如果不在内存中,也可以放在代理服务器的文件系统中。
第一,代理服务器的带宽和IO能力成为系统扩展的瓶颈;
第二,服务器都在一个局域网中,不能分布式地部署服务器;
第三,如果代理服务器宕机,整个系统都无法使用。
第四,对动态内容提供不了什么好处。
3.2大并发和大数据量压力下服务器扩展方法
3.2.1级联扩展
弄清楚了以上三种常用扩展方式的好处和不足之后,就可以灵活运用了。
以下提服务器级联扩展的构想。
为系统申请一个域名,在每个大城市各申请一个不同的广域网IP都对应这个域名,然后通过DNS方式建成一个系统;
在每个城市针对一个广域网IP用LVS实现一个服务器集群或者用代理服务器实现一个服务器集群。
LVS的主控服务器或者代理服务器可以考虑用双机热备提高系统可靠性(不知是否可行,要咨询专业人员)。
3.2.2业务功能切分
不同的业务功能的压力点是不同的,例如两个典型业务:
发微博和个人相册,发微博的特点是:
用户请求的数据量很小,服务器返回的数据量也很小,但是服务端针对这个很小的数据要进行相对复杂的处理,产生大量的数据,是系统中并发量最高的应用;
个人相册的特点是:
用户请求的数据量和服务器返回的数据量比较大,服务端的处理相对比较简单,也是系统中并发量最高的应用。
针对不同的业务特点尤其是不同的压力点,可以建立二级域名,二级域名代表的是后台采用不同的多套服务器,以便针对不同的压力来设计和优化服务器架构,这些服务器原则上是可以互相透明。
通过ping网易的域名可以证明这一点:
ping返回的ip是:
183.60.136.70
119.147.241.36
121.14.234.146
网易是尽量采用静态内容,二级域名比较容易看到,新浪微博是采用富客户端技术,页面是动态生成的(注意,动态和静态是相对的,页面是动态的,数据很可能是半静态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 普通 系统 结构