-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
64 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 的问题;比如:如何低成本高质量地快速构建一个小规模的订单存储系统。 | ||
|
||
在高速增长篇,我们关注在高速变化的过程中,你的系统一定会遇到的一些共通问题,以及该如何应对这些问题。比如说,如何从单机的存储系统逐步演进为分布式存储系统;如何在线平滑的扩容我们的存储系统。 | ||
|
||
在海量数据篇,我们重点解决高并发、海量数据情况下的存储系统该如何设计的问题。比如,海量的埋点数据该怎么存储;如何在各种数据库之前实时迁移和同步海量数据,等等。 | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|