2.大型网站的架构模式

网站存在着,高并发,海量数据等问题,网站提出了很多解决方案,这些解决方案在被很多网站中重复使用(因为有效,实用)

  1. 横向切割和纵向切割
    横向切割是:分层, 将系统分层:应用层、服务处、数据层
    总想切割是:分割, 将同一层的不同功能和服务切割出来,形成高内聚低耦合,提高并发能力和功能扩展能力

  2. 分布式
    优点
    再好的计算机,也无法与性能一般,多个计算机相抗衡
    分布式意味着 更多计算机完成相同功能,那么并发量更多,可以处理数据越多
    缺点
    会导致 CAP 问题
    分布式事务难以保证,会对业务正确性和流程造成影响
    会因为分布式网站相互依赖,开发管理和维护困难,设计需要量力而行
    分布式的方式
    分布式应用和服务:将分层和切割的模块分布式部署
    分布式静态资源:将静态资源 JS,CSS,图片独立部署,使用独立域名,实现动静分离
    分布式数据和存储:关系型数据库分布式和非关系型数据库分布式
    分布式计算:用户没有直观感受到的计算,例如,搜索引擎索引的构建、数据库数据统计等,这些要进行分布式计算
    分布式事务
    两阶段提交 2PC
    补偿事务 TCC
    分布式锁:
    数据库锁
    Redis锁
    Zookeeper锁
    分布式配置:服务器配置实时更新

集群
提高可用性
一台服务器故障,负载均衡服务器会转移到另一台
提高并发性

缓存
CDN
静态资源,不经常变化的资源,放在运营商服务器上
反向代理
反向代理服务器放在 企业 中心机房,缓存着 网站的 静态资源,无需继续转发到 服务层 即可返回给用户
本地缓存
在应用服务器本地存放着的数据,直接访问本机数据,无需访问数据库
分布式缓存
设计前提条件
数据访问热点不均衡
数据在某个时间内有效,而不是立即失效,否则先访问缓存,就会产生脏读

异步
将业务分为多个阶段,每个阶段通过共享数据进行异步执行
例如分布式系统,使用消息队列实现异步执行
异步消息队列优点
提高系统可用性,当消费者故障,那么不影响生产者,生产者可以继续往队列里装消息
加快网站响应速度
生产者将消息放在队列,不需要消费者及时消费,就可以继续往队列里添加
消除并发访问高峰
如果突然有很多用户同时访问,服务端依次处理,并放到队列,等待消费端服务器依次处理

冗余
当一台服务器宕机,可以利用这台服务器的冗余数据转移到其它服务器上,进行继续运行
例如,数据库定期备份,形成冗余数据,实现高可用
冷备份:定期备份
热备份:主从分离

自动化
发布过程自动化
自动代码管理
自动安全监测
自动化部署
自动化监控
自动化报警
自动化失效转移
……

安全
加密
验证码识别
过滤信息
风险控制

新浪微博的关键技术
分层
分布式部署
集群
同步推送 --> 异步推拉
以前,例如明星分布微博,同时推送到所有粉丝微博上
现在,首先推送到在线粉丝微博上,等到用户上线,自动下拉刷新,或者过段时间推送到手机上
多个数据中心,部署在不同地域的机房
自动化工具
自动化发布
安全
处理僵尸粉,垃圾内容

发布了20 篇原创文章 · 获赞 1 · 访问量 1459

猜你喜欢

转载自blog.csdn.net/weixin_44587666/article/details/89496413
今日推荐