Redis 数据持久化
本文是 Redis Persistence 的 tech spec,是一篇每个 Redis 用户都建议读的文章。
- RDB 是定时存储快照
- AOF 是增量添加写操作的日志(append-only fashion)
- 两个都是可选关掉的,或者同时打开。AOF 优先用于重启时的数据恢复
比较:
- RDB
- 单文件,压缩好,适合备份做灾难恢复,恢复速度快,备份进程不影响提供服务的父进程的性能。
- 可能会丢数据(总不能每秒都 dump 吧?一般隔几个分钟小时的),备份时 fork 会可能卡住父进程一会会儿。
- 基本流程:Redis fork, 子进程把数据全量写到 rdb 文件,写完后替换老的 rdb 文件。
- AOF
- 优点:性能好!能在日志太大时自动 rewrite, 也不会影响现有的插入 …
Python 代码打包必知必会
本文是 Python 打包的官方文档,介绍了如何打包一个最简单的 Python 代码库,是几乎每个 Python 开发工程师都要掌握的技能。
- 首先得有一个可以被打包的模块,或者包。
- 然后写一个 setup.py, 其中有固定的模板写上 name, version, description, packages 等必须要填的信息。
- 跟上 LICENSE,README.md
- 运行
python3 setup.py sdist bdist_wheel
, 查看 dist/ - 测试上传包到 pypi 上:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
- 去 https://test.pypi.org …
WHAT IS SUID AND HOW TO SET SUID IN LINUX
Linux 权限管理不是只有 rwx 三个这么简单,还有 SUID, SGID, Sticky Bit, ACL’s, SUDO 等等。本文简单介绍了 SUID - Set owner User ID up on execution 这个概念,它可以让获得权限的程序运行的时候获得 file owner 的权限,获得 owner UID,GID。听起来很危险,但它是 passwd, ping, crontab 等程序的基本原理。譬如说,passwd 将会修改密码,数据写入 /etc/passwd, /etc/shadow,而这两个文件owner都是 root。
$ ls -al …
Kubernetes 文档 - Application Introspection and Debugging
本文是 Kubernetes 叫你怎么 debug application 的文档。简单来说记住两条命令:kubectl get pod -o yaml
和 kubectl describe pod name-of-your-pod-xxxxxxxxxx-yyyy
。Kubernetes 很复杂,甚至于在教完你各种概念后教你怎么 debug,这篇还是 debug 中最简单的一篇,还不涉及 service,deployment,logging 等。
kubectl describe pod nginx-deployment-1006230814-6winp
:类似这样的命令可以列出 pod 所有的状态,我们查看不同寻常的状态来找病灶。根据不同的 state ( Waiting, Running, or Terminated )来看更多信息。比如说 ready 表示是否可以接受流量了,Restart Count …
EdgeDB - 下一代对象关系型数据库
这个工具旨在解决的问题应该是将原先软件层的逻辑挪到数据库层面来,数据库不再是行列关系,而是对象驱动的数据,这让我们也许在实现业务逻辑时可以用更少代码解决问题。它内建 GraphQL 支持,这个文档对于尝鲜的人来说非常容易理解。
这篇 Quick Start 简述了实现简单的 PullRequest 业务。
- Migration 是个好玩的设计,鉴于大部分数据库框架都让程序员可以用
xyz-framework run migrations
这种方法建表,删表,改表,EdgeDB 直接提供了 Migration 来做任何表模式的变更,在数据库层面帮我们解决表模式的迁移,体验蛮好的。使用时,感受到了运行一次 Migration 耗时比较长,应该是有锁库,可能现在还处于早期试验阶段,实现还不完善。 - INSERT 的同时可以带上 SELECT, FILTER ,这个跟 SQL 能做的事情没有差太多。
- SELECT 使用 GraphQL 的语法来查数据。
翻看 源码 …
read more