首页 > 其他分享 >千万级流量下架构设计

千万级流量下架构设计

时间:2024-02-17 09:03:23浏览次数:26  
标签:架构设计 缓存 架构 读写 流量 故障 千万级 数据库

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

 

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
  • 两地三中心提高可用性,应对地域级风险
  • 缓存服务提高性能和可用性,为数据中心故障做兜底
  • 本地缓存实现去中心化,进一步提高可用性,依赖项故障依然能保证服务独立可用
  架构与思维·公众号:撰稿者为bat、字节的几位高阶研发/架构,努力分享优质技术   作者:Brand 出处:https://www.cnblogs.com/wzh2010/

标签:架构设计,缓存,架构,读写,流量,故障,千万级,数据库
From: https://www.cnblogs.com/Leo_wl/p/18017698

相关文章

  • 架构设计:千万级流量下的数据强依赖降级
    1背景互联网场景下,我们经常会面临一个产品流量从初创时期的小流量到全盛大流量的过程。这时候,原本的架构设计就显得很不合理,变成你追求服务稳定性阻碍。然而这一切并不一定是你的架构能力的问题,而是在小流量场景下,不能过高的去评估容量和架构冗余性,避免造成不必要的资源和维护......
  • 从零开始的直播带货商城APP开发教学:技术架构设计
    在当今数字化时代,直播带货已成为电商行业的一股强劲力量,为商家和消费者提供了全新的购物体验。为了满足这一需求,开发一个功能强大的直播带货商城APP至关重要。本文将从零开始,深入探讨直播带货商城APP的技术架构设计。 一、项目概述直播带货商城APP旨在为用户提供便捷的购物体验,同......
  • 亿级流量高并发春晚互动前端技术揭秘
    前言2022年1月,京东成为央视总台2022年春节联欢晚会独家互动合作伙伴,双方在红包互动、电商等方面展开全方位深度合作。在除夕当天产生691亿次互动,送出15亿元红包好物。如何在这种大规模、高并发的场景下,确保系统的稳定性和性能,为用户提供稳定流畅的互动体验,成为了我们亟待解决的......
  • Nginx配置TCP/UDP流量转发
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}stream{log_formatmain'$remote_addr[$tim......
  • 金融行业多端支付系统强一致性架构设计(下)
    2支付能力的快速接入支付快速接入:设计流程主要目标:屏蔽接入第三方支付平台的复杂度,为业务提供便捷接入的支付的能力。整体交互逻辑:用户下单后,业务线生成生订单的同时请求支付系统,返回携带加密后的收银台链接,业务前端渲染收银台H5链接,之后用户操作都直接与支付系统直接交互,不再经过......
  • 金融行业多端支付系统强一致性架构设计(上)
    到家业务。负责交易系统(提单、支付)以及基础系统(Api网关、定位、地址)等开发工作,通过深入到业务,搭建合理的业务架构。目前主攻降低软件复杂性设计、构建高可用系统方向。0前言线下现金交易,可能抹个零头、少几毛几块都问题不大,但平台上的准确性、一致性,是支付系统的首要指标。互联网......
  • 新零售SaaS架构:促销系统架构设计
    促销业务概述什么是促销?促销是商家用来吸引消费者购物的一种手段,目的是让更多的人知道并购买他们的产品,这样就能卖得更多。促销的方法有很多种,比如,价格优惠、赠品、优惠券、折扣、买一赠一等形式。特别是在新零售行业,促销更加重要,由于新零售是线上和线下结合的,顾客可以在线上看......
  • 拓扑、监控、展示、流量、资产一体化管理,重庆石柱中医院部署智和信通统一运维平台
    县中医院创建于1983年,是集医疗、教学、科研、急救、康复为一体的国家“二级甲等”综合性中医院,其智慧医院建设总体目标是以患者为中心,电子病历为核心,基于医院信息平台,实现全院资源的统一调度与管理,为患者、临床、管理者提供全面的信息支撑服务,进一步改善患者就医体验、提升工作效......
  • 千万级高性能长连接Go服务架构实践
    作者|glstr导读移动互联网时代,长连接服务成为了提升应用实时性和互动性的基础服务。本文主要介绍了百度系内基于golang实现的统一长连接服务。主要从统一长连接功能实现和性能优化等角度,描述了统一长连接服务在设计、开发和维护过程中面临的问题和挑战,重点介绍了解决相关问题和挑......
  • 混合攻击流量对系统安全性的综合评估
    很多针对安全设备的测试仅仅针对安全设备本身的防护,比如防御的漏洞攻击行为、恶意代码是否足够多,能否抵御大流量的L23层DDoS或者应用层的DDoS攻击,却没有考虑是否防御攻击时,一并阻止了正常的业务流量。以下图为例,当为了防御DDoS攻击,限制了某个源IP地址最多只允许10个TCP连接,假如内......