0%

限流就是通过对并发访问 / 请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。

例如秒杀网站,限制 22 点 5 分 – 22 点 10 分 秒杀 999 份产品, 限制放行 5w 个请求,若在该段时间内,请求在第 5w 以后的请求,直接拒之门外, 也就是我们在进入网站的时候显示,系统繁忙。

阅读全文 »

1. 时间序列数据库 Time Series Database (TSDB)

随着分布式系统监控、物联网的发展,TSDB开始受到更多的关注。

时间序列数据跟关系型数据库有太多不同,但是很多公司并不想放弃关系型数据库。 于是就产生了一些特殊的用法,比如用 MySQL 的 VividCortex, 用 Postgres 的 Timescale。 很多人觉得特殊的问题需要特殊的解决方法,于是很多时间序列数据库从头写起,不依赖任何现有的数据库, 比如 Graphite,InfluxDB。

阅读全文 »

公司团队是使用gitlab来管理源代码的,一直以来当提交了一个MR后,需要手动在内部IM群里贴出PR链接和摘要,然后@目标同事来帮忙review代码,其实大部分流程是可以自动化的。

阅读全文 »

1. 内存泄露

  1. 假设 a 是一个大slice,而 b 只引用了一小部分,这就造成了底层数组其他未被引用的部分内存泄漏。

    1
    2
    3
    4
    5
    func sliceLeak() {
    data := make([]byte, 1000000)
    slice := data[:10] // 这个切片依然引用整个数组
    _ = slice
    }
  2. 因为协程被永久阻塞而造成的永久性内存泄露。

  3. 未正确释放文件、数据库连接等资源,导致内存无法释放。

  4. 延迟调用函数导致的临时性内存泄露。

  5. 全局变量或长生命周期的对象持有大量数据,无法被垃圾回收。

  6. 在一些复杂的数据结构中,可能会出现循环引用,导致垃圾回收器无法回收。

  7. 使用time.Timer或time.Ticker时,未及时调用Stop方法。

阅读全文 »

1. Snowflake(雪花算法)

Snowflake 是 Twitter 开源的分布式 ID 生成算法。Snowflake 由 64 bit 的二进制数字组成,这 64bit 的二进制被分成了几部分,每一部分存储的数据都有特定的含义。

img
阅读全文 »

1. 注册机器人

直接在Tg中与@BotFather对话即可创建bot,比较有趣的是在Tg很多的交互式体验都是通过类似对话的方式。

将下面的链接的{TOKEN}替换成所获取的token然后浏览器访问

1
https://api.telegram.org/bot{TOKEN}/getUpdates
阅读全文 »

使用 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. 基础原理

Kafka是LinkedIn开发并开源的一套分布式的高性能消息引擎服务。

  • 消息系统:Kafka具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等强大的功能。
  • 存储系统:Kafka 的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用。
  • 流式处理平台:Kafka还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作,也是一个分布式流处理平台。
阅读全文 »