首页 > 其他分享 >架构设计:千万级流量下的数据强依赖降级

架构设计:千万级流量下的数据强依赖降级

时间:2024-02-13 10:33:25浏览次数:35  
标签:架构设计 降级 缓存 读写 可用性 流量 故障 千万级 数据库

1 背景

互联网场景下,我们经常会面临一个产品流量从初创时期的小流量到全盛大流量的过程。
这时候,原本的架构设计就显得很不合理,变成你追求服务稳定性阻碍。
然而这一切并不一定是你的架构能力的问题,而是在小流量场景下,不能过高的去评估容量和架构冗余性,避免造成不必要的资源和维护人力的浪费。
能做的是为以后的架构演进提供可扩展性准备,让原本强依赖数据存储层的风险可以实现逐层降级。

2 强依赖降级过程

2.1 第一阶:简单流量,读写不分离

如果你的业务刚上线,服务流量很小,那你大概率数据服务会仅部署一个实例,读写也会汇聚在一些。结构如下:
image
这样做的好处是:

  • 小流量场景下资源利用率高
  • 一致性高,不会出现读写顺序和一致性问题

这样做的坏处是:

  • 读写互相影响,一旦出现故障,整体不可用

2.2 第二阶:流量上涨,读大于写,读写分离

大厂内部的评估法则通常流量达到一定规模,并且读写比不低于8:2,否则读写分离的价值不大。结构如下:
image

读写分离这种数据库架构策略,将数据库的读和写操作分散到不同的数据库服务器上。这种策略有助于提高数据库的并发处理能力和整体性能。

读写分离的基本思想是将数据库的读操作和写操作分开处理,通常使用一个主数据库(Master)来处理写操作(如INSERT、UPDATE、DELETE等),而使用多个从数据库(Slave)来处理读操作(如SELECT等)。主数据库会将其更改实时同步到一个或多个从数据库中,确保数据的一致性。

它有如下优势:

  • 负载均衡:分发读操作到多个从数据库服务器,以提高并发处理能力和负载均衡。
  • 监控和故障转移:检测数据库服务器的健康状况,并在主数据库出现故障时自动切换到从数据库。

也存在一些挑战和限制:

  • 主从同步可能会引入延迟,导致从数据版本差异
  • 读写分离也可能增加数据一致性和故障恢复的复杂性

2.3 第三阶:多域流量和稳定性要求高,两地三中心

image

“两地三中心” 是指本地和异地分别建立三个中心,包括本地生产中心、同城灾备中心和异地灾备中心。这种架构旨在确保业务的高可用性和数据的安全性,以应对各种自然灾害或人为因素导致的业务中断。

从图中『核心指标』可以看出,它主要提高了可用性,即使在大规模流量场景下,能够保证系统足够健壮。
详细可以参考笔者这一篇《高可用架构,去中心化有多重要?

2.4 第四阶:使用缓存进行风险降级

缓存的目的主要是兜底,避免持久化数据层出现故障时候的完全不可用。
同时能提高性能和可用性,毕竟高速缓存和磁盘的效率不可同日而语,多了一层保障,可用性也大幅提升。
详细可以参考笔者这边《深刻理解高性能Redis的本质》。

image

2.5 第五阶:去中心化,本地缓存提升可用性

互联网性能演进经常会听到这样一句话:把数据放在离用户最近的地方,即安全又快捷。
无论读取数据库还是读取缓存服务,毕竟是跨节点的,那就存在风险,网络抖动,机房故障都有可能成为故障诱因。
去中心化的本质是在所有依赖项都无法正常运转之后,服务依然独立可用。
详细可以参考笔者这一篇《高可用架构,去中心化有多重要?

这边的做法就是在本地缓存一份刚性数据,允许一定的延迟,但是需要保证服务不被挂起,短时间内(一般4小时为判断标准)服务有依然可用。如下图:
image

3 总结

本文介绍了互联网场景下高流量的数据强依赖的降级演进过程。主要核心点如下:

  • 读写分离保证数据存储单点故障的恢复,如:Master故障,Slave切换成Master;Slave故障,读写汇聚到Master
  • 两地三中心提高可用性,应对地域级风险
  • 缓存服务提高性能和可用性,为数据中心故障做兜底
  • 本地缓存实现去中心化,进一步提高可用性,依赖项故障依然能保证服务独立可用

标签:架构设计,降级,缓存,读写,可用性,流量,故障,千万级,数据库
From: https://www.cnblogs.com/wzh2010/p/17992590

相关文章

  • [CSS] 渐进增强与优雅降级
    渐进增强和优雅降级含义渐进增强:先针对低级浏览器保证基本功能,再针对高级浏览器追加功能;优雅降级:针对那些最高级、最完善的浏览器来设计网站,一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。@supports使用@supports可以查询相关的声明是否能被浏览器支持,然后后续可......
  • [CSS] 渐进增强与优雅降级
    渐进增强和优雅降级含义渐进增强:先针对低级浏览器保证基本功能,再针对高级浏览器追加功能;优雅降级:针对那些最高级、最完善的浏览器来设计网站,一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。@supports使用@supports可以查询相关的声明是否能被浏览器支持,然后后续可......
  • [CSS] 渐进增强与优雅降级
    渐进增强和优雅降级含义渐进增强:先针对低级浏览器保证基本功能,再针对高级浏览器追加功能;优雅降级:针对那些最高级、最完善的浏览器来设计网站,一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。@supports使用@supports可以查询相关的声明是否能被浏览器支持,然后后续可......
  • 从零开始的直播带货商城APP开发教学:技术架构设计
    在当今数字化时代,直播带货已成为电商行业的一股强劲力量,为商家和消费者提供了全新的购物体验。为了满足这一需求,开发一个功能强大的直播带货商城APP至关重要。本文将从零开始,深入探讨直播带货商城APP的技术架构设计。 一、项目概述直播带货商城APP旨在为用户提供便捷的购物体验,同......
  • 金融行业多端支付系统强一致性架构设计(下)
    2支付能力的快速接入支付快速接入:设计流程主要目标:屏蔽接入第三方支付平台的复杂度,为业务提供便捷接入的支付的能力。整体交互逻辑:用户下单后,业务线生成生订单的同时请求支付系统,返回携带加密后的收银台链接,业务前端渲染收银台H5链接,之后用户操作都直接与支付系统直接交互,不再经过......
  • H3C 设备升级与降级固件版本
    H3C设备升级与降级固件版本华三路由器软件版本为Version7.1.064,Release0809P25可通过华三官网下载中调指定版本版本软件下载地址:https://www.h3c.com/cn/d_202006/1300612_30005_40.html下载账号:yx800密码:01230123降级步骤和升级步骤一样已下载的软件版本文件可通过f......
  • VSCode降级 - VSCode远程开发缺少libc
    VSCode自动升级到1.86后提示MissingGLIBC>=2.28!,可是服务器用的是centos7.9,升级glibc还要和gcc绑定到一起,所以还是对VScode降级比较方便这是最后一个可用版本的[updatenote]https://code.visualstudio.com/updates/v1_85其页面上的下载链接如下,重新安装并覆盖就好了Win......
  • 金融行业多端支付系统强一致性架构设计(上)
    到家业务。负责交易系统(提单、支付)以及基础系统(Api网关、定位、地址)等开发工作,通过深入到业务,搭建合理的业务架构。目前主攻降低软件复杂性设计、构建高可用系统方向。0前言线下现金交易,可能抹个零头、少几毛几块都问题不大,但平台上的准确性、一致性,是支付系统的首要指标。互联网......
  • 新零售SaaS架构:促销系统架构设计
    促销业务概述什么是促销?促销是商家用来吸引消费者购物的一种手段,目的是让更多的人知道并购买他们的产品,这样就能卖得更多。促销的方法有很多种,比如,价格优惠、赠品、优惠券、折扣、买一赠一等形式。特别是在新零售行业,促销更加重要,由于新零售是线上和线下结合的,顾客可以在线上看......
  • 千万级高性能长连接Go服务架构实践
    作者|glstr导读移动互联网时代,长连接服务成为了提升应用实时性和互动性的基础服务。本文主要介绍了百度系内基于golang实现的统一长连接服务。主要从统一长连接功能实现和性能优化等角度,描述了统一长连接服务在设计、开发和维护过程中面临的问题和挑战,重点介绍了解决相关问题和挑......