etcd数据迁移

背景etcd是目前比较流行的分布式kv存储解决方案,其中kubernets采用etcd作为其存储方案。某个业务使用单点的etcd服务,需要扩容保证etcd服务的高可用性。 etcd数据迁移方案根据是否处于容器环境有所不同,这里记录一下kubernets环境中数据迁移扩容。 迁移etcd数据迁移不能简单的采用打包db目录的方式,db文件中包含了peerurl地址等信息,会导致复制启动后etcd...

crontab源码解析

背景分析Linux环境中cron源码逻辑,了解定时任务实现原理。 基于busybox版本crontab 参考 crontab源码

业务缓存的一致性

缓存在业务场景中多用于存储数据,避免频繁调用后端数据库服务,减轻数据库压力,提高业务吞吐量;本文是笔者翻译的一篇关于如何保证在业务缓存数据的一致性 —-译文—- 今日Redis已经成为互联网行业最受欢迎的缓存解决方案。尽管关系型数据库系统(SQL)同样带来很多非常棒的特性如ACID,但在高负载场景维持这些特性会导致数据库性能下降。为了解决这类问题,很多公司和网站在应用层和存储层增加缓存层。缓...

hyperf框架组件crontab分析

0x1、背景hyperf框架通过swoole\process及swoole\coroutine\sleep函数实现定时任务,代替linux环境中的crontab;该组件兼容crontab语法并支持秒级别定时任务。 本文侧重分析crontab组件如何实现多实例场景下保障任务单一执行。 0x2、执行流程crontab 配置解析: 123456789101112131415161718192021...

k8s容器参数containerPort解析

0x1、背景在梳理线上业务过程发现,Pod的配置文件中containerPort参数配置错误也能正常通信;在接触k8s时间里一直以为containerPort参数必须设置才能使容器内服务被外部访问,通过一系列实验发现containerPort这个参数有些鸡肋。 官方解释containerPort参数: 12345List of ports to expose from the contain...

synergy多主机共享键鼠

背景家里有台破旧的笔记本,为了让它继续发光发热,打算安装Debian系统配置开发环境;十年前的笔记本改装后依然可以开发诸如PHP或python之类不需要编译的项目。笔者的工作本是mbp, 两台笔记本开发时总是来回切换鼠标键盘比较麻烦,因此需要通过mbp操作旧版笔记本。 synergy是一个跨平台软件,可以通过一套键鼠操作多个不同系统主机的软件;同类型的还有微软推出的无界软件,不过该软件仅限W...

Docker环境之Crontab踩坑

0x1.背景业务中遇到Python镜像使用crontab执行任务不执行的情况,通过一系列定位分析后发现crontab在处理环境变量和crontab任务文件解析存在问题。 环境 镜像: Python:3.7.5 Crontab版本: 3.0pl1-127+deb8u2 crontab任务文件 1* * * * * /usr/local/bin/python job.py >> ...

PHP7.4的新功能FFI

PHP在7.4版本提供一个有意思的扩展FFI(Foreign Function Interface),使PHP可以调用C语言的函数,该扩展由PHP核心开发者Dmitry Stogov开发。其实跨语言调用已经很常见的需求,虽然看着比较怪异,更多的是一种折中实现wrapper。FFI的出现降低对开发PHP扩展的依赖,在此之前如果调用某些C语言编写的库时,需要以开发PHP扩展形式进行封装;即使有z...
php

SSR流量加密

酸酸乳流浪在外,总会有坏人在酸酸乳回家的路上时常打劫她。英勇的你应该如何保护你家可爱的酸酸乳呢?纵观魔法世界,无外乎加密或混淆。混淆算是道高一尺,魔高一丈;还是魔高一尺,道高一丈呢?真真假假倒不如挖条专门的路让酸酸乳可以愉快的玩耍,这里使用spiped方案来实现。 spiped是Tarsnap项目中的一个加密通信工具,另外还有著名的加密工具scrypt, 目前已开源到同人社区, 该工具使用A...

hammerspoon提高生产力

hammerspoon是MacOS系统下一款实现自动化的工具,通过lua脚本扩展系统功能。相比其他通过python脚本,nodejs脚本或原生的automator, hammerspoon更加简单,提示框界面美观。也可以使用python和pync库实现监控通知,nodejs和node-notifier组件实现通知的方案。毕竟工具的自动化是提高生产力的必要因素。 #配置hammerspoon可...