Skip to content

Commit

Permalink
后端存储技术
Browse files Browse the repository at this point in the history
  • Loading branch information
studeyang committed Aug 9, 2024
1 parent 1108afb commit 46f9f75
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions C类/C09-数据存储/后端存储实战.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# 开篇词 | 从今天起,换种方式学存储

不论是在传统 IT 行业,还是在互联网,我们都会接触很多的系统。不同的系统,它的业务不一样,有做社交的,有做电商的,还有做内容的。系统的规模也不一样,有很小规模的系统,也有巨无霸系统。

不同的系统会面临五花八门的问题,但总结下来我发现一个“神奇”的规律:

==凡是那些特别难解决的、让你付出巨大代价的,或者是损失惨重的技术问题,几乎都可以归为存储系统的问题。==

这个规律其实并不神奇,它是有原因的。

你可以想一下,我们开发的各种业务系统,几乎都是 MIS 系统,中文叫“管理信息系统”。管理信息系统这个词的含义就是字面的意思:管理信息的系统。这里面的信息是什么?其实就是数据。不管你的系统业务是什么样的,最终都要落到对信息的管理上,或者通俗点儿说,你系统的业务功能最终的结果就是数据。

只要这个数据是正确的,剩下的都是小问题。数据错了、丢了,甚至数据处理不及时,这些都是损失惨重的大问题。

所以用于承载数据的存储系统就显得非常重要,如果说,你能构建一个安全可靠、快速稳定的存储系统,基于这个基础之上构建的业务系统,显然就让人放心多了。

所以说,存储是系统中最核心、最重要、最关键的组成部分,没有之一。

**存储的特点**

我们常用的存储系统有很多,有单机的也有分布式的,有数据库、文件系统,还有一些介于二者之间的,种类非常多。无论是什么样的存储,比如 MySQL、Redis、ElasticSearch 等等,它们都有几个共同的特点。

第一个特点是难用。

拿 MySQL 举例,我要存取对象,必须把对象转换成 MySQL 表中的行,还得写 SQL 语句才能存取。是不是很难用?难用你还不得不用,并且还得把它给用好了,这里面有很多的方法、技巧和实践经验需要学习掌握。

第二个特点是慢。

一个经过良好优化过的业务系统,它的性能瓶颈一定是存储。从性能角度上来说,存储系统就是整个系统中最短的那块儿板子,存储系统有多慢,你的整个系统就多慢。如何优化存储性能,从而让整个系统运转如飞,这里面同样有很多的方法、技巧和经验需要掌握。

第三个特点是杂。

MySQL、Redis、ElasticSearch、HBase、Hive、MongoDB、RocksDB、CockroachDB 等等,这些存储还真就是谁都替代不了谁,每一种都有它擅长的地方,有它适用的场景,当然也有很突出的短板。如何根据业务系统的特点,选择合适的存储来构建我们的系统,这也是需要学习和掌握的。

**如何学习存储?**

我认为是实战,从问题入手。

每一节课,我们一起解决一两个实战的问题,比如:为什么明明数据量和访问量不大,MySQL 还是很慢?数据库宕机了怎么办?

我们的课程设计就是按照系统的发展过程,分成了创业篇、高速增长篇和海量数据篇这三个部分。

在创业篇,我们重点解决从 0 到 1 的问题;比如:如何低成本高质量地快速构建一个小规模的订单存储系统。

在高速增长篇,我们关注在高速变化的过程中,你的系统一定会遇到的一些共通问题,以及该如何应对这些问题。比如说,如何从单机的存储系统逐步演进为分布式存储系统;如何在线平滑的扩容我们的存储系统。

在海量数据篇,我们重点解决高并发、海量数据情况下的存储系统该如何设计的问题。比如,海量的埋点数据该怎么存储;如何在各种数据库之前实时迁移和同步海量数据,等等。

















0 comments on commit 46f9f75

Please sign in to comment.