鸡蛋蛋🥚


  • 首页

  • 归档

  • 标签

  • 书单

  • 关于

Redis Pipeline

发表于 2019-05-19 |
Redis pipeline 功能简介在命令行中是没有Redis pipeline功能的,但redis是支持pipeline的,而且在各个语言版的client中都有相应的实现。 简单概括redis pipeline的功能就是将单次请求变为批量请求。 由于网络开销延迟,就算redis server端有 ...
阅读全文 »

NSQD 消息处理流程

发表于 2019-05-19 |
NSQD 消息处理整体流程 memoryMsgChan 和 backendMsgChanmemoryMsgChan:为内存缓冲区,Topic和Channel内存缓冲区的大小可以通过同一变量mem-queue-size来进行配置。 backendMsgChan:为磁盘优先级队列。通过diskqueue ...
阅读全文 »

Mysql锁

发表于 2019-05-19 |
CAS (Compare and Swap)乐观锁具体实现细节:主要就是两个步骤:冲突检测和数据更新。还有一种比较典型的就是Compare and Swap(CAS)。 CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动 ...
阅读全文 »

分布式系统route map

发表于 2019-05-19 |
分布式系统这里主要对分布式系统的定义、应用甚至意义来做一些阐述。有一个统揽全局的概念。 应用:分布式操作系统,分布式文件系统,分布式存储系统(分布式数据库、缓存、消息队列等)。 这里主要是针对分布式存储系统来展开。 分布式系统的理论基础基本概念基本概念:状态特征:无状态、系统重发、幂等性、 并行、并 ...
阅读全文 »

基于Redis集群的分布式锁

发表于 2019-05-19 |
分布式锁 Redlock由于前面介绍的基于单Redis节点的分布式锁在failover的时候会产生解决不了的安全性问题,因此antirez提出了新的分布式锁的算法Redlock,它基于N个完全独立的Redis节点(通常情况下N可以设置成5)。 运行Redlock算法的客户端依次执行下面各个步骤,来完 ...
阅读全文 »

raft协议

发表于 2019-05-19 |
raft协议简介Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。 来自Stanford的新的分布式协议研究称为Raft,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。 在Raft系统中 ...
阅读全文 »

SQL语句执行顺序

发表于 2019-01-30 |
查询中用到的关键词主要包含六个,并且他们的顺序依次为: select –> from –> where –> group by –> having –> order by SQL Select语句完整的执行顺序【从DBMS使用者角度】: from:需要从哪个数据表 ...
阅读全文 »

Mysql 索引

发表于 2019-01-30 |
MySql索引mysql的索引分为单列索引(主键索引,唯一索引,普通索引)和组合索引. 单列索引:一个索引只包含一个列,一个表可以有多个单列索引. 组合索引:一个组合索引包含两个或两个以上的列, 联合索引:select * from users where area=’Beijing’ an ...
阅读全文 »

基于单Redis节点的分布式锁

发表于 2019-01-28 |
具体实现获取锁: 1SET resource_name my_random_value NX PX 30000 上面的命令如果执行成功,则客户端成功获取到了锁,接下来就可以访问共享资源了;而如果上面的命令执行失败,则说明获取锁失败。 注意,在上面的SET命令中: my_random_value是由 ...
阅读全文 »

分布式锁

发表于 2019-01-28 |
分布式锁介绍在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记 ...
阅读全文 »

LSM Tree

发表于 2019-01-28 |
LSM Tree (Log-Structured Merge Tree)LSM Tree是为了优化数据库写性能而出现的,相较于传统的B+树,它减少了磁盘随机读取的需求,从而在一定程度上改善了数据库的写能力,当然在一定程度上牺牲了数据库的读能力。 与其说LSM Tree是一种树,不如说它是通过传统索引 ...
阅读全文 »

消息队列选型要点

发表于 2019-01-28 |
优先级队列优先级队列不同于先进先出队列,优先级高的消息具备优先被消费的特权,这样可以为下游提供不同消息级别的保证。不过这个优先级也是需要有一个前提的:如果消费者的消费速度大于生产者的速度,并且消息中间件服务器(一般简单的称之为Broker)中没有消息堆积,那么对于发送的消息设置优先级也就没有什么实质 ...
阅读全文 »

Kafka简介

发表于 2019-01-23 |
kafka概述Kafka 起初是由 LinkedIn 公司开发的一个分布式的消息系统,后成为 Apache 的一部分,它使用 Scala 编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如 Cloudera、Apache Storm、Spark 等都支持与 Kafka 集成 ...
阅读全文 »

redis master, slave, sentinel通信

发表于 2018-12-21 |
在这里主要说明redis sentinel是怎样在得知整个系统的拓扑结构的。 首先,sentinel会根据配置,和需要监控的master节点建立TCP连接,同时订阅master节点的 “__sentinel__:hello”频道。 在建立TCP连接后, sentinel会每10s向master ...
阅读全文 »

Redis 客户端与服务器连接流程实例

发表于 2018-12-17 |
如下图所示,为redis 客户端连接服务器完整的流程。 1.首先在redis sever 启动的时候,会把AE_READABLE事件和acceptTcpHandler方法绑定,向eventLoop注册。 12if (server.ipfd > 0 && aeCreateFil ...
阅读全文 »

NSQ消息Inflight机制

发表于 2018-12-10 |
简介在NSQ中,使用inflight机制来保证NSQ中消息”at least once”(至少被消费一次)。 在消息发送给Client之后,会将消息以及消息的timeout时间存储到优先级队列中pqueue。 如果客户端收到该消息,可以使用如下三个命令对此进行回复: FIN: Finish a ...
阅读全文 »

NSQ中的优先级队列

发表于 2018-11-29 |
在NSQ中,有两个最小堆实现的优先级队列,分别为: PriorityQueue,inFlightPqueue。分别用作延迟消息和消息的at least once机制。 堆排序(以大顶堆为例)堆排序的基本操作: MAX-HEAPIFY : 运行时间为O(logn),是保持最大堆性质的关键。 BUIL ...
阅读全文 »

disk queue 源码分析

发表于 2018-11-27 |
disk queue 简介disk queue是基于文件存储的FIFO(first-in-first-out)队列。在对数据进行持久化的同时,保证数据写入和读出的相对顺序。 在NSQ中,disk queue的应用场景为: 生产者在生产消息时,当消息内存缓冲区已经满了的时候,则利用disk queu ...
阅读全文 »

NSQ 简介

发表于 2018-11-26 |
NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。 NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。 基本组件nsq 有三个必要的组建nsqd、nsqlookupd、nsqadmin。 nsqd ...
阅读全文 »

golang 反射中的Type Value 和 Kind

发表于 2018-11-18 |
reflect.Type & reflect.Valuereflect.TypeTypeOf returns the reflection Type that represents the dynamic type of i. If i is a nil interface value, ...
阅读全文 »
123
LiMingji

LiMingji

43 日志
26 标签
© 2019 LiMingji
由 Hexo 强力驱动
主题 - NexT.Mist