存储模型
- 关系数据库:mysql,postgresql。主从结构,以文件存储为主,索引使用b+树。适合结构化数据
- 文档数据库:mongodb
- 适合非结构化业务,非常灵活
- 不支持事务,4.0开始支持
- 内存数据库:redis(缓存,KV)
- hash:hset key f v
- zset:hashtable+skiplist
- 分布式一致性工具:etcd,zookeeper。KV存储,配置管理,服务发现,分布式锁,通知监听,分布式自增序列等功能
- eted: 使用raft协议。底层KV存储使用bbolt。
- zookeeper:zab协议,类似paxos
- 本地KV:
- LSM模型:leveldb,rocksdb
- B树:bolt,bbolt
- elasticsearch
- TODO
队列选型:
- kafka
- 包含:broker,topic,partition,producer,consumer,consumer group
- 性能较高,顺序读写日志。10万级别/s
- 单播广播都支持,一个topic可以由一个或多个consumer group消费,每个consumer属于一个consumer group
- 高可用:主从模式。通过zookeeper选举leader
- rabbitmq
- producer,exchanger(topic,direct,fanout),queue,consumer
- 性能较高,内存+文件。万级别/s
- 广播单播都支持
- 高可用:镜像模式,外面加haproxy
服务发现
- 嵌入式
- eureka
- 服务端:java
- 客户端:java,golang,nodejs
- consul:
- 服务端:golang
- 客户端:golang,java,nodejs,etc.
- etcd,zookeeper:
- 分布式一致性工具,可以实现服务发现,需要做一定工作
- 相比eureka,consul,这类工具比较强大,除了服务发现,还有locking,kv存储等
非入侵
通过容器进行服务发现,一般都是通过Linux网络VIP+IPVS方式
- docker-swarm
- k8s
网关
- zuul
- kong
- traeffic
监控
- prometheus