分布式系统

- 存储系统- 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
构建思想
- 云化- 虚拟化技术
- 分布式
 
- 一切都可能失败与冗余思想- 多节点 主从架构 分片
 
- 水平扩展- 数据:分片
- 服务: 集群 负载均衡
- 数据中心:异地主从 异地多活
 
- 尽可能简单- 组件数量
- 服务依赖
- 架构
- 设计
 
- 异步化削峰填谷解耦
- 最终一致性
- 微服务思想
- 服务跟踪
- 资源池化
思考
- 大型互联网公司架构共性
