后端存储实战课
李玥
美团高级技术专家
44005 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
结束语 (1讲)
后端存储实战课
15
15
1.0x
00:00/13:03
登录|注册

开篇词 | 从今天起,换种方式学存储

讲述:李玥大小:10.45M时长:13:03
技术原理的掌握
存储系统的认知和设计能力
解决具体问题的方法
海量数据篇
高速增长篇
创业篇
不同规模系统的问题
学以致用
电商系统的代表性
选择合适的存储系统
存储系统种类繁多
方法、技巧和经验
优化存储性能
存储系统性能瓶颈
难用的解决方法
难用的存储系统
数据对象存储问题
立Flag
留言区提问
学习态度
持续丰富自己
技术的发展
学习收获
课程设计
电商系统作为案例
学习方式
理论知识和概念
实战、问题导向
难用
存储系统的核心地位
数据管理
管理信息系统
京东
创业团队
互联网行业
传统IT行业
学习过程中的互动
技术学习的态度
课程内容
学习存储的最佳姿势
存储系统的特点
存储系统的重要性
职业经历
作者:李玥
从今天起,换种方式学存储

该思维导图由 AI 生成,仅供参考

你好,我是李玥,《消息队列高手课》专栏的作者,目前在京东任职架构师。这是我在极客时间上的第二门课程,很高兴在这里遇见你。
在十多年的开发者职业生涯中,我的从业经历应该算是比较丰富的。在传统 IT 行业,做过非常多的企业级 ToB 的系统;转战互联网后,我又曾经带领创业团队体会过从 0 到 1 创业的艰辛,见证过互联网高速增长的高光时刻,也经历过京东数年大促的洗礼。
在工作过程中,我接触过很多系统。不同的系统,它的业务不一样,有做社交的,有做电商的,还有做内容的。系统的规模也不一样,有很小规模的系统,也有像 BAT 这样的巨无霸系统。在构建这些系统时,都会面临五花八门的问题。但总结下来我发现一个“神奇”的规律:
凡是那些特别难解决的、让你付出巨大代价的,或者是损失惨重的技术问题,几乎都可以归为存储系统的问题。
这个规律其实并不神奇,它是有原因的。
你可以想一下,我们开发的各种业务系统,几乎都是 MIS 系统,中文叫“管理信息系统”,有的大学还有这个专业。管理信息系统这个词的含义就是字面的意思:管理信息的系统。这里面的信息是什么?对,其实就是数据。不管你的系统业务是什么样的,最终都要落到对信息的管理,或者通俗点儿说,你系统的业务功能最终的结果就是数据。
只要这个数据是正确的,剩下的都是小问题。数据错了、丢了,甚至数据处理不及时,这些都是损失惨重的大问题。
所以用于承载数据的存储系统就显得非常重要,如果说,你能构建一个安全可靠、快速稳定的存储系统,基于这个基础之上构建的业务系统,显然就让人放心多了。
所以说,存储是系统中最核心、最重要、最关键的组成部分,没有之一。

你要关注存储的哪些特点?

我们常用的存储系统有很多,有单机的也有分布式的,有数据库、文件系统,还有一些介于二者之间的,种类非常多。无论是什么样的存储,比如 MySQL、Redis、ElasticSearch 等等,它们都有几个共同的特点。
第一个特点是难用怎么难用呢?对于应用程序来说,存储无非就是帮我们安全可靠地保存数据,在我需要的时候能快速读出来也就可以了。很遗憾,几乎没有存储系统能满足这么简单的要求。
有一个非常形象的比喻:我开着车去商场购物,到了停车场发现这个停车场不能存车,只能存零件。我必须自己把车拆了,然后把这些零件分门别类打上标签,存放到停车场货架上,走的时候自己再把零件取出来把车组装起来。
听起来很可笑是吧,你想想咱们用的这些存储系统,不就是这样吗?我们应用程序里管理的数据都是对象是吧?你告诉我哪个存储系统能存对象?没有吧?
拿 MySQL 举例,我要存取对象,必须把对象转换成 MySQL 表中的行,还得写 SQL 语句才能存取。是不是很难用?难用你还不得不用,并且还得把它给用好了,这里面有很多的方法、技巧和实践经验需要学习掌握。
第二个特点是慢。最近几年的技术圈,分布式存储这块儿非常繁荣,你可以看到过一段时间就有一个新的数据库诞生了,不管它们功能怎么样,无一例外,都说自己的有多快,性能多好,顺便把像 MySQL 这样的老家伙拉出来,做个性能对比测试,吊打一遍。
“一个人炫耀什么,说明内心缺少什么”,这个道理放到技术圈同样适用,不断有新的存储刷新性能记录,恰恰说明了存储系统性能不能让人满意。
一个经过良好优化过的业务系统,它的性能瓶颈一定是存储。从性能角度上来说,存储系统就是整个系统中最短的那块儿板子,存储系统有多慢,你的整个系统就多慢。如何优化存储性能,从而让整个系统运转如飞,这里面同样有很多的方法、技巧和经验需要掌握。
第三个特点是杂。存储这块儿不像其他的成熟的技术领域,基本上都是一两种方案包打天下,比如 Java 开发,基本上就被 Spring 统治了,再比如 Web 容器,静态用 Nginx,动态 Tomcat。但存储这块儿却不是这样的,就拿真正广泛应用在生产系统中的存储来说,你看有多少种?
MySQL、Redis、ElasticSearch、HBase、Hive、MongoDB、RocksDB、CockroachDB 等等,这些存储还真就是谁都替代不了谁,每一种都有它擅长的地方,有它适用的场景,当然也有很突出的短板。如何根据业务系统的特点,选择合适的存储来构建我们的系统,这也是需要学习和掌握的。

学习存储的最佳姿势是什么样的?

既然存储有“难用、慢、杂”这几大特点,学习起来就更需要注意方法。如何来学最高效呢?我认为是实战,从问题入手。
存储涉及到很多理论知识和概念,比如各种数据结构、哈希、树以及它们的时间复杂度等等,这些内容往往都是偏数学范畴的一些知识,学起来不容易理解和记忆。并且,理论和实践之间往往存在着非常大的鸿沟,往往是“懂了一堆道理,却还是写不好代码”。
所以,我在极客时间上开了第二个专栏讲存储,我们只讲实践中大家都会遇到的问题,讲这些问题的解决方法,同时在这里面贯穿一些知识和原理。通过这样的学习方式,既可以快速地帮你解决实际问题,同时还能提升你的技术能力。
在接下来的课程中,我会带你一起,从 0 到 1,从小到大,以电商作为场景,讲解不同规模的存储系统应该如何构建
每一节课,我们一起解决一两个实战的问题,比如:为什么明明数据量和访问量不大,MySQL 还是很慢?数据库宕机了怎么办?
为什么选择电商系统来讲呢?因为我熟啊!开个玩笑,当然不只是因为我做过几年电商系统。其实,很多培训学校、各种技术论坛都特别喜欢讲电商系统。因为电商这个系统,特别有代表性,特别适合作为案例来研究和学习。
首先,电商系统覆盖面足够广泛特别是是在互联网行业,你会发现几乎所有的互联网公司都在做两个事情:电商和社交。
其次,用电商系统作为案例,直接就能学以致用。即使你面对的业务和电商关系不大,因为电商的系统足够复杂,你在其他业务中可能遇到的技术问题,大多数在电商系统中基本都会遇到,一样有借鉴的意义。另外,电商这个业务领域对所有人来说都很熟悉,拿它作为案例基本上不需要再讲解业务知识,我们可以快速地专注于技术问题本身。
即使是同样一个电商系统,不同的规模,它需要解决的问题也不一样。不少做技术的同学崇尚于海量数据和高并发,认为只有大厂那些高并发、海量数据的核心或者是底层存储系统,才是真正“有技术含量”的系统,能胜任这样系统的开发者,才是真正的技术大牛。这其实是一个技术认知误区。为什么这么说?
因为,并不是规模小的系统就简单,只有大规模的系统才有难度。
创业团队需要快速低成本把系统完整地实现出来,好快速验证它的商业模式;处于高速增长期的团队,它面临的问题是业务高速增长和不断变化,相应的,也要对系统不停地进行升级改造来适应变化,并且要在变化的过程中确保稳定;业务规模足够大的一些大厂,它需要解决的是如何应对高并发、海量数据这些问题。
所以说,不同规模的系统,在技术上没有高低贵贱之分,它们的建设目标不一样,面临的挑战不一样,需要解决的问题也不一样,对于存储系统的选择、架构设计也是不一样的。
所以,我们的课程设计就是按照系统的发展过程,分成了创业篇、高速增长篇和海量数据篇这三个部分。
在创业篇,我们重点解决从 0 到 1 的问题;比如:如何低成本高质量地快速构建一个小规模的订单存储系统。
在高速增长篇,我们关注在高速变化的过程中,你的系统一定会遇到的一些共通问题,以及该如何应对这些问题。比如说,如何从单机的存储系统逐步演进为分布式存储系统;如何在线平滑的扩容我们的存储系统。
在海量数据篇,我们重点解决高并发、海量数据情况下的存储系统该如何设计的问题。比如,海量的埋点数据该怎么存储;如何在各种数据库之间实时迁移和同步海量数据,等等。
通过学习这门课程,你将收获的不仅是案例中那些解决具体问题的方法,在电商系统架构、对存储系统的认知以及存储系统的设计能力这几个方面,都会有所提升。
更重要的是,通过案例来学习常用的数据库和存储系统的使用和实现,可以总结出存储系统最通用、本质的技术原理。掌握了存储系统的本质之后,不仅会让你在面试时更加从容,而且会让你对存储的理解上升一个层次,从“知道怎么用”,升级为“知道为什么这么用”,最终做到活学活用。
在极客时间的一段新旅程即将开始,在开始正式学习之前,我还想再说一些我的想法。技术的发展让使用技术变得越来越简单,但是作为有理想有情怀开发者,不能让技术把我们的变得越来越“简单”。我很开心又能同各位同学一起持续地丰富自己,也希望你能不负时光,认真对待这段学习之旅。
在学习过程中,你都可以在留言区提问,我看到会第一时间给你回复。另外,像《消息队列高手课》专栏一样,我也希望你可以在学习之初立一个 Flag。有了目标指引,持之以恒地探索,成功必不会偏航。
好,开始学习吧!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章是一位在京东任职架构师的技术专栏作者分享的经验总结。他强调了存储系统在业务系统中的重要性,并列举了存储系统的特点,包括难用、慢和杂,并指出了这些特点对业务系统的影响。作者提出了学习存储系统的最佳姿势,强调了实战学习的重要性,并介绍了他在极客时间上开设的专栏,以电商系统作为案例,从0到1讲解不同规模的存储系统应该如何构建。他指出不同规模的系统在技术上没有高低贵贱之分,需要解决的问题也不一样,对于存储系统的选择、架构设计也是不一样的。通过学习这门课程,读者将不仅收获解决具体问题的方法,还会在电商系统架构、对存储系统的认知以及存储系统的设计能力等方面有所提升。最后,作者鼓励读者在学习过程中提问,并希望读者能在学习之初立一个Flag,持之以恒地探索。

2020-02-2661人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端存储实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(41)

  • 最新
  • 精选
  • 业余爱好者
    后端一般是个分布式系统。计算是分布式的,所以需要有负载均衡组件。存储是分布式式的,所以有各种分库分表的库或中间件,以及比较热门的分布式数据库。可以看出,存储比计算要复杂,也是后端的重点与难点。 搞技术的一般都比较抵触业务,但是技术是为业务服务的。两者也并不对立。甚至可以说,技术从某种程度上说也是一种业务,是各种业务的共性部分。因为不管什么系统本质上就是在计算,然后积累数据。技术就是"元业务"。学习就要学习这些通用的,底层的技术。 电商是经济化,电子化时代非常重要的业务,满足人类的经济需求。社交满足政治需求。极客时间满足文化需求。电商业务设计的领域以及技术是比较多的,业务上涉及支付,库存管理,物流,技术上,单点登录,缓存,消息队列,负载均衡。所以比较适合用于作为学习技术的背景。 消息队列课虽然买的早,但是没跟上节奏,可能是因为工作中没有应用场景。 这次的后端实战课一定要跟上节奏,以点带面,以练带学,拿下后端存储。(顺便要把消息队列课程中没跟上的内容补上)电商涉及的相关业务也要顺便弄个明白。

    作者回复: 👍👍👍

    2020-02-26
    3
    49
  • 梨还羽
    Elasticsearch不就是存对象的吗?

    作者回复: 是的,已经非常接近应用中的对象了,这也是ES越来越受欢迎的原因之一吧

    2020-03-05
    8
  • aoe
    老师,MongoDB可以看做是直接存取对象吗?不用把车拆成零件。

    作者回复: 单个对象来看,别说还真是。集合和对象嵌套这种复杂的情况,还得咱自己拆装。

    2020-02-27
    3
    6
  • L
    浏览了课程大纲,这些都是我工作中遇到的问题,公司里没有人能指点一二,自己的知识储备有限,总是百思不得其解,终于等到这门课程,期待自己打开新思路。

    作者回复: 希望你通过学习能有所收获。

    2020-03-01
    4
  • Sam_Deep_Thinking
    好专栏,感谢作者的分享。

    作者回复: 感谢,希望这个专栏能帮到你。

    2020-05-11
  • 业余草
    求代码,求实战,少讲理论。。。
    2020-02-26
    14
    66
  • 何妨
    业务代码好不好写,全看数据库设计存储设计的好不好,停车场的例子太真实了
    2020-02-27
    20
  • FATMAN89
    老师这次的大头照再也不像黄渤了,像吴彦祖了,嘿嘿
    2020-02-26
    11
  • Fchen
    「不同规模的系统,在技术上没有高低贵贱之分」是的,没有贵贱之分,但人家就喜欢招聘做过高并发处理过海量数据的人
    2020-02-27
    7
  • 良木
    按时打卡学习,这次老师的照片是极客MM按吴彦祖P的啦~!
    2020-02-26
    3
收起评论
显示
设置
留言
41
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部