网站架构模式

简介: <div class="markdown_views"><p>模式描述对重复发生时间的通用解决方案的核心。</p><p>模式的价值在于可重复性。</p><h2 id="网站架构模式">网站架构模式</h2><p>为了解决高并发访问,海量数据,高可靠运行,提出了很多解决方案实现高性能,高可用,易伸缩,可扩展,安全等技术架构。</p><h3 id="分层"

模式描述对重复发生时间的通用解决方案的核心。

模式的价值在于可重复性。

网站架构模式

为了解决高并发访问,海量数据,高可靠运行,提出了很多解决方案实现高性能,高可用,易伸缩,可扩展,安全等技术架构。

分层

横向分成, mvc, 视图,业务,数据库层
进制跨层调用
会给以后的优化带来很多的方便
可以每层部署到不同的物理设备

分割

纵向切割, 按功能和服务包装成高内聚低耦合的模块单元。
一方面有利于开发和维护,一方面利于分布式部署,提高并发处理能力和功能扩展能力
例如将网站分为:购物,论坛,搜索,广告。。 更细分割,购物可以分为:机票酒店,小商品,大家电等。更细的还可切割为首页搜索列表,详情页等。

分布式

分层和分割的一个重要作用就是分布式, 通过远程调用连接。 提高处理能力

但是。网络损耗, 数据一致性, 更大的宕机风险, 会导致软件错综复杂。
常见的分布式方案:
- 分布式应用和服务. 改善并发性,减少数据库连接资源,还能更好的复用服务,便于业务功能扩展
- 分布式静态资源。 图片等,使用独立域名加快浏览器并发加载速度, 减轻服务器压力。
- 分布式数据和存储。 主要是数据量太大。现在流行的nosql
- 分布式计算: Hadoop和MapReduce. 用于搜索引擎索引构建,数据仓库数据分析等。
- 分布式锁。 分布式环境的并发和协同
- 分布式文件系统 用于云存储

集群

集群化是为了给分布式服务对外一个集中的入口。 通过负载均衡对外提供服务
这种还可以提供可用性,避免宕机。

缓存

将数据放在离计算最近的位置加快处理速度。
CDN:内容分发网络。   放在网络服务商那里,也可以放一些静态资源
反向代理: 网站前端,放静态资源
本地缓存: 存储热点数据
分布式缓存: 热点数据放到缓存中。  减轻后端应用和数据库的负载压力。

异步

降低耦合性。    将业务分为多个阶段,用共享数据的方式进行协作。 单机可以用多线程共享内存队列的方式,即先业务写入队列,后面线程进行消费。  分布式通过分布式消息队列实现。典型是生产者消费者模式。
还有如下的特性:
- 提高系统可用性。    消费者故障,消息队列会存起来。系统整体表现无恙, 消费者恢复后继续处理。
- 加快响应速度
- 消除并发访问高峰。   就是不管并发多大,后台都是这样有序的处理着
- 会对用户体验业务流程有影响

冗余

应用集群。数据库备份,主从。灾备

自动化

自动化代码管理
自动化测试
自动化发布         减少代码编译就发布环节带来的问题
自动化监控
自动化告警
自动化失效转移        
自动化降级            拒绝部分请求以及关闭部分不重要的服务
自动化分配资源等等

安全

密码和手机校验码。
网络通信加密
存储敏感数据加密
验证码
XSS攻击
SQL注入
垃圾信息过滤
交易等重要操作进行风控

在新浪微博中的应用

这里写图片描述
系统分为三个层次, 最下层基础服务层,提供数据库、缓存,存储,搜索等。 支撑海量数据和高并发
中间层是平台服务和应用服务层。 核心服务微博, 关系和用户分割成独立的模块。

业务被分层和分割后进行分布式部署, 在部署上可以单机多应用通过不同的端口号提供服务,得到资源利用最大化。 现在更普遍的做法是单机多虚拟机,这样更方便还不用使用不同的端口

早期架构微博使用同步推模式,用户发表微博后系统会立即将这条微博插入到数据库所有的粉丝订阅列表中。
后来改为推拉结合的模式, 先放入队列,然后任务推到在线订阅者。 离线订阅者上线的同时去拉取订阅列表

使用多级缓存。热门和明星用户在所有服务器上, 在线用户近期微博缓存在分布式缓存中。 保证所有刷微博操作都尽量是缓存操作。

多数据中心,技能灾备,又能就近数据访问。通过消息系统在数据中心之间同步

相关文章
|
3月前
|
小程序 Java 数据管理
Java前后端分离架构开发的智慧校园电子班牌系统源码(SaaS模式)
.智慧校园设备管理: 设备管理主要对班级中正在使用的电子智慧班牌进行管理,基本功能包含(开关机状态、班级信息、设备型号、开关机信息、电子智慧班牌截屏信息、教师编号、设备ID、在线和离线状态、电子智慧班牌更新时间等)
40 0
|
3月前
|
设计模式 Linux 程序员
Linux驱动的软件架构(一):驱动的软件设计模式理念
Linux驱动的软件架构(一):驱动的软件设计模式理念
39 0
|
3月前
|
存储 缓存 负载均衡
架构的模式
架构的模式
|
12天前
|
存储 人工智能 架构师
数据库架构模式:分片
本文介绍了数据库分片的概念,以及各自的使用场景,分片可提升可扩展性、性能和高可用性。
|
16天前
|
前端开发 安全 JavaScript
计算机软件从 CS 模式到 BS 架构迁移背后的动因
计算机软件从 CS 模式到 BS 架构迁移背后的动因
21 0
|
25天前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
47 0
|
1月前
|
运维 安全 Linux
LAMP架构调优(八)——Apache Worker模式调优
LAMP架构调优(八)——Apache Worker模式调优
9 0
|
1月前
|
缓存 运维 Linux
LAMP架构调优(七)——Apache Prefork模式调优
LAMP架构调优(七)——Apache Prefork模式调优
19 2
|
1月前
|
消息中间件 存储 缓存
性能基础之大型网站技术架构模式
【2月更文挑战第15天】性能基础之大型网站技术架构模式
69 3
性能基础之大型网站技术架构模式
|
2月前
|
消息中间件 中间件 API
深入探讨微服务架构中的服务通信模式
随着微服务架构的普及,服务间的通信成为了系统设计的关键环节。本文将深入探讨微服务架构中的服务通信模式,包括同步通信和异步通信两大类,并对比其优缺点。我们还将介绍几种流行的通信技术,如REST、gRPC、消息队列等,并分析它们在实际应用中的适用场景。通过本文的阐述,读者将对微服务架构下的服务通信有一个全面而深刻的理解,为选择合适的通信模式提供指导。