【转】高扩展性网站的50条原则

news/2024/5/9 18:57:54/文章来源:https://blog.csdn.net/weixin_34342992/article/details/86264425

 

《高扩展性网站的50条原则》,利用一天半的时间快速浏览总结的电子书,对网站的建设有一个原则性的把握,书中提到的大部分原则现在已成为互联网行业的共识,但并不妨碍我们重新整理分类,从全局层面把控高扩展性网站的建设思路,文中的每一条尽管高度凝练,但都值得细细品味。完成于2015年6月11日11:02:19。
(一)化简方程
  1. 不要过度设计:基于成本的考虑,只设计能满足要求的系统即可,过于理想化的设计不利于系统的维护与成本控制;
  2. 设计时考虑扩展性:设计20倍的容量,实现3倍的容量,部署1.5倍的容量,即所谓的D-I-D方法;
  3. 在设计复杂系统时将方案的设计、范围和实施一简再简,在精简过程中可以参考2-8原则,优先最主要,最核心的实现;
  4. 减少页面的DNS查找:
  5. 通过减少与合并等机制,尽可能减少页面上的对象,降低请求资源的次数;
  6. 使用同一品牌的网络设备,减少不同品牌的网络设备间带来的扩展性问题;
总结:
(二)分布工作
  1. 横向复制:复制服务或数据库来分散事务负载,X轴原则;
  2. 纵向拆分:根据动词或名词,拆分服务和数据
  3. 拆分相近的东西:利用某些主题的属性进行查分,如利用客户的ID、所在地等进行拆分;
总结:
(三)横向扩展设计
  1. 设计横向扩展方案;
  2. 采用经济型系统,包括服务器及其他硬件,节约成本;
  3. 横向扩展数据中心:设计具有三个或更多实时数据中心的系统,分散数据,分散事务负载;
  4. 利用云计算进行设计,面对突发的扩展,利用自建或第三方的云技术可以帮助快速环境准备;
总结:
(四)使用正确的工具
  1. 合理选择数据存储:尤其是对于RDBMS的选择,看是否有事务要求,如果只是简单存储,考虑文件系统或缓存等;
  2. 谨慎使用防火墙;
  3. 利用监控工具收集并分析系统日志文件
总结:
(五)不要重复工作
  1. 不要立即检查刚做过的工作,即不要立即读刚写入大数据,因为这种写出错的概率微乎其微;
  2. 避免使用重定向,如果必须使用,优先考虑服务器配置;
  3. 放松时序约束,数据的分布总会给状态带来短暂的不一致,强行约束时序会使系统处理缓慢;
总结:
(六)积极利用缓存
  1. 大用户流程使用CDN;
  2. 使用HTTP头中的Expires、Cache-Control、Last-Modified等过期设置,包括对Web服务器对应HTTP头信息的设置;
  3. 缓存Ajax调用;
  4. 应用页面缓存,在web服务器前加上页面静态内容缓存;
  5. 应用缓存使用;
  6. 在数据库和应用层之间加入对象缓存,如memcached;
  7. 将对象缓存独立成单独的层为上层提供服务;
总结:
(七)从错误中吸取教训
  1. 从偶尔错误事件及失败中总结学习;
  2. 不要依靠QA发现错误,更多的从控制编程角度控制;
  3. 没有回退共的设计是失败的设计;
  4. 讨论失败并从中吸取教训;
总结:
(八)数据库原则
  1. 在设计数据模型时,考虑实体间较复杂的关系,为将来的数据库分割或其他处理做好准备;
  2. 使用类型正确的数据库锁,如隐式锁、显式锁、行锁、页锁、范围锁、表锁、数据库锁;
  3. 不要使用多阶段提交协议处理存储或事务,因为其是阻断性提议,对数据库的锁定要求更强;
  4. 避免使用select for update ,因为该语句查询到的行都会被锁住;
  5. 不要使用select * 选择所有数据列,使用select或insert的时候都制定列名;
总结:
(九)容错设计与故障设计
  1. 采用隔离故障的泳道,通过将服务拆分或将大数据量的表按属性划分进行隔离,减少隔离域之间的同步调用及数据共享;
  2. 避免单点故障,采用master/master的模式,通过负载均衡器均衡跨服务的流量;
  3. 避免系统串联,如果要串联,也要将单个系统和核心环节的系统设置成集群模式;
  4. 对于有风险或共享的服务,需要创建一种结果做到启用或禁用(可通过配置文件、数据库、启动参数、同步命令、文件标记等方式)
总结:
(十)避免状态或分发状态
  1. 避免状态:努力实现无状态,通过合理的设计选择;
  2. 分发状态:尽量在浏览器端维护会话,保持在cookie中;
  3. 分发状态:利用分布式缓存存放状态,通过缓存数据提高存取速度,需要考虑支持持久化的缓存服务选择或利用数据库进行持久化
总结:
(十一)异步通信和消息总线
  1. 尽可能使用异步通信保证每个服务和层都是独立的,即使一定要用同步服务,需要设置服务超时时间;使用异步通讯的常见四种情况:(调用外部API或第三方方法;调用长时间运行的进程;调用容易出错和频繁更改的方法;调用无时间约束或业务连续性约束的系统或服务);
  2. 确保消息总线能够扩展:通过服务按不同类型或不同处理方式进行拆分;
  3. 避免让消息总线过于拥挤,不要发布所有消息,减少低价值高成本的流程,对低价值/低成本和高价值/高成本的流量进行采样;
总结:
(十二)其他原则
  1. 慎用第三方解决方案扩展;
  2. 从成本角度合理使用存储,对于不同价值的数据采用不同的存储策略;
  3. 删除数据库事务处理过程中的业务逻辑处理,让数据库只做数据事务处理方面的共走,与业务逻辑无相关;
  4. 设计能够监控的应用,在设计阶段就要考虑监控,做到从业务的角度监控而不仅仅是CPU、内存、网络等纯技术监控;
  5. 团队中的技术能力要能胜任对系统、组件、服务等相关能力的需要,做到自助可控;
总结:

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

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

相关文章

centos7云主机nginx+WordPress完整建站(博客)流程记录

一、安装nginx1、安装依赖#安装gccyum install gcc-c#安装 pcre-develyum install -y pcre pcre-devel#安装zlib yum install -y zlib zlib-devel#安装OpenSSL yum install -y openssl openssl-devel2、安装nginx#创建nginx.repo文件vi /etc/yum.repos.d/nginx.repo #然后写…

centos7服务器网站不能登录,centos7无法联网_网站服务器运行维护

linux怎么启动docker服务_网站服务器运行维护linux启动docker服务的方法:1、使用sudo yum install 命令安装Docker。2、使用“sudo systemctl start docker”命令启动docker服务。1、修改配置文件使用 vi 编辑器修改 /etc/sysconfig/network-scripts/ifcfg-eth0进入…

HTML CSS设计与构建网站

《HTML & CSS设计与构建网站》基本信息原书名: HTML and CSS: Design and Build Websites原出版社: Wiley作者: (美)Jon Duckett [作译者介绍]译者: 刘涛 陈学敏出版社:清华大学出版社ISBN:97873023110…

网站开发必备-快速浏览Asp.Net网站绿色小工具

< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> 选择此工具的理由&#xff1a;1.快速浏览Asp.Net网站 2.小巧 3.绿色 点击下载 前提&#xff0c;系统必须安装 .NET Framework 方法一. 将此程序放在网站根目录&#xff…

18个使用 jQuery 制作的创意网站欣赏

jQuery 是一个非常优秀的 Javascript 框架&#xff0c;在现在的 Web 开发项目中扮演着重要角色&#xff0c;借助 jQuery 可以让网站有更好的可用性和用户体验&#xff0c;让访问者对网站留下非常好的印象。今天这篇文章与大家分享18个使用 jQuery 制作的创意网站&#xff0c;一…

Thinkphp5开发电脑网站支付宝支付详细流程(线上测试篇)

为什么80%的码农都做不了架构师&#xff1f;>>> 在沙箱测试篇讲过的我在这里就不再做重复&#xff0c;详情请见上一篇PHP开发电脑网站支付宝支付详细流程&#xff08;沙箱测试篇&#xff09; 在沙箱测试的时候使用的是沙箱环境中的配置&#xff0c;现在进行线上测试…

SEO思维:如何运用数据分析论坛签名和外链在百度新算法中的效果

2012年08月22日通过站长平台发布官方公告&#xff0c;为了提高用户体验、清除低质采集的垃圾内容&#xff0c;百度将在6月底反作弊算法的基础上再度升级&#xff0c;对大量低质量、无内容的站点进行清除。并打击胡乱采集、超链接作弊、堆积关键词、冒充官网,等严重影响用户体验…

网站转接支付宝解决方案

大型网上购物系统除了能让会员选择货到付款结账方式外&#xff0c;还应该提供一些更方便快捷的网上支付方式。如果网上商店没有足够的实力提供会员直接在网站中建立现金账户的功能&#xff0c;就可以将订单信息转接到支付宝&#xff0c;让会员从支付宝付款。当然就算会员可以在…

Python3代码实现《机器学习实战》k近邻算法改进约会网站配对效果中出现的问题

报错1&#xff1a;No module named ‘kNN’ 解决&#xff1a; 转而在Spyder中&#xff0c;先保存在自己的学习目录中&#xff0c;然后在命令提示符完成操作&#xff0c;保证目录要一致&#xff0c;也就是下面图中打马赛克的4个。 报错&#xff1a; name ‘reload’ is not def…

网站的高性能架构

原文地址&#xff1a;http://www.uml.org.cn/zjjs/201312192.asp 瞬时响应&#xff1a;网站的高性能架构作者 李智慧&#xff0c;火龙果软件 发布于&#xff1a;2013-12-19什么叫高性能的网站&#xff1f; 两个网站性能架构设计方案&#xff1a;A方案和B方案&#xff0c;A方案…

VS.NET2013发布网站的时候去掉.cs文件(预编译)(转)

在要发布的网站上右键&#xff0c;选择"发布网站"。在发布窗口中&#xff0c;会让你选择一个发布配置文件&#xff0c;没有的话点击下拉菜单在里面选择新建一个。NEXT.好&#xff0c;现在发布一下网站。发布出来的文件没有包含*.cs文件。打开bin目录&#xff0c;会发…

大型网站架构演变和知识体系

转自&#xff1a;http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详…

Linux部署集群.NET网站

一、Linux下面安装需要软件 我们这里需要安装的软件有&#xff1a;1) Mono 3.2.8 : C#跨平台编译器&#xff0c;能使.Net运行与Linux下&#xff0c;目前.net 4.0可以完美运行在该平台下2) nginx/1.4.6 &#xff1a;web服务器, 支持方向代理3) fastcgi-mono-server4 &#xff1a…

在mvc4中多语言建站的实例

环境&#xff1a;vs2012 asp.net mvc4. 实现方式&#xff1a;resource 资源文件&#xff0c;根据路由规则中Lang参数来判断载入哪种语言方式 在网上找到了相关资料&#xff0c;顺便自己做了个练习&#xff0c;新建工程之类的步骤就免了&#xff0c;该注意的地方说明下&#xff…

台北到淡水版Firefox新标签页myNewTab网站链接修改

台北到淡水版的Firefox用的新标签页&#xff08;也叫快捷导航、九宫格等&#xff09;是myNewTab&#xff0c;如何修改里面的链接呢&#xff1f;如下&#xff1a; 1、点击右上角的”定位“​ 2、将会打开该文件的所在位置&#xff0c;例如&#xff1a;D:\应用程序\火狐浏览器\Pr…

如何在 ASP.NET 应用程序中实现模拟用户身份(在ASP.NET中以管理员身份运行网站)...

前言 在实际的项目开发中&#xff0c;我们可能会需要调用一些非托管程序&#xff0c;而有些非托管程序需要有更高的身份权限才能正确执行。本文介绍了如何让IIS承载的ASP.NET网站以特定的账户执行&#xff0c;比如Administrator。 概要 本文介绍了在 ASP.NET 应用程序中实现模拟…

浅谈Web网站的架构演变过程

前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。该系统具备的功能&#xff1a;用户模块&#xff1a;用户注册和管理商品模块&#xff1a;商品展示和管理交易模块&#xff1a;创建交易和管理阶段一、单机构建网站 网站…

varnish加速web网站

简介 Varnish可以有效降低web服务器的负载&#xff0c;提升访问速度。根据官方的说法&#xff0c;Varnish是一个cache型的HTTP反向代理。 按照HTTP协议的处理过程&#xff0c;web服务器接受请求并且返回处理结果&#xff0c;理想情况下服务器要在不做额外处理的情况下&#xff…

手把手教你从零开始用WordPress建站

最近&#xff0c;很多人来问我&#xff0c;怎么做一个实际项目&#xff1f;其实这个说简单也简单&#xff0c;说复杂也复杂&#xff0c;但是不管怎么样&#xff0c;从今天开始&#xff0c;一步一步的走&#xff0c;你肯定可以做一个属于自己的站点。 之前我也在群里说了&#x…

快盘做网站服务器,快盘云服务器地址

快盘云服务器地址 内容精选换一换在您申请了云耀云服务器后&#xff0c;可以通过管理控制台查看和管理您的云耀云服务器。本节介绍如何查看云耀云服务器的详细配置&#xff0c;包括云耀云服务器名称、镜像信息、系统盘、数据盘、安全组、弹性公网IP等信息。登录管理控制台。单击…