RPC原理与实现 | 青训营笔记

101 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

目录

  • 经典案例
  • 存储 & 数据库简介
  • 主流产品剖析

经典案例

  • 数据的产生
    • 当你下载一个app点击注册等操作时,数据就已经产生了
  • 数据的流动
    • 注册数据 --> 后端服务器 --> 数据库
  • 数据的持久化
    • 校验数据合法性
    • 修改内存
    • 写入存储介质
  • 潜在的问题
    • 数据库怎么保证数据不丢
    • 数据库怎么处理多人同时修改的问题
    • 为什么用数据库,可以用其他的存储系统吗?
    • 数据库只能处理结构化数据吗
    • 有哪些操作数据库的方式,要用什么编程语言

存储 & 数据库简介

存储

什么是存储系统? 一个提供了读写、控制类接口,能够安全有效的把数据持久化的软件。

系统特点

  • 性能敏感
  • 容易受硬件影响
  • 系统代码既简单又复杂

RAID
要做到高性能、高性价比、高可靠性,必须要有RAID(Redundant array of inexpensive disks) RAID出现的背景

  • 单块大容量磁盘价格 > 多块小容量磁盘价格
  • 单块磁盘写入性能 < 多块磁盘的并发写入性能
  • 单块磁盘的容错能力有限

RAID0

  • 多块磁盘的简单组合
  • 数据条带化存储,提高磁盘带宽
  • 没有额外的容错设计

RAID1

  • 一块磁盘对应一块额外镜像盘
  • 真实空间利用率仅50%
  • 容错能力强

RAID 0 + 1

  • 结合了RAID0 和 RAID1

数据库简介

关系型数据库是存储系统,但是除了存储还发展出了其他能力

  • 结构化数据友好(以表形式管理)
  • 支持事务(ACID)
  • 支持复杂查询语言(SQL)

ACID

  • Atomicity: 事务内的操作要么全做,要么不做
  • Consistency:事务执行前后,数据状态一致(比如转账操作,你多了50块,我少了50块)
  • Isolation: 事务可以隔离多个并发事务,避免影响
  • Durability: 事务一旦提交成功,数据保证持久性

主流产品剖析

单机存储 -- 本地文件系统

Linux 文件系统的两大数据结构: Index Node & Directory Entry Index Node

  • 记录文件元数据,如id,大小,权限,磁盘位置
  • inode是文件的唯一标识,会被存储到磁盘上

单机存储 -- key-value存储

如:LSM-Tree,某种程度上牺牲读性能,追求写入性能
拳头产品:RocksDB

分布式存储 -- HDFS

HDFS核心特点

  • 支持海量数据存储
  • 高容错
  • 弱posix语义
  • 使用普通x86服务器,性价比高

分布式存储 -- Ceph

  • 一套系统支持对象接口,块接口,文件接口,但是一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用CRUSH算法