【Geekband】系统设计.md
第一次接触大数据系统相关知识,完全零起点,共参考。
第一周
1. 分布式系统
2. CAP理论
3. 数据库系统
3.1 ACID与BASE
3.2 具体结构设计
4. 异步通信
5. 一致性定义
第二周
1. 系统设计基本意识
2. Hadoop与MapReduce
2.1 Hadoop
2.2 MapReduce
2.3 BigTable
This is Google's scalable database. It provides a way to create massive tables of information indexed by a primary key. As of this writing, over 90% of Google's web services are built on top of Bigtable, including Search, Google Earth, Google Analytics, Google Maps, Gmail, Orkut, YouTube, and many more. Hypertable is a high performance, open source implementation of Bigtable.
2.4 Hbase与GFS
作业一
网站的站点很慢 - 一个有多个webservers的网站与一个第三方关系型数据库相连接.如果有一天老板跑过来问你:“这个网站好慢啊”,而你的工作就是调查为什么会这么慢?
-
先对比一下以往的相关基础数据。通过几个核心指标的对比,明确问题,即“这个网站好慢啊“是相比以前的确出现问题,且这个”慢“大概是怎样一个量级。
- 当前访问量
- 本地连接速度
- 外部连接速度等
-
服务器存在宕机(硬件故障、软件故障)
-
恶意访问
-
当前服务器的框架结构,不足以应对某个数量级的访问
-
URL解析算法不足以应对达到一定量级的数据
-
读写策略不能应对达到一定量级的数据
-
核心思路采用单一变量法,从服务器底层指顶层依次排查。
作业二
Webtrack - 我们需要在网站上跟着用户的活动信息。例如当跟踪搜索时,我们可能需要知道哪些用户进行了搜索,搜索时发生的时间,他们搜索了什么,显示的结果和各种排名信息.
-
需要对注册用户和临时访客分别设计ID,来减少单纯增加新用户的开销。
- 主要通过用户的注册ID或者登陆信息来判别
- 对于访客,要检测相同IP地址的访问,为其建立临时常客ID
- 上述工作应当可以用cookie来完成(不是很确定)
-
存储所有“动作+时间戳”
- 将核心动作进行编码,减少存储开销
- 存储信息不要求实时性高,只要记录下来,再按步骤存储就好。
-
存储所有搜索页面的信息
- 考虑到搜索页面的实时变化,因此需要建立本地有效的short URL解析方法
- 在更高的缓存中或者数据结构中,存储前几页(如2页)的标题信息,因为一般人使用搜索,不会向后翻太多页。
-
建立有效检索结构(查询接口多样,关联性强,不要求强实时性)
- 查询特定用户行为
- 查询特定IP段用户行为
- 查询用户执行某一个动作的数量