专栏名称: caoz的梦呓
caoz的心得与分享,只此一家,别无分号。
分享
今天看啥  ›  专栏  ›  caoz的梦呓

学好存储,删库也不用跑路了

caoz的梦呓  · 公众号  · 科技自媒体  · 2020-03-03 18:38
工作中,我们少不了要接触不同类型的业务系统,它们规模各异,研发过程中的问题也五花八门,但却有一个关键共性,很多企业和团队都遇到过:
 
凡是那些特别难解决、让你付出巨大代价,或损失惨重的技术问题,几乎都可以归为存储系统的问题
 
其实,这个规律不难理解。不论你的系统业务是什么,最终都要落到对数据的管理上,只要最终的“数据”是正确的,剩下的都是小问题;数据错了、丢了,甚至处理不及时,都是损失惨重的大问题,所以,用于承载数据的存储系统就显得非常重要
 
由此可见,存储是系统中最核心、最重要、最关键的组成部分,没有之一

我前文提到的架构设计,抓大放小,其实很多案例也都是存储架构的设计,存储设计的难点在哪里呢?你要兼顾多重诉求。

存储设计的三大目标
 
每个与存储相关的工程师,都应该牢记以下三点。

1、安全
顾名思义,要保障数据的安全性,除了日常运维操作中的安全,还包括意外防范,比如黑客入侵,运维误操作,物理硬件损坏,数据泄露,等等。

删库跑路带来的伤害,大家都看到了,其实还有无数种奇葩灾难的可能,在很多角落默默发生着。

2、性能

快速的响应固然重要,但性能并不只有唯一属性,举例来说,主库负责线上业务响应,从库用于线下商业及数据分析,这是很多公司常见的配置,前者是典型的OLTP场景,而后者是OLAP,可能完全一样的数据库,数据表,数据字段,但索引设计,却会大相径庭。也可能后端会有更加复杂的一些关联操作和中间表,来满足各种数据报表的生成和快速及时的业务诊断。

很多时候,经验不足的设计者往往无法做到统筹兼顾,或者试图用一套存储机制满足所有诉求,就有可能带来灾难性后果。

那么旧文也提过,哪些是核心关键数据,哪些是非核心的状态数据,哪些只是无需长期保存的临时数据,能捋清这里的逻辑,也能在数据存储的配置和设计上,做到有的放矢,部分非关键数据适当降低安全和精度要求,可以数量级提升响应性能。

3、扩展

业务快速发展的时候,最怕数据库设计能力跟不上,因为很多时候,并不是加服务器就可以解决扩容问题,如何进行分布式的数据库设计,曾经是困扰很多快速发展的中小企业的难题。

下面说一下学习存储的难点

1、存储产品杂

我们设计存储系统的时候,往往要熟悉多种存储工具,比如通用的关系型数据库,Mysql是最常见的,比如为了提升响应效率的key value数据结构,类似memcache, redis等等。比如为了满足分布式诉求和负载均衡的各种数据中间件。以及特定场合下具有特定效用的数据库产品,比如Mongodb, Rocksdb等,最近这类不同的开源产品太多了,实话说,很多我也搞不清楚了。
 
你看,我脱离一线几年,很多东西名字都叫不出来了,更不用说掌握了。

特定场景,特定工具,必须能有非常清晰的逻辑和目标,以及对不同产品的特性有足够明确的掌握,才能实现优秀的设计,这就是难点所在。

比如,性能话题。

我以前说过的,为什么做排行榜,最适合的是redis的有序队列,mysql行不行,性能开销会差多少。很多新人对这个就不理解,以前就有热门游戏在这里栽过跟头。

2、场景诉求杂

就像前面提到的,你前面用户响应和后面业务分析,你同样的数据,你的存储结构是不同的。你说数据都在这里,一套结构还不行么?不行。

你为了安全性,你考虑的方案,和你为了性能,你考虑的方案,有时候是互斥的,怎么办,要把数据拆开了分析,这部分强调安全,那部分强调性能。

你看评测某个开源数据库特别强,指标特别高,到你的业务里一放,一塌糊涂,为啥,人家为了追求效率,特定在具体场景下做了最优化,你的场景和人家不一致,反而是负面效应。

就好比,某开源电商平台,为了追求展示效率做的缓存设计,在秒杀场景中成为性能灾难。这就是典型场景不匹配的存储方案。
 
3、底层逻辑难

B+树,哈希,所谓的时间复杂度计算方式。

查询的执行过程分析和每个步骤开销的基本原理。

很多人说我知道查慢查询,啥叫慢查询,我以前讲过,如何优化0.02秒的查询,你说这有啥可优化的,每秒钟几百次请求,几千次请求,你就知道这个优化的价值是什么了。要深刻理解到资源开销的每个细节,才能成为优秀的存储系统设计师。

资深的数据库优化甚至会考虑到硬盘读取性能的原理和瓶颈所在。

一些从业者仅仅学了一些别人的优化案例,然后照搬照抄,不理解底层逻辑,不理解场景诉求,别人那里成功的方法,在他的业务里成为灾难。
 
所以,理论和实践之间也有很大的鸿沟,往往是“懂了一堆道理,却还是写不好代码”。
 
想学好存储,推荐你看看极客时间的《后端存储实战课》。作者是京东资深架构师李玥,之前看过他写的《消息队列高手课》,好评度非常的高。这次他出新课,我也非常支持。

在专栏中,他深入剖析存储技术的核心原理,通过电商存储的 24 个高频问题解决方案,带你了解不同业务场景下的存储选型策略,以及分布式存储领域的前沿技术,带你真正拿下后端存储。
 


👆扫码免费试读
结算时,输入口令「xuecunchu」再减 5 元
到手仅 ¥63,仅限「前 200 人」有效


李玥是谁?

上面也提到了,他是京东零售技术架构部架构师,极客时间专栏《消息队列高手课》作者。他从事互联网研发、架构 10 多年了,曾在浪潮集团、当当网等公司任职架构师相关工作。
 
后来,他加入了京东,负责主导设计新一代京东消息中间件系统,专注于流数据的一致性分发和可靠存储、分布式实时计算、高可用分布式系统架构等技术领域,在此期间,带领团队提升了京东商城相关系统数倍的性能和吞吐量,目前致力于推进京东基础架构技术的创新、对外赋能与开源。


他是如何讲解「后端存储」的?

在专栏中,李玥以电商不同发展阶段的问题场景为蓝本,按照系统的发展过程,将内容分为 3 部分:
 
一、创业篇
重点解决从 0 到 1 的问题,比如:如何低成本高质量地快速构建一个小规模的订单存储系统。
 
二、高速增长篇
关注在高速变化的过程中,系统会遇到的一些共通问题,及其具体的解决方案。比如,如何从单机的存储系统,逐步演进为分布式存储系统;如何在线平滑扩容我们的存储系统。
 
三、海量数据篇
在这部分,将重点解决在高并发、海量数据的情况下,存储系统该如何设计。比如,如何存储海量埋点数据;如何在各种数据库之间,实时地迁移和同步海量数据,等等。
 
看了下目录和部分内容,学完这门课,你不仅能收获案例中那些解决问题的方法,对电商系统架构、存储系统的认知,以及存储系统的设计能力,都会有所提升。更重要的是,你可以深入理解存储系统最通用、本质的技术原理,在工作和面试中活学活用。
 



从我这里订阅,有什么福利?

1.早鸟优惠 ¥68,原价 ¥99
2.结算时,输入优惠口令「xuecunchu」可再减 ¥5,到手价 ¥63,仅限「前 200 人」有效。
3.订阅后分享海报,每邀请一位好友订阅,可得 ¥24 返现,多邀多得,上不封顶。


👆扫码免费试读
 

👇点击「阅读原文」
输入优惠口令「xuecunchu」,
最低价 ¥63 入手,仅限前 200 人
 


今天看啥 -
本文地址:http://www.jintiankansha.me/t/T02ffIBRpN