二、大型网站架构模式

网站架构模式

    分层

横向维度,每个部分负责单一的职责。上层对下层依赖和调用。

应用层,服务层和数据层

    分割

网站越大,不同功能和服务分割出来形成高内聚低耦合模块单元。

    分布式

分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。

数据在分布式环境中保持数据一致性非常难,分布式难以保证。

分布式应用和服务、分布是静态资源、分布式数据和存储、分布式计算、并发和协同的分布式锁。

Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等)

    集群

多台服务器部署相同应用,通过负载均衡向外提供服务。

    缓存

缓存就是放在离计算距离最近的位置以加快处理速度。

CDN:内容分发网络 、反向代理、本地缓存、分布式缓存。

缓存种类:1. LocalCache(独立式): 例如Ehcache、BigMemory Go 2. Standalone(单机)  3. Distributed(分布式):例如Redis-Cluster, memcache集群等等

    异步

一个重要目标和驱动力是降低软件耦合性。

一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。

单一服务器内部通过多线程共享内存队列方式实现异步:处理业务操作前面的线程将输出写入到队列,后面的线程从队列中读取数据进行处理。

分布式中,多个服务器集群通过分布式消息队列实现异步,分布式消息队列可以看做内存队列的分布式部署。

异步架构(生产者消费者模式),异步消息队列的特性:可用性,加快网站响应和消除并发访问高峰。

    冗余

数据库定期备份,存档保存,实现冷备份

数据库进行主从分离,实时同步实现热备份。

    安全

web安全 《白帽子讲安全》 吴瀚清

架构模式在新浪微博的应用

    异步推拉模式、多级缓存策略

小结

    好的设计绝对不是模仿,不是生搬硬套某个模式。

时间: 2024-09-30 07:48:07

二、大型网站架构模式的相关文章

大型网站架构系列:消息队列(二) (转)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka).[第二篇的内容大部分为网络资源的整理和汇总,供大家学习总结使用,最后有文章来源] 本次分享大纲 消息队列概述(见第一篇:大型网站架构系列:分布式消息队列(一)) 消息队列应用场景(见第一篇:大型网站架构系列:分布式消息队列(一)) 消息中间件示例(见第一篇:大型网站架构系列:分布式消息队列(一)) JMS消息服务 常用消息队列 参考(推荐)资料 本

大型网站架构系列:分布式消息队列(一) (转)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统). 本次分享大纲 消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二)) 常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二)) 参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二)) 本次分享总结(见第二篇:大型网站架构系列:分布式消息队列(二)) 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要

大型网站架构系列:分布式消息队列(一)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统). 本次分享大纲 消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二)) 常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二)) 参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二)) 本次分享总结(见第二篇:大型网站架构系列:分布式消息队列(二)) 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要

大型网站架构系列:负载均衡详解(3)

原文:大型网站架构系列:负载均衡详解(3) 软件负载均衡概述 Ngnix负载均衡 Lvs负载均衡 Haproxy负载均衡 本次分享总结 一.软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用.因此软件负载均衡在互联网领域大量使用.常用的软件负载均衡软件有Nginx,Lvs,HaProxy等.本文参考大量文档,部分为直接拷贝,参考出处见负载均衡详解(4). 二.Ngnix负载均衡 Ngnix是一款轻量级的Web服务器/反向代理服务器,工作在七层Htt

大型网站架构系列:负载均衡详解(1)

原文:大型网站架构系列:负载均衡详解(1) 面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设 备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访 问量大,并发量高,海量数据的问题. 从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统.分布式和业务拆分解决 了,从集中到分布的问题,但是每个部署的独立业务还存在

【转载】大型网站架构演化

大型网站系统特点 高并发.大流量:PV 量巨大 高可用:7*24 小时不间断服务 海量数据:文件数目分分钟 xxTB 用户分布广泛,网络情况复杂:网络运营商 安全环境恶劣:黑客的攻击 需求快速变更,发布频繁:快速适应市场,满足用户需求 渐进式发展:慢慢地运营出大型网站 大型网站架构演化过程 (1)初始阶段网站架构:一台 Server 就刚需.应用程序.数据库.文件等所有资源都集中在一台 Server 上,典型案例:基于 LAMP 架构的 PHP 网站: (2)应用和数据服务分离:三台 Serve

大型网站架构系列:负载均衡详解(4)

原文:大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法.具体参考文章,详见最后的链接.   三.LVS负载均衡 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,用来实现Linux平台下的简单负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器. 基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/

[SiS预览版]发起一个用于讨论大型网站架构的开源项目

问题描述 项目名称:SailinginSun(阳光下远航)简称:SiS开发语言:Java说明:SiS的目标是用于讨论大型网站架构,会做些类似于Discuz和PHPWind的功能,但在功能上不会那样丰富,因为主要关注的焦点在于项目的设计和架构.同时,SiS的另外一个主要作用是作为一个有详细文档,详细注释,代码规范的中文开源项目,提供给初学者学习(这在国外也很少见).以下是较详细的介绍开发语言:Java首次架构目标:数据库:将数据库表进行水平拆分,根据情况采用hash分区和冷热表(将不常访问的数据放

大型网站架构演变

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考 的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂 的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给 想从事互联网行业的同学一点初步的概念,:),文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果.