网站架构模式

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

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

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

网站架构模式

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

分层

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

分割

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

分布式

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

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

集群

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

缓存

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

异步

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

冗余

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

自动化

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

安全

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

在新浪微博中的应用

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

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

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

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

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

相关文章
|
2月前
|
负载均衡 应用服务中间件 API
探索微服务架构中的API网关模式
在现代软件开发中,微服务架构已经成为一种流行的设计模式。它通过将复杂的应用程序分解为一组小的、松耦合的服务来简化开发和部署。然而,随着服务数量的增加,如何有效地管理这些服务之间的通信成为了一个挑战。API网关作为微服务架构的关键组件,提供了一个集中式的入口,用于处理客户端请求并将其路由到相应的服务。本文将深入探讨API网关的作用、实现方式以及如何在微服务架构中有效地利用它来优化系统性能和安全性。
42 0
|
23天前
|
分布式计算 负载均衡 API
微服务架构设计原则与模式
【8月更文第29天】随着云计算和分布式计算的发展,微服务架构已成为构建大型复杂应用的一种流行方式。这种架构模式将单个应用程序分解成一组小型、独立的服务,每个服务运行在其自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。本文将探讨微服务架构的基本设计原则、常用模式以及如何有效地划分服务边界。
101 3
|
1月前
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
68 6
|
1月前
|
设计模式 监控 API
探索微服务架构中的API网关模式
在微服务的宇宙里,API网关是连接星辰的桥梁。它不仅管理着服务间的通信流量,还肩负着保护、增强和监控微服务集群的重任。本文将带你走进API网关的世界,了解其如何成为微服务架构中不可或缺的一环,以及它在实际应用中扮演的角色和面临的挑战。
|
20天前
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
41 0
|
20天前
|
前端开发 开发者 C#
WPF开发者必读:MVVM模式实战,轻松实现现代桌面应用架构,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离应用程序的逻辑和界面,提高了代码的可维护性和可扩展性。本文介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定和逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种方式,开发者可以构建更加高效和可扩展的桌面应用程序。
44 0
|
20天前
|
设计模式 测试技术 数据处理
|
20天前
|
负载均衡 监控 JavaScript
探索微服务架构下的API网关模式
【8月更文挑战第31天】在微服务的大潮中,API网关不仅是流量的守门人,更是服务间通信的桥梁。本文将带你深入理解API网关的核心概念、设计要点及其在微服务架构中的重要作用,同时通过代码示例揭示如何利用API网关提升系统的灵活性与扩展性。
|
1月前
|
负载均衡 监控 API
探索微服务架构中的API网关模式
在微服务架构的海洋中,API网关扮演着枢纽的角色。它不仅是客户端请求的接收者,也是各个微服务间通信的协调者。本文将深入探讨API网关的设计原则、实现策略以及它在微服务生态中的重要性。我们将通过实际案例分析,了解API网关如何优化系统性能、提高安全性和简化客户端与服务的交互。
41 4
|
2月前
|
负载均衡 监控 API
探索微服务架构中的API网关模式
【7月更文挑战第30天】在微服务架构的复杂网络中,API网关扮演着交通枢纽的角色,不仅简化了客户端与各微服务的交互,还提升了系统的安全性和可维护性。本文将深入探讨API网关的设计原则、核心功能以及在实际应用中的部署策略,旨在为后端开发者提供一套完整的API网关解决方案。

热门文章

最新文章