超高并发架构。美国总统选举,要一个选票系统,要100w tps,1000wqps,选票不可篡改,不可重复

本文 的 原文 地址

原始的内容,请参考 本文 的 原文 地址

本文 的 原文 地址

尼恩说在前面:

最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、shopee、百度、网易的面试资格,遇到很多很重要的面试题:

京东场景题:100Wqps 亿级用户的社交关系如何设计?如何查看我的关注,关注我的?

京东场景题: 美国总统选举,要设计一个选票系统,要求 100w tps,1000w qps,选票不可篡改,不可重复,获取我的选票结果,获取最终投票结果。问:接口怎么设计,系统怎么设计

前几天 小伙伴面试 京东,遇到了上面 两个场景题 。

但是由于 没有回答好,导致面试挂了。

第一题的答案如下:

京东场景题:100Wqps 亿级用户的社交关系如何设计?如何查看我的关注,关注我的?

今天尼恩给大家梳理一下第二题:

美国总统选举,要设计一个选票系统,要求 100w tps,1000w qps,选票不可篡改,不可重复,获取我的选票结果,获取最终投票结果。 怎么设计

通过此文,尼恩给大家做一下系统化、体系化的梳理,使得大家内力猛增,可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”,然后实现”offer直提”。

当然,这道面试题,以及参考答案,也会收入咱们的 《尼恩Java面试宝典》V175版本PDF集群,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。

美国总统选举,要设计一个选票系统,要求 100w tps,1000w qps,选票不可篡改,不可重复,获取我的选票结果,获取最终投票结果。

问:接口怎么设计,系统怎么设计

首先,尼恩给大家列三个 业界同规模案例对照

  • 微博 Star 投票(春晚 2 亿用户):RedisBloom 布隆抗 80 W TPS,DB 仅 3 k QPS 二次确认;
  • 支付宝春节红包(7 亿账户):分片布隆 + 异步 DB,峰值 120 W TPS;
  • Google Safe Browsing(30 亿 URL):布隆 + 布谷鸟混合,只读场景用布隆,需更新场景用布谷鸟。

一、选票系统业务分析

1、业务场景与性能挑战

美国总统选举投票及结果查询具有显著的高并发与瞬时峰值特征,集中体现在以下两方面:

100万 TPS 高并发写(最后一分钟高峰) :

大量选民倾向于在投票截止前的最后时刻完成投票,形成典型的**“最后一分钟高峰”**。

假设约有5000万选民在最后一分钟内提交选票,基础计算如下:


峰值TPS = 50,000,000 votes / 60 seconds ≈ 833,333 votes/second

叠加网络延迟、系统重试及跨时区投票等因素,将设计目标定为100万 TPS 具备合理冗余,可应对极端情况下的洪峰压力。

1000万 QPS 极高 并发读(出票后集中查询) :

投票截止后,全球范围内的选民、媒体与机构会同时发起结果查询。

若有1000万用户同时刷新页面,且平均每个页面产生多个请求(总体结果、分州数据、图表等),系统总QPS将轻松达到千万级别。

此外,各类新闻客户端与数据平台的自动抓取行为会进一步加剧读取压力。

下图概括了投票与结果查询的核心流程及系统所面临的高并发场景:

2、核心接口与功能

系统需提供以下三个核心接口以满足基本业务需求:

接口名称 方法 路径 说明
提交投票 POST /api/v1/vote 处理选票提交,确保数据正确性与合法性,是系统最核心的写入接口。
查询个人投票结果 GET /api/v1/votes/{voter_id} 允许选民通过身份标识查询自己的投票记录,确保投票透明性与个人可追溯性。
查询选举结果(实时统计) GET /api/v1/results 向授权用户或系统提供实时统计结果,支持按地域、候选人等多种维度进行聚合查询。

3、关键业务要求

系统设计必须满足以下四项关键业务要求:

(1) 不可篡改:选票一旦提交并确认,其内容应成为只读状态,任何个体(包括系统管理员)均无法修改。

(2) 不可重复:必须通过业务与技术手段严格保证“一人一票”,彻底杜绝任何形式的重复投票。

(3) 选票可追溯:每位选民都应能查询到自身的投票记录,系统需提供清晰、可验证的审计链路。

<

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值