网站性能优化--系统架构篇

news/2024/5/15 11:41:34/文章来源:https://blog.csdn.net/JeamKing/article/details/5187042

转自:http://blog.sina.com.cn/s/blog_466c66400100bi2x.html

--提升性能的同时为你节约10倍以上成本
From: http://blog.sina.com.cn/iyangjian

一,系统部署(高并发,可扩展)
二,负载均衡LVS(高可用,低成本)
三,IDC分布,DNS解析(快速)
-----------------------------------------------------------------------------------------

一,系统部署(高并发,可扩展)

本来想画在手稿上然后扫描上去的,貌似方法太土,在朋友的帮助下费了n个小时用Visio画了个,感觉很好看 ^-^ 。这一篇将主要围绕这个图来讲述。




首先从数据源说起,所谓狡兔三窟,我们数据源也是按三路设计,以保证IDC内部和不同IDC之间实现灾备。源头转发机A,B,C拥有往集群中任何一台服务 器同步数据的权限,所以他们三个有一个活着,数据就可以同步更新,而且可以自动切换。从源头转发机到其他各IDC的数据都是双路的,然后每个IDC的前两 台服务器具备转发功能,往IDC内部其他服务器分发数据,同一IDC内部的主备转发机可以自动切换。这样就实现了数据同步更新的高可用性。

介绍下这个集群里的角色,备机A来自行情系统,兼任源头转发的异地备份。系统内的另外两个备机属于轻负荷服务器,80端口空出来,必要时候只要一启动,就 会立即自动加入到LVS后面服役。除了A以外所有具备转发功能的机器同时也是集群内的普通成员,需要提访问供服务的。各IDC的LVS本身也是有主备的, 可以实现自动切换。

整个系统增减服务器非常方便,用户根本感觉不到,备机的启用更快,也就3~5秒,具备很好的扩展性。

我们的数据从源头上就是使用我编写的myzip压缩好了的,后缀名用"*.mz" ,比如 a.js.mz ,一直到用户的浏览器端才解压。数据传输量小,速度快。 源头转发机上同时运行一个checkchange的程序,确保内容实际更新过的文件才往其他IDC转发,这样能有效的减少传输文件数量,以达到更快的更新速度。

另外,跨IDC系统部署,很重要的一点是,内网连通,路由选择,这影响数据传输速度的关键。北京的各机房间一般都有比较好的专线连通,只需要把路由打通就 ok了。跨IDC的,一般都使用vpn来做内网传输,有条件的使用专线,这个比较昂贵,省着点用。另外跨网通,电信,和移动机房的一般都从双线机房路由, 或者说,从到不同信息服务商连通性都比较好的机房路由。总之跨IDC数据传输,要做到各IDC之间的传输速度心中有数。

最后,请稍微注意下系统的安全性,包括数据传输的安全性,和网络安全性,避免遭受攻击。


二,负载均衡LVS(高可用,低成本)

LVS 有三种模式,NAT,TUN,DR,其中DR是最高效的,下面我将主要介绍DR的应用。更多LVS资料参见 

LVS项目中文文档 。 目前我们公司的LVS应用规模在国内应该至少可以排前三,更多技术细节请咨询我们的LVS大牛xiaodong2.

下面是DR单臂模式的系统结构图:


下面引用一下官网的介绍: 在VS/DR 中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后 的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现 报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。

我在财经时要使用LVS的初衷只是为了解决负载的均衡性,因为DNA轮询各前端服务器上连接数有不小的差距,那时候我们老大阿图对于这个项目给予了很大支 持,还亲自组织过几次会议。话说恰巧yingyuan做了个新技术讲座,我从中发现LVS/DR后想让它帮忙修改负载均衡算法,后来部署上以后发现,不用 修改,均衡的很,再后来xiaodong2接手后对性能和稳定性做了很大的提升,我们使用两年来没出过问题。另外lvs还额外带来了两个好处,高可用性, 和可伸缩性。是可以随时把lvs后面的一台服务器下掉,扛走,用户是不知道的。服务器坏了也不用着急修,也不用修改DNS(另外DNS的层层cache影 响不是一时半会就能消除的)。新增加一台服务器也是同理,最绝的就是备机的启用可以用秒来衡量(这些F5都能实现,代价不菲)。财经应用对公司内lvs的 项目推动有不可磨灭的贡献 ,xiaodong2也这么说地 :) 。


三,IDC分布,DNS解析(快速)


这里思路跟CDN是一致的,尽量减少主干线路上的拥塞,让用户就近访问,以达到最快的数据传输速率。
我们要做的就是了解自己应用的用户分布情况,然后再结合现有资源以及各地网络出口特征,信息服务商的特征来部署我们的服务。

1,各省市网络用户分布依次排名(数据来自cnnic2007年的统计):
广东 13.4%
山东 8.2%
江苏 7.5
浙江
四川
河北
河南
福建
上海
辽宁
北京
湖南
山西
黑龙江

2,运营商的网络分布特点:
网通:以北京为超核心的放射性结构。山东应该是网通最大的用户,但它的网络存在瓶颈,会有丢包,造成外面访问它慢,它访问别人也慢。对此我们没有必要浪费珍贵的主干带宽,在济南布个点,同步一份数据过去就,让他们在自己省内访问,访问速度会立刻提升n倍。

电信:以几大省市为核心的环状结构,省市内部也是大环套小环。其中以广东用户最多,必须要部点的地方。记得很久以前我拿到一份数据说,上海人访问本IDC 的数据,不如访问广东的速度快,不晓得现在是否还存在这种情况。电信有7个主要核心,分布在广州,上海,江苏,西安,成都,武汉,北京。

教育网:以国内主要的八个结点为核心。这八个结点分布在北京,西安,成都,广州,武汉,南京,上海,和沈阳。

3,DNS解析时候需要权衡的:
现在了解了这些信息,那我们开始讨论如何部署我们的服务。要考虑两个问题:一,要部署在哪几个IDC。二,每个IDC部署的服务器数量。三,DNS如何按区域划片。

要部署在哪几个IDC ?
其实这里还涉及到规模化应用的好处,一个小应用就部署了N多个IDC显然不划算。如果我的应用上了规模,我可以在每个省都部署上,那样用户体验将非常好, 而且规模化以后会有专业人员对应用进行优化。所以公司里有动态池,和静态池这样的公用平台是好事(也许将来还会有我的js池)。如果我们的服务还没有上升 到公司级别的规模,那就得考虑下取舍。

网通:东北三省,可以在沈阳和哈尔滨选择一个部署,有条件可以都部署。沈阳到北京的速率比哈尔滨到北京的速率快一倍,而哈尔滨到沈阳的速率,还不如到北京 的快。北京,如果只让我在网通部署一个点的话,毫无疑问我会选择北京,其他所有结点到它的速率都比较快,但是北京的带宽比较昂贵。天津,这个点重要性仅次 于北京,可以辐射河北,河南,江苏,离北京也比较近,价钱便宜。太原,可以辐射到西北一带。山东,前面已经说过,最好要部署的。

电信:那七个核心结点上部署了,速度就有保证。具体覆盖范围。广州覆盖周边几省,上海覆盖本地,江浙一带。 武汉覆盖华中一带,西安可以覆盖西北5省,成都覆盖西南5省。

每个IDC部署的服务器数量?
这要根据具体应用来决定。比如财经用户网通,电信比例:3:4 而体育是 1:2 。教育网用户一般占1/30左右。 这里还不能单纯考虑用户分布,还要考虑IDC内部灾备和IDC间灾备,是要有个取舍的。拿咱们的某个具体项目来说,教育网,够不上一台服务器,但是不得不 部,因为它访问外界实在太慢了,我就住在学校里,也为了方便自己。我把北京作为主要结点部署了3台,天津,其实一台就够了,山东一台有点多。但是考虑到北 京IDC一旦倒了,实力相当的IDC可以灾备,同时考虑到,天津,和山东只有一台,idc内部,都无法实现灾自动切换。所以,我选择天津两台,山东不部 署,以性能换安全。

DNS如何按区域划片?
原则,就近分片,以达到最快传输速率。其次,考虑到各IDC间快速切换比较容易,DNS解析文件要写的简洁一些。另外,DNS解析有有个缺陷,每个单独域 名里写在最前面的那个ip,它被轮询到的概率要比同组的服务器高10%,而且随着同组服务器的增多,这个差距会变大。所以最解析时候,每个IDC我都把硬 件性能最好的服务器ip放在最前面。

另外:
做系统架构不提数据库,有点过不去。这块问题可以请教我们的DBA大牛zongwen同学。数据库是我将来一年的学习重点,争取一年后在DB方面能达到我们DBA六层功力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_892038.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站性能优化--服务器编写篇(下)

--提升性能的同时为你节约10倍以上成本 From: http://blog.sina.com.cn/iyangjian 七,NBA js直播的发展历程 这一节就谈下这个项目发展过程中所遇到的瓶颈,以及如何解决的。 应该是06年吧,当时NBA 比赛比较火,woocall负责高速模式图文直播…

盘点美国7大团购网站:运营模式各有差异

导语:据国外媒体周日报道,最近团购网站和其他一些提供打折服务的企业备受瞩目,尤其是该市场的领头羊Groupon,正在以飞快的速度在全球主要城市扩张。也许是团购模式易于理解,Groupon的竞争对手和模仿者都在跃跃欲试&…

HTML基础7--文档与网站架构

本文首发公众号: 伊洛的小屋,欢迎关注并查看更多内容!!! 文档的基本组成 一个页面通常由一下几个部分组成:页眉、导航栏、主内容、侧边栏、页脚 例如:下面的页面布局 构建内容的 在HTML中 …

服务器IIS架设网站无法增加log文件

小慕 遇到的是在IIS 架设网站之后,程式本地运行时会在指定文件夹写下程式运行的log 档,但是服务器会报错无法运行; 经查资料,发现是指定文件夹(文件名Log)的权限未分配给IIS _IUSRS,分配之后即…

网站设计与开发流程图

转载于:https://www.cnblogs.com/wy811007/p/4160016.html

分享6个AI绘画网站

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 1、Midjourney 特点:业内标杆,效果最强大 Midjourney是基于diffusion的AI图画艺术生成器。生成图片不局…

servlet学习笔记1——用户登录网站(servlet1.0)

一、框架描述 登录页面:Login.java 验证页面:LoginCl.java 欢迎界面:Wel.java Login.java发出登录请求,Login.java进行验证,合法则进入Wel.java,不合法返回Login.java 二、参考代码 Login.java packag…

servlet学习笔记7——网站框架的改进

(三)网站框架的改进 之前的程序设计不合理,因为其将界面和业务逻辑放在一起(moddel1模式),存在以下问题:1.在LoginCl.java文件和Wel.java文件中都操作了数据库,它们的逻辑相似&…

用springBoot与dubbo、 zookeeper、redis整合做了一个弹幕网站

系统采用eclipse 开发,jdk1.7 ,数据库采用的是mysql 源码下载地址:http://java.goodym.cn/html/1506574390095.html 网站预览地址:http://malimali.goodym.cn

开发者必备:测试网站速度的五个免费在线工具

摘要:网页性能很大程度上决定了用户体验,最终可以决定网站的成功。虽然大家都知道提高浏览速度的重要性,可很多时候不知道什么元素拖了后腿。本文将介绍测试网站速度的五个免费在线工具,帮你设计出高效的网站。 如果你认为一个网站…

移动开发者的自学宝典:十大在线编程学习网站

目前的教育领域,受移动互联网的冲击,MOOC的理念正在风行,但事实却稍显疲软,不尽如人意。相比美国式的全民热衷,国内的线上教育却还流于形式。其他教育尚且如此,移动开发教育更不用谈。在这种情况下&#xf…

网站用户单点登录系统解决方案

网站用户单点登录系统解决方案 1 背景   在网站建设的过程中,多个应用系统一般是在不同的时期开发完成的。各应用系统由于功能侧重、设计方法和开发技术有所不同,也就形成了各自独立的用户库和用户认证体系。随着网站的发展,会出现这样的用…

计算机毕业设计Springboot+vue的网络购物商城网站(源码+系统+mysql数据库+Lw文档)

一、项目运行 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springbootvue 目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上&…

wordpress建站如何用SMTP配置邮件通知

前提条件:你已经有了企业邮箱,相关文章请看:如何开通阿里云企业邮箱免费版(点此前往) 不建议使用主机商提供的邮箱,因为换主机商是比较常见的事情,因此导致的邮箱迁移就有些麻烦了,…

网站如何开通google search console

本文将介绍网站如何开通google search console(以下简称GSC),以分析网站的自然流量数据,例如:关键词、展示量、排名、点击率、外链等等。GSC能为网站的Google SEO运营工作带来极大的帮助,是必不可少的工具。…

如何给wordpress网站安装Google analytics跟踪代码

本文将介绍如何给wordpress网站安装google analytics,用于跟踪网站的用户数据。 前提条件:你已拥有google账号;你的网站使用wordpress创建的。 创建google analytics账号 访问https://analytics.google.com/analytics/web/,点击…

如何在siteground给网站启用cloudflare CDN

Siteground为托管的wordpress网站提供了cloudflare免费版全球CDN的快捷开通功能,CDN是加速网站以降低网站加载时间的重要功能。本文基于如下前提条件: 域名的NS是指向siteground的,请在本站外贸建站教程中查看如何将域名NS指向Siteground。网…

如何在siteground中创建wordpress网站

本文将图文分步骤介绍如何在siteground中创建wordpress网站,如果你买的是growbig套餐,用下面的办法就可以创建多个不同域名的网站。 Step1:登录siteground后,按下图序号依次操作,点击new website创建网站。 Step2&…

如何在Siteground中给WordPress网站安装SSL证书

本文将一步步介绍:如何在Siteground中给网站安装Let’s encrypt SSL证书。 获取SSL证书 进入Siteground的site tools,进入Site》SSL manager 选择ssl为 let’s encrypt 点击get,等待安装完成后去启用 强制执行HTTPS 安装完成后在该界面能看…

如何修改WordPress网站页脚版权(2种方法)

本文基于免费主题,实例讲解修改Wordpress网站页脚版权的功能操作: 以Gnenerate Press为示例,针对未提供修改版权功能的主题,如何去掉主题的版权、支持信息,并修改为本站的; 以Astra主题为示例,…