Cassandra·
本文采用wolai制作,原文链接: https://www.wolai.com/ravenxrz/hSCxJQCsFwGoeGMQz9dAMu
原文名:Cassandra - A Decentralized Structured Storage System
Cassandra论文主要集中讨论了:partitioning, replication, membership, failure handling and scaling
本文采用wolai制作: 原文link: https://www.wolai.com/ravenxrz/eVCDgKnqMXKwptcKfKnVPo
原文名: Taurus Database: How to be Fast, Available, and Frugal in the Cloud
TODO:
重点:
存算分离,和Aurora和Socrates 类似,采用新的复制和恢复算法,提供更高可用性, 存储分为logstore和pagestore,logstore采用强一致性写入,pagestore采用最终一致性写入。 架构上:关键路径网络小于等于一跳网络,采用append only存储。
本文采用wolia制作,原文link: https://www.wolai.com/ravenxrz/9RuzaMAipvQTqAjnGiydYn
原文名字:mClock: Handling Throughput Variability for Hypervisor IO Scheduling
作者提出一种mlock算法,用于优化VM中对IO分配。
📌一句话总结mclock算法:用户分配的带宽要么等于所设置的Reservation值,要么等于按照Weight分配的结果,要么等于Limit值。当按照Weight分配的结果大于用户所设置的Reservation时,则用户最终分配的带宽为按照Weight分配的结果;当按照Weight分配的结果小于用户所设置的Reservation时,则带宽分配的结果等于Reservation;当按照Weight分配的结果大于用户所设置的Limit时,则带宽分配的结果等于Limit。
📌wolai制作,原文:https://www.wolai.com/ravenxrz/d4CYcWtC6M86RQyVAuKT2d
花了1~2 week的时间过完了经典的C网络库muduo实现,和学习LevelDB的时候不同,那个时候主要学习C的编程知识,而muduo主要学习的是设计,当然还有一些编程技巧。本篇总结下通过muduo学习到了哪些内容。
📌本文采用wolai制作,link: https://www.wolai.com/ravenxrz/ty4wvA5PaaHLbgDs4oofRE
前面几篇文章已经把muduo最核心的链路分析完成,包括事件循环、线程池、连接监听、建立,处理的全链路。本篇分析一些其他工具类,包含三个:Buffer、日志和定时器。
📌本文采用wolai制作, link
📌本文采用wolai制作, link
前文muduo源码分析1-事件循环(上)分析了EventLoop
及其相关类的基本原理,但是还残留了一个问题,即EventLoop
的线程模型是怎么样的?
📌本文采用wolai制作,原文链接:https://www.wolai.com/ravenxrz/wQ6VWz7rhYAK4NWReW5ziB
std::thread
是c11后引入的标准线程库。作为c中最重要的线程封装库,有必要打开看看。
注:本文所有分析基于 gcc-8.5.0 源码
一些重要结论:
📌由此可以得到一个重要结论:给
std::thread
传入的参数是没有引用效果的。 如果要用引用,请使用std::ref
📌此处可知,
thread::get_id
返回的是pthread_t
, 该值被pthread_create
初始化,所以并不代表linux下的thread id
📌thread不支持copy语义,仅支持move语义, 且move operator=的前提是,当前线程已经不是
joinable
的,否则会有资源泄露。