我们用一个做手游的故事来聊聊数据层不断优化提升的演进过程。
10:简单设计
有一天,老板突然说做个山寨版的糖果传奇手游,你接到任务后,分析出游戏的交互频率不大,都是点查询,用mysql能简单搞定。对游戏来说,你很少有机会用orcale这种上流货,mysql是物美价廉的选择。建个表,设好主键和索引,你轻松搞定数据库设计,惬意的泡了杯茶边喝边敲代码。
这里说的“点查询”,是指基于指定主键的查询,例如查询指定用户的信息,因为是基于指定主键,查询结果有限且较少,点查询的效率非常高。另一种叫“面查询”,是基于主键或索引的范围查询,例如查询昨天所有的订单,这种查询虽然有主键或索引,但结果数量不确定,有时处理不好时会出现严重性能问题。
游戏删档内测上线了,用户数不多,请求的响应也很及时,老板拍了拍你的肩膀。
100:数据库调优
游戏上线反响不错,精美的画面给了玩家不少惊喜,更多玩家蜂拥而入,你从监控系统上发现mysql的压力有点大,当初只是对数据库表结构做了设计,现在你开始review数据库优化了:创建表时默认的MyISAM存储引擎换成InnoDB存储引擎,修改mysql参数加大InnoDB的cache,不使用事务提交。
做了这些优化后,db性能提升明显,整个系统跑得很欢,你又惬意的去泡茶了。
1000:分库分表
你们游戏山寨得比较牛叉,用户持续增加,作为有风险意识的你,肯定不会等到系统告警了才去优化,于是你在想更大访问量时怎么办?
单台db的性能有极限,必须有扩展到多台db的能力,于是你重新修改了数据库表结构和后台代码,把主键按规则做了分库分表,目前用户增长迅猛,假定单台db存放500万用户,最终可能有上亿用户,那么可能有20台DB,于是你分了32个库,每个库里有32张表,共1024张表。
初始时这1024张表都在一台db上,当用户数增加时,分裂成2台、4台、8台、16台。涉及好分库分表策略后,db压力能通过扩容来解决,你放心了。
关于读写分离
有不少介绍mysql读写分离已提升mysql并发性能的文章,在游戏项目中用得比较少,主要是读写比例的原因。像网站那种读多写少的应用场景可以采用读写分离,而游戏的读和写差不多多,读写分离的用处不大;而且用户可能是海量的,分多台db是常事,如果分库后再搞读写分离,整个db就过于复杂了。
mysql读写分离是基于mysql主从复制功能的,游戏项目如果对数据安全有要求,一般会用mysql主从复制功能做热备。如果项目有GM或经分系统需要直接查询mysql,往往也是在slave上查询,不直接操作master,避免低效查询降低master性能影响业务。这种做法也是OLDP(On-Line Transaction Processing,联机事务处理)和OLAP(On-Line Analytical Processing,联机分析处理)分离的常见做法。
10000:缓存
有了分库分表来平滑扩容,项目安稳了较长一段时间,直到某一天,运维说db机器增长比较快,4个月就增加到了64台(master+slave),希望后台能提升单台db的性能,以应对后续的业务增长。
OK,你祭出你留的后手——memcached,麻利的操起机械键盘,咔哒咔哒的改起后台的代码,加入缓存逻辑:读的时候从memcached读,如果没有就从mysql查询并写入memcached。写的时候同时写入mysql和memcached。
好吧,你终于使用了NoSQL。NoSQL泛指非关系型数据库,是Not Only SQL(有多少人和我一样搞错的~~!)。
搞定这个问题后,成本下降了,项目收入可观,拿奖金好happy!
未完待续~
相关推荐
尽在双11:阿里巴巴技术演进与超越,尽在双11:阿里巴巴技术演进与超越尽在双11:阿里巴巴技术演进与超越尽在双11:阿里巴巴技术演进与超越尽在双11:阿里巴巴技术演进与超越尽在双11:阿里巴巴技术演进与超越尽在...
从数据上看,中国教育信息化经费总体规模已达到3000亿元人民币以上,并且未来将继续呈现增长态势。 二、教育信息化的发展阶段 教育信息化的发展可以分为两个阶段,即信息化1.0阶段和信息化2.0阶段。在信息化1.0...
数据仓库和数据湖是两种不同数据管理策略的代表,它们反映了数据架构的演进历程。数据仓库自20世纪70年代随着关系数据库的发展而兴起,主要目标是为决策支持提供结构化的、一致的和历史的数据。数据仓库通过ETL...
质量护航的发展之道:TIC行业的演进规律与制胜法则.pdf 质量护航的发展之道:TIC行业的演进规律与制胜法则.pdf 质量护航的发展之道:TIC行业的演进规律与制胜法则.pdf 质量护航的发展之道:TIC行业的演进规律与制胜...
在早期,豆瓣可能采用了传统的三层架构,包括前端展示层、业务逻辑层和数据访问层。随着用户数量的增长,这种架构会面临性能瓶颈,于是豆瓣可能会引入负载均衡和分布式服务来提升系统处理能力。例如,通过Nginx进行...
【研究报告:实时架构演进】 本研究报告探讨了实时架构的发展历程,从无到有,再到逐渐成熟和完善。报告中以“饿了么”为例,展示了其实时架构在短时间内实现高速发展的过程,以及面临的挑战和解决方案。 一、从0...
中国联通 CUBE-NET 2.0+:边缘网路演进白皮书
区域经济学-课件第四讲:产业结构演进.pptx
当前AI算法的发展正转向以大模型为主的数据依赖,丰富、高质量数据集是AI产业持续向前的核心基础。伴随公开数据集的逐步耗尽,借助算法实现数据合成,以及垂类领域专有数据集将是企业后续差异化优势主要来源,同时...
* 当前AI算法的发展正转向以大模型为主的数据依赖,丰富、高质量数据集是AI产业持续向前的核心基础。 * 借助算法实现数据合成,以及垂类领域专有数据集将是企业后续差异化优势主要来源,同时数据使用合规、用户隐私...
数据中台是现代企业信息化建设中的重要组成部分,它旨在整合企业内部的各种数据资源,通过统一的数据管理和处理,为业务提供高效、便捷的数据支持。在菜鸟网络(Cainiao Network)的发展过程中,数据中台扮演了关键...
在探讨陆增义在GOPS全球运维大会2019·深圳站所介绍的阿里巴巴智能数据中心AIOps演进之前,我们首先要明确几个核心概念。 首先,AIOps指的是通过人工智能(AI)技术与运维实践相结合,对运维工作进行优化。它能够...
数据仓库和数据湖是现代企业数据管理的两个关键概念,它们代表了数据架构从传统到现代的演进历程。本文将深入探讨数据仓库的历史沿革、核心概念以及数据湖的出现,来阐述这一演变过程。 数据仓库历史沿革始于1970...
5G移动通信系统:从演进到革命epub格式;
该系统建设方案涵盖了主数据管理的总体规划方法、业务解决方案、信息系统解决方案、主数据实施业务流程、主数据管理内容、主数据规划、数据模型、元数据管理、主数据质量管理、主数据规划等方面。通过实施主数据管理...
本篇报告由川财证券有限责任公司制作,重点关注了数据中心光互连技术的演进以及硅光集成在行业内的发展趋势。报告指出,数据中心光互连技术的发展已经得到业内的广泛共识,尤其在高端制造和科技行业物联网领域。 在...
菜鸟数据中台技术演进之路 菜鸟数据中台是阿里巴巴集团旗下的数据中台平台,旨在提供数据运营、数据服务和数据管理等功能,帮助企业实现数字化转型和数据驱动的业务增长。以下是菜鸟数据中台技术演进之路的详细知识...
字节跳动数据血缘架构演进之路是字节跳动数据链路中的一部分,旨在提供数据血缘能力,以帮助用户找数据、理解数据、以及使数据发挥价值。数据血缘架构的演进之路可以分为三个阶段,每个阶段都有其特点和改进之处。 ...