五毛QQ项目记

问题与挑战:某公司为了实现某马总造福全人类,红旗插遍全球的宏伟目标,为应对后续用户量激增的问题。特别安排了一次针对全体用户的秒杀活动:于XXXX年XX月XX日XX时XX分XX秒开始的秒杀五毛钱一百个QQ币的活动。每个账户仅限一次,总数1000万个。公司董事会经过有关人员书面提议,大家集体开会讨论,经过慎重决策,确定该项目正式立项,成立项目管理委员会,开始项目招标流程。我们成功中标该项目。在相关项目合作手续办理完成以后,我们成立了五毛QQ项目组。

立项之初,我们分析了项目特点,认识到项目建设难度大。由于业主方是一个广受欢迎的社交大厂,可以预见到五毛QQ一旦发布,巨大的用户群体会引来海量用户注册、登录、秒杀,享受各种服务,包括不限于网上商城,QQ空间,QQ游戏,QQ博客等。因此甲方公司对于整体系统性能要求极高。我们必须在架构设计时保持严谨、正确、科学的设计方法,才能对项目的功能和质量目标起到保障作用。因此我们决定运用分布式存储,微服务,负载均衡,DNS等多种分布式架构理论及设计方法,结合分层设计的架构思想,力争实现业主方提出的1000万最大并发用户、3000万tps、延时最高不超过500ms的秒杀场景的质量需求。下文将从系统分层的角度,详述在该项目中如何实施分布式架构方法。

一、分布式存储

由于存储层的各项性能指标将决定整个系统的性能,因此存储层的架构设计至关重要。本项目对分布式存储数据进行了分区,分区方式有水平分区和垂直分区两种。本项目对分布式存储数据进行了分区,分区方式有水平分区和垂直分区两种。水平分区是按照一定的分布策略,将数据分布到不同的节点(库,表等)去存储,常见的策略有范围分区、列表分区(枚举分区)、hash分区。垂直分区是按照业务字段进行分类并拆分表格,分布存储到不同的节点。采用分区方案后,针对本项目读多写少,我们对每个存储节点设计成“主从集群”方式实现“读写分离”和数据的“多节点备份”。这样的设计方案适用于性能要求较高的大规模存储系统,既提升了系统的整体并发性、数据存储的高可靠性,又保证了数据的可靠性。

在该项目中,3000万tps的订单数量数据要高效地、可靠地保存到数据库,只靠单点集中式数据库是无法实现的。业务方要求性能的同时,也对存储服务的可用性、数据存储的可靠性提出了需求,例如可用性要达到99.9999%,数据丢失率要小于0.00001%,因此分布式存储的架构方案是该项目的不二之选。我们采取的措施如下:

(1)确定基础技术的选型。我们选用MySQL开源数据库作为基础构件,来搭建分区的每个节点。在每个节点使用两个MySQL组成“主从复制集群”,通过MySQL的复制,保证两者数据的一致性。当主库出现问题时,自动化执行“主从切换”,升级从库为主库,继续提供数据读写服务,保证两者数据的一致性。当主库出现问题时,自动化执行“主从切换”,升级从库为主库,继续提供数据读写服务,保证可用性。

(2)确定分区策略。为了确保数据存储的均匀性,采用了hash的分布策略。对每一个订单的关键信息进行hash运算,并对节点数进行取模后,得到该订单应该归属的存储节点。

(3)确定分区数量。经过负载测试,我们得到每个存储节点上的MySQL主从集群在16核32G内存500G普通SSD磁盘的配置下,在可接受的延时范围内,能够达到3万的tps的性能指标。因此我们决定用1000个分区节点来达到3000万tps指标。

(4)确定透明性等级。为了让应用层更方面的访问数据库,我们选用了Sharing Proxy数据库代理构件,向应用层屏蔽了存储层的细节,达到了“分片透明性”登记。这样应用层访问分布式数据库时,就像访问单点数据库一样简单。

在落实这些策略以后,我们满足了客户所要求的数据存取性能指标,为整个系统的质量达标奠定了基础。

二、微服务化

“微服务化”主张将传统的单体应用拆分成一组小的服务,服务之间互相协作,实现务功能。每个服务运行在独立的进程中,采用轻量级的通信机制协作,保证了每个小服务的封装性、可重用性、易维护性、易扩展性,用以解决业务的复杂性问题。拆解出来的多个小服务有利于实现系统的高并发、高性能、高可用性。

应用层架构需要满足业主方提出的最大1000万并发用户指标。因此我们采用了微服务设计方案,微服务能提供服务的弹性扩展能力,以及并发的扩展能力。业务上我们选用Java的Spring框架,来实现面向用户的业务服务,把电子商城的订单、支付、防伪、溯源,封装成Web Service。在3000万tps的模拟用户压力测试下,不断调整和优化微服务的数量,让应用层的整体资源使用率保持在75%左右,由此确定了各业务微服务的集群数量。

三、负载均衡

通常接入层都会有一个Web服务器,它首先接受客户端的请求,然后将请求传递给应用层的某台服务器去处理。此时它就充当了“负载均衡”功能,决定如何选取应用服务器。

常见的负载均衡策略有轮询法、随机法、源地址哈希法等静态策略,还有最小连接数法、最快响应速度法动态策略。它对于整个系统的分布式架构具有”导流”的作用,也可以提供”限流””熔断”等高级负载均衡策略。

本项目中,应用层拥有庞大的应用层服务器,需要在接入层选用高性能的Web服务器,来充当负载均衡器。经过仔细研究分析和调研,我们最终选择了Nginx来担当Web服务器,并选取了最小连接数法作为负载均衡策略。这可以让每个应用层服务器获取平均网络连接数,使得每个服务的响应用户数基本相等,从而尽可能地提高应用层服务器的利用效率。

在该项目中,由于有秒杀业务压测的场景,所以为了避免单机房的流量瓶颈,更靠近用户来提供服务。由此,我们采用了建设多机房的方案,我们在北京,上海,武汉,深圳,贵阳五地建设了5个机房,分别服务华北、华东、华中、华南、华西的用户。每个机房都有两个接入IP,全部绑定同一个域名。DNS会将域名解析为离访问用户最近的IP地址,这样就可以把全国的用户按照地理位置分配给不同的机房,从而实现更高层面的”负载均衡”。

系统在测试过程中,我们使用漏扫工具发现不少的系统安全漏洞。因此,我们采取了一系列措施提升系统的安全性,例如采取支持HTTPS的传输协议,通过SSL链路实现数据防篡改、数据加密等功能。采用堡垒机监控平台的运维活动,审计所有的运维操作,实现操作系统、数据库、应用等日志统一采集和分析处理。同时充分将代码审查、漏洞扫描、渗透测试等安全检查工作贯穿于维护活动中。

得益于各层面分布式架构方案的综合实施,”五毛QQ”项目质量指标顺利达成。

问题:

1. 如何保障该项目的商业收益?拉新与留存的思考?最重要的3个点?思考过程?

2. 对于该设计您有什么好的想法?您认为最重要的3个点是什么?您是基于什么样的权衡层面来进行思考的,您的权衡过程是什么?

3. 如何保证每个人只能薅一次羊毛?

4. 这个系统的可靠性,安全性能有什么更好的方案,请详述最重要的3点,以及您是怎么思考的?

5. 后续业务的挑战与演化的方向,以及应对最重要的3个点是啥?

6. 马总,这个活动我们打算啥时候开展啊?2024年春节可以不?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/160783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle面试相关的,Oracle基本操作的SQL命令

文章目录 数据库-Oracle〇、Oracle用户管理一、Oracle数据库操作二、Oracle表操作1、创建表2、删除表3、重命名表4、增加字段5、修改字段6、重名字段7、删除字段8、添加主键9、删除主键10、创建索引11、删除索引12、创建视图13、删除视图 三、Oracle操作数据1、数据查询2、插入…

ubuntu 20.04如何切换gcc/g++/python的版本

ubuntu 20.04如何切换gcc/g/python的版本 1 安装gcc/g/python2 设置gcc/g/python的备选项3 选择当前系统要使用的gcc/g/python版本3.1 切换gcc/g/python版本3.2 切换示例 当系统同时存在gcc-9以及gcc-10时该如何切换让当前的系统gcc版本指向gcc-9或是gcc-10呢?g也同…

Connect-The-Dots_2

Connect-The-Dots_2 一、主机发现和端口扫描 主机发现,靶机地址192.168.80.148 arp-scan -l端口扫描 nmap -A -p- -sV 192.168.80.148开放端口 21/tcp open ftp vsftpd 2.0.8 or later 80/tcp open http Apache httpd 2.4.38 ((Debian)) 111/tcp …

循环队列详解!!c 语言版本(两种方法)双向链表和数组法!!

目录 1.什么是循环队列 2.循环队列的实现(两种方法) 第一种方法 数组法 1.源代码 2.源代码详解!! 1.创造队列空间和struct变量 2.队列判空 3.队列判满(重点) 4.队列的元素插入 5.队列的元素删除 …

GIT实践与常用命令---回退

实践场景 场景1 回退提交 在日常工作中,我们可能会和多个同事在同一个分支进行开发,有时候我们可能会出现一些错误提交,这些错误提交如果想撤销,可以有两种解决办法:回退( reset )、反做(revert) keywords:reset、rev…

2023软件测试的4个技术等级,你在哪个级别?

最近,我们讨论了软件测试工程的的分级,大家都贡献了自己的想法,对于大家来说,软件测试人的分级其实也代表了我们的进阶方向,职业发展。总体来说,测试工程师未来发展有三个方向: 技术精英 行业专…

层次分析法--可以帮助你做决策的简单算法

作用 层次分析法是一个多指标的评价算法,主要用来在做决策时,给目标的多个影响因子做权重评分。特别是那些需要主观决策的、或者需要用经验判断的决策方案,例如: 买房子(主观决策)选择旅游地(…

android11 申请所有文件访问权限

Android 11 引入了强制执行分区存储的限制,导致应用默认不能访问外部文件。 针对以前涉及较多文件的操作,可采用申请所有文件访问权限的方式来解决这一问题,实现方式如下。 (虽然这样做安全性低,官方并不推荐这样&…

preplexity test

Preplexity test can use model claude and gpt-4, feel speed is ok and only for $10 with coupon (below give a link). Feel ok to try reference link: https://perplexity.ai/pro?referral_codeV6UOS5PH

Shell判断:模式匹配:case(三)

系统管理工具箱 1、需求:Linux提供的丰富的管理命令,用户管理,内存管理,磁盘管理,进程管理,日志管理,文件管理,软件管理,网络管理等等数十个工具包。如果你能通过shell编…

【代码随想录】算法训练计划30

【代码随想录】算法训练计划30 1、51. N 皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,…

微信API:探究Android平台下Hook技术的比较与应用场景分析

微信API:探究Android平台下Hook技术的比较与应用场景分析 正文: 在Android平台开发中,Hook技术是一种常用的技术手段,用于在运行时修改应用程序的行为。下面对一些常见的Hook技术进行比较,并分析它们的适用场景和优缺…

信息系统项目管理师论文

软考官网:中国计算机技术职业资格网 (ruankao.org.cn) 2020年 2020年下半年试题一:论信息系统项目的成本管理 2019年 2019年下半年试题一:论信息系统项目的整体管理 2019年下半年试题二:论信息系统项目的沟通管理

PCI5565反射内存网技术的应用研究

随着嵌入式与通信技术的发展,数控系统经历了由传统的单处理器的集中式体系结构到开放式体系结构,再到多处理器的分布式数控系统体系结构的发展过程。分布式数控系统以高精、高速的加工特征为发展核心,同时以达到异构网络间信息的无缝融合&…

分布式锁3: zk实现分布式锁

一 zk 实现分布式锁 1.1 zk分布式操作命令 1.指令: ls / get /zookeeper create /aa "test" delete /aa set /aa "test1" 2..znode节点类型: 永久节点:create /pa…

优秀智慧园区案例 - 上海世博文化公园智慧园区,先进智慧园区建设方案经验

一、项目背景 世博文化公园是上海的绿色新地标,是生态自然永续、文化融合创新、市民欢聚共享的大公园。作为世博地区的城市更新项目,世博文化公园的建设关乎上海城市风貌、上海文化展示、城市生态环境、市民游客体验、上海服务品牌等,被赋予…

依托数据、平台、知识增强等优势 夸克大模型大幅降低问答幻觉率

“大模型时代,夸克有巨大机会创造出革新性搜索产品。”11月22日,夸克大模型公布了其面向搜索、生产力工具和资产管理助手的大模型技术布局。数据显示,夸克千亿级参数大模型登顶C-Eval和CMMLU两大权威榜单,夸克百亿级参数大模型同样…

电大搜题——让学习变得轻松高效

作为一名现代学者,您一定时刻关注着教育领域的进展和创新。今天,我将向大家介绍一个名为“电大搜题”的神奇工具,它将为您的学习之路带来一场完美的革命。 在快节奏的现代社会中,学习已经成为每个人追求成功的必经之路。然而&…

【数据结构】动态顺序表详解

目录 1.顺序表的概念及结构 2.动态顺序表的实现 2.1创建新项目 2.2动态顺序表的创建 2.3接口的实现及测其功能 2.3.1初始化 2.3.2尾插 2.3.3头插 2.3.4尾删&头删 2.3.5打印&从任意位置插入 2.3.6删除任意位置的数据 2.3.7查找 2.3.8销毁顺序表 3.结语 He…

【交易误区】初学者常犯的MT4外汇交易错误有哪些?

作为初学者,踏入外汇交易市场时,往往会陷入一些常见的误区,导致交易效果不佳甚至遭受损失。在本文中,我将列举并解释五个初学者常见的MT4外汇交易错误,并提供相应的解决方案,帮助您避免这些错误&#xff0c…