0%

1. K8s Service

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

因为 blog 涉及的本地依赖过多, 特意放到 docker 上, 方便发布博客和移植。制作镜像的时候,尽量选择国外服务器,国内的服务器下载包很容易陷入死循环。

1. 宿主机准备(GCP)

参考:https://www.liuvv.com/p/b7e5827a.html

1.1 安装docker

1
2
apt update
apt install -y docker.io
阅读全文 »

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
阅读全文 »