Damon_Slh
有志之人

一 资料

https://github.com/donnemartin/system-design-primer#study-guide

https://www.hiredintech.com/system-design

https://leetcode.com/discuss/career/229177/My-System-Design-Template

二 DataBases

MySQL,PostgreSQL

最常见的关系型数据库

适用于存储查询较为复杂的数据表单

需要更高稳定性的数据

Memcached

最常用的Key-value缓存系统

value不支持set/list的结构

内存级访问速度

不支持数据持久化

适合存储耗时的计算结果,或者缓存数据库中的不常改动的数据,或者经常被访问的数据

Redis

最常用的Key-value NoSQL数据库之一

value支持set/list这种结构,可以直接add/append数据到value里

内存及访问速度,但低于memcached

可以用作Cache/Message Queue /Database

Cassandra,HBase

Column Family Based NoSQL 数据库

也是key-value的结构,只不过key分为row-key和column-key

其中column key可以做范围查询(range query)

适合放查询简单不复杂数据

MongoDB

Document Based NoSQL 数据库

适合写多读少的数据

Rocksdb

最常用的Key-value NoSQL数据库之一

value不支持set/list这种结构

经常用于很多大公司的key-value storage的底层,这些大公司会给予Rocksdb在上层包装其他的借口用于其各自的使用场景

三 MessageQueue

1. kafka和rabbitmq的区别

kafka 的单机吞吐量高达到了10万级,rabbitmq 的单机吞吐量只有万级。kafka 用的是分布式架构,rabbitmq 用的是主从架构,从可用性上讲 kafka 比 rabbitmq 要高。
kafka 的优点:
    1.消费者采用Pull方式获取消息, 消息有序, 通过控制能够保证所有消息被消费且仅被消费一次;
    2.有优秀的第三方Kafka Web管理界面Kafka-Manager;
    3.在日志领域比较成熟,被多家公司和多个开源项目使用;
功能支持:功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用
kafka 也有一些缺点,比如:
    1.使用短轮询方式,实时性取决于轮询间隔时间;
    2.消费失败不支持重试;
    3.支持消息顺序,但是一台代理宕机后,就会产生消息乱序;
    4.社区更新较慢;
rabbitmq 的优点有:
    1.MQ功能比较完备
    2.健壮、稳定、易用、跨平台、支持多种语言、文档齐全;
    3.开源提供的管理界面非常棒,用起来很好用
    4.社区活跃度高;
rabbitmq 的缺点:
    1.erlang开发,很难去看懂源码,基本只能依赖于开源社区的快速维护和修复bug,不利于做二次开发和维护。
    2.RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重。
    3.需要学习比较复杂的接口和协议,学习和维护成本较高。

 
posted on 2022-04-21 23:27  Damon_Slh  阅读(234)  评论(0)    收藏  举报