Levon's Blog

微信: L6241425

1. K8s Service

  1. Kubernetes 应用运行在容器之中,容器处于 Pod 之内。
  2. 每个 Pod 都会附着在同一个大的扁平的 IP 网络之中,被称为 Pod 网络(通常是 VXLAN 叠加网络)。
  3. 每个 Pod 都有自己的唯一的 IP 地址,这个 IP 地址在 Pod 网络中是可路由的。
Pod Network
阅读全文 »

Sentry 是一个开源的非常强大的实时异常收集系统,可以为开发者的提供帮助、诊断,修复和优化其代码的性能的能力,可以用它来监控线上服务的健康状态,实时收集的异常堆栈信息可以帮助我们快速发现、定位和修复问题。

阅读全文 »

告警能力在Prometheus的架构中被划分成两个独立的部分通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。

image-20220726115047660

阅读全文 »

把prometheus和golang结合在一起,并监控golang的性能和接口状态。

1. golang的使用

1.1 基础的内置指标

  • 下载包
1
2
3
go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promauto
go get github.com/prometheus/client_golang/prometheus/promhttp
阅读全文 »

传说地球上本没有火种,那时人类的生活非常困苦。普罗米修斯为了给人类造福,就冒着生命危险,从太阳神阿波罗那里去偷走了一个火种,给人类带来了光明,是一位让人敬仰的神。他因此而受到宙斯的处罚,被绑在高加索山,每日忍受风吹日晒和鹫鹰啄食,后被赫拉克勒斯救出。

阅读全文 »

通过Github Action自动定时运行checkin.py脚本,每日进行GLaDOS的签到,并发送通知到自己的微信上。

1. 准备工作

1.1 github action

  • 通过Github Action自动定时运行checkin.py脚本。

  • 登录GLaDOS后获取cookies。(简单获取方法:浏览器快捷键F12,打开调试窗口,点击“network”获取)

  • 然后通过“Server酱”(http://sc.ftqq.com/3.version),自动发通知到微信上。

  • 可以发送到自己的企业微信

阅读全文 »

当系统容量增多时,就会将数据水平切分到不同的节点来存储,也就是将数据分布到了不同的节点。

1. hash算法

哈希算法最简单的做法就是进行取模运算,比如分布式系统中有 3 个节点,基于 hash(key) % 3 公式对数据进行了映射。

但是有一个很致命的问题,如果节点数量发生了变化,也就是在对系统做扩容或者缩容时,必须迁移改变了映射关系的数据,否则会出现查询不到数据的问题。

img img

假设总数据条数为 M,哈希算法在面对节点数量变化时,最坏情况下所有数据都需要迁移,所以它的数据迁移规模是 O(M),这样数据的迁移成本太高了。

阅读全文 »

1. 分布式锁

1.1 特点

  • 互斥性: 同一时刻只能有一个线程持有锁
  • 可重入性: 同一节点上的同一个线程如果获取了锁之后能够再次获取锁
  • 锁超时:和J.U.C中的锁一样支持锁超时,防止死锁
  • 高性能和高可用: 加锁和解锁需要高效,同时也需要保证高可用,防止分布式锁失效
  • 具备阻塞和非阻塞性:能够及时从阻塞状态中被唤醒

1.2 实现方式

我们一般实现分布式锁有以下几种方式:

  • 基于数据库
  • 基于Redis
  • 基于zookeeper
阅读全文 »
0%