当前位置: 首页 > news >正文

大型网站系统架构演化(Web)

大型网站系统架构演化

  • 大型网站系统架构演化
    • 需要关注的维度
    • 涉及的技术
    • 演进过程
      • 单体架构
      • 垂直架构
      • 使用缓存改善网站性能
        • 缓存与数据库的数据一致性问题
        • 缓存技术对比
        • Redis分布式存储方案
        • Redis集群切片的常见方式
        • Redis数据类型
        • Redis 淘汰算法
        • 使用服务集群改善网站并发能力

大型网站系统架构演化

需要关注的维度

高性能高可用可维护、应变、安全

涉及的技术

维度涉及技术内容
架构MVC,MVP,MVVM,REST,Webservice,微服务
并发分流集群(负载均衡)、CDN
缓存MemCache,redis,Squid
数据主从库(主从复制),内存数据库,反规范化技术,NoSQL,分区分表技术,视图与物理化视图
持久化HIbernate,Mybatis
分布存储Hadoop,FastDFS,区块链
数据编码XML,JSON
Web应用服务器Apache,WebSphere,WebLogic,Tomcat,JBOSS,IIS
安全性SQL注入攻击
其他静态化,有状态与无状态,响应式Web设计,中台

演进过程

单体架构

垂直架构

使用缓存改善网站性能

缓存与数据库的数据一致性问题

数据库与缓存数据是否有可能不一致?如何解决?
有可能不一致。
大体思想如下:先写入数据库、再更新缓存

缓存技术对比
工作MemCacheRedis
数据类型简单key/value结构丰富的数据结构
持久性不支持支持
分布式存储客户端哈希分片/一致性哈希多种方式,主从、Sentinel、Cluster等
多线程支持支持支持 (Redis5.0之前不支持)
内存管理私有内存池/内存池
事务支持不支持有限支持
数据容灾不支持,不能做数据恢复支持,可以在灾难发生时,恢复数据
Redis分布式存储方案
分布式存储方案核心特点
主从模式一主多从,故障时手动切换
哨兵模式有哨兵的一主多从,主节点故障自动选择新的主节点
集群模式分节点对等集群,分slots,不同slots的信息存储到不同节点

在这里插入图片描述

Redis集群切片的常见方式
集群切片方式核心特点
客户端分片在客户端通过key的hash值对应到不同的服务器
中间件实现分片在应用软件和Redis中间,例如:Twemproxy、Codis等,由中间件实现服务到后台Redis节点的路由分派
客户端服务端协作分片Redis Cluster模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务solt上。不同的solt对应到不同服务
Redis数据类型
类型特点示例
String(字符串)存储二进制,,最大512M缓存,计数,共享Session
Hash(字典)无序字典,数组+链表,适合存对象。Key对应一个HashMap。针对一组数据存储、读取、修改用户属性
List(列表)Linked List:双向链表,有序,增删快,查询慢;Array List:数组方式,有序,增删慢,查询快消息队列,文章列表,记录前N个最新登录的用户ID列表
Set(集合)键值对无序,唯一。增删查复杂度均为O(1),支持交/并/差集操作独立IP,共同爱好,标签
Sorted Set【ZSet】(有序集合)键值对有序,唯一,自带按权重排序效果排行榜
Redis 淘汰算法
淘汰作用范围机制名策略
使用服务集群改善网站并发能力
http://www.lryc.cn/news/251099.html

相关文章:

  • 三轴加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据
  • Shell循环:whileuntil
  • Redis 安装部署
  • 项目中遇到的半导体公司
  • 汇编:call与ret/retf指令
  • Fiddler抓包工具之高级工具栏中的重定向AutoResponder的用法
  • 如何基于OpenCV和Sklearn库开展数据降维
  • 详解SpringAop开发过程中的坑
  • 【海思SS528 | VDEC】MPP媒体处理软件V5.0 | VDEC的使用总结
  • Kubernetes sample-controller 例子介绍
  • 【C/C++指针】指针*与引用的区别
  • 【ArcGIS Pro微课1000例】0039:制作全球任意经纬网的两种方式
  • 【二叉树】练习题终章
  • flutter开发实战-实现获取视频的缩略图封面video_thumbnail
  • Prompt Toolkit探索:打造交互式CLI应用
  • 【已解决】AttributeError: module ‘gradio‘ has no attribute ‘outputs‘
  • WPF Mvvm模式下面如何将事件映射到ViewModel层
  • C# WPF上位机开发(计算器界面设计)
  • [c]比较月亮大小
  • 【Java 基础】16 泛型
  • Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放
  • Vmware17虚拟机安装windows10系统
  • Golang实践录:读取yaml配置文件
  • oracle sql相关语法
  • el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并
  • 微信小程序显示二维码?
  • JavaWeb开发全流程笔记
  • LLM;超越记忆《第 2 部分 》
  • Python中的加法测试题实现
  • 使用gcloud SDK 管理和部署 Cloud run service