Levon's Blog

微信: L6241425

1. Snowflake(雪花算法)

img
1
2
3
| 1 bit (符号位) | 41 bits (时间戳) | 10 bits (机器 ID) | 12 bits (序列号) |
+----------------+------------------+------------------+------------------+
| 0 | 毫秒级时间戳 | 数据中心 + 机器 | 毫秒内自增序列 |
阅读全文 »

使用 Rclone 可以轻松实现备份同步文件到各大网盘,简化了备份方案,也可以用来迁移 2 个不同的网盘程序文件,甚至可以直接挂载网盘到本地用来扩充磁盘食用。

阅读全文 »

0. 前言

OpenVPN 是一个健壮的、高度灵活的 VPN 守护进程。它支持 SSL/TLS 安全、Ethernet bridging、经由代理TCPUDP 隧道NAT。另外,它也支持动态 IP 地址以及 DHCP,可伸缩性足以支持数百或数千用户的使用场景,同时可移植至大多数主流操作系统平台上。

安装openvpn
1
sudo apt install openvpn
阅读全文 »

Mermaid 是一种基于 Javascript 的绘图工具,使用类似于 Markdown 的语法,使用户可以方便快捷地通过代码创建图表。Typora 支持渲染 Mermaid。

阅读全文 »

理解分布式之前,需要理解一个问题就是”事务”。

1. 本地事务

事务提供一种“ 要么什么都不做,要么做全套(All or Nothing)”机制。

img
阅读全文 »

Apache Kafka 是一个开源的分布式事件流平台 (Distributed Event Streaming Platform)。

忘掉 “ 消息队列 “ 这个狭隘的标签。虽然它能当消息队列用,但这好比说一台 MacBook Pro 只是个打字机。它的核心是一个分布式的、分区的、可复制的、持久化的提交日志 (Commit Log)。数据被 “ 追加 “ 到日志末尾,并且可以被多个消费者在任意时间点、以任意速度重复读取。

“ 一句话 “ 类比

Kafka 就像一个拥有无数个频道的、永不停止的 “ 数字电视台 “。

  • 电视台 (Kafka Cluster): 整个服务系统。
  • 频道 (Topic): 数据的分类,比如 “ 订单频道 “、” 用户行为频道 “。
  • 节目 (Message/Event): 一条条的数据,比如 “ 用户 A 下单 “、” 用户 B 点击了按钮 “。
  • 节目制作方 (Producer): 负责制作节目并发送到指定频道。
  • 电视观众 (Consumer): 订阅自己感兴趣的频道。
  • 电视节目录像机 (Log & Offset): 电视台会把所有节目按顺序录下来(持久化日志)。每个观众都有自己的进度条(Offset),可以从任何时间点开始看、快进、甚至倒带重看(数据回溯),且每个观众的观看进度互不影响。
阅读全文 »

1. 自旋锁(spin lock)

1.1 背景

同一时刻只能有一个线程获取到锁。那么就面临一个问题,那么没有获取到锁的线程应该怎么办?通常有两种处理方式:

一种是没有获取到锁的线程就一直循环等待判断该资源是否已经释放锁,这种锁叫做自旋锁。

还有一种处理方式就是把自己阻塞起来,等待重新调度请求,这种叫做互斥锁。

阅读全文 »

1. 基础概念

1.1 内核态和用户态

Linux系统中分为内核态(Kernel model)和用户态(User model),CPU会在两个model之间切换。

  • 内核态代码拥有完全的底层资源控制权限,可以执行任何CPU指令,访问任何内存地址,其占有的处理机是不允许被抢占的。内核态的指令包括:启动I/O,内存清零,修改程序状态字,设置时钟,允许/终止中断和停机。内核态的程序崩溃会导致PC停机。

  • 用户态是用户程序能够使用的指令,不能直接访问底层硬件和内存地址。用户态运行的程序必须委托系统调用来访问硬件和内存。用户态的指令包括:控制转移,算数运算,取数指令,访管指令(使用户程序从用户态陷入内核态)。

阅读全文 »

先抛出知乎的一个问题: https://www.zhihu.com/question/59975081

epoll技术属于IO复用,IO复用属于同步IO,所以epoll属于同步IO,这应该是没毛病的。

现在我用了一个框架,比如twisted,里面的reactor模式的实现是基于epoll或者poll的,在IO的范畴应该是属于同步IO,但是网上几乎所有的文章都说twisted是异步的。

我的问题是,异步与异步IO是不是一个东西?有没有可能异步可以由同步IO(epoll或poll)实现?

阅读全文 »
0%