分布式系统
- 存储系统
- GFS HDFS
- 计算系统
- 批处理:MapReduce
- 流处理:Storm
- 节点关系
- 主从式
- 对等式
网络硬件
分布式系统运行在网络之上
网络服务和协议
- 面向连接与无连接
- 数据流与数据包
前端技术
- MVC框架
- 反向代理
- nginx
- vanish
- 负载均衡
- dns
- 硬件:F5
- 软件:LVS
分布式中间件
- 分布式同步服务中间件
- 分布式一致性协议:paxos raft ark npc
- chubby
- zookeeper
- 关系型数据库访问中间件
- 客户端转发
- 服务端转发
- mysql 代理
- cobar
- mycat
- sharding jdbc
- 分布式服务调用中间件
- dubbo dubbox
- protocol buffers
- 一个语言平台无关的序列化反序列化库
- grpc
- thrift
- motan
- 分布式消息服务中间件
- kafka
- 分布式跟踪服务中间件
- dapper
- zipkin
- pinpoint
- 鹰眼
分布式存储服务
分布式文件系统
业界的一些分布式文件系统
- GFS
- HDFS
- 大文件
- TFS
- 海量小文件
设计
- 传输模式
- 目录层次
需要有一种唯一的目录文件命名方式,如 /server/path/file.txt
- 命名透明性
- 位置透明性:文件以一个唯一的url暴露出去,但在服务器内部可以随意移动
- 位置独立性:当文件在服务器之间转移时,url仍不必变化
- 文件共享语义 当文件被并发使用 需要考虑顺序一致性等问题
NoSQL数据库
NoSQL 方案带来的优势,本质上是牺牲 ACID 中的某个或者某几个特性, NoSQL 只是 SQL 的一个有力补充
- 牺牲C 选择AP
- 基于键值对
- LevelDB
- Tair
- Dynamo
- Memcached
- Redis
- Berkeley DB
- 基于列 优势场景是在读取某列的所有数据时
- Bigtable
- HBase
- Cassandra
- 基于文档 最大的特点就是 no-schema,可以存储和读取任意的数据
- MongoDB
- CouchDB
- RethinkDB
- 全文搜索引擎
- ElasticSearch
- Solr
- 基于图
- Neo4j
- 时间序列
- influxDB
NewSQL
关系型数据库与NoSQL的融合
- Megastore
- Spanner
- F1
- OceanBase
构建思想
- 云化
- 虚拟化技术
- 分布式
- 一切都可能失败与冗余思想
- 多节点 主从架构 分片
- 水平扩展
- 数据:分片
- 服务: 集群 负载均衡
- 数据中心:异地主从 异地多活
- 尽可能简单
- 组件数量
- 服务依赖
- 架构
- 设计
- 异步化削峰填谷解耦
- 最终一致性
- 微服务思想
- 服务跟踪
- 资源池化
思考
- 大型互联网公司架构共性