分布式系统

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