构建基于 OpenResty + Lua 的短地址服务

目录 Docker, Kubernetes, NGINX/OpenResty

前言

曾经,我用 PHP 原生编写了一个轻量级自定义短链接生成的库(laijingwu/url-shortener),依赖 vlucas/phpdotenvcatfan/medoo 组件。时隔两年,短信营销推广需要在短信内容中放置短链接,而这次我选择了 OpenResty 和 Lua 来完成。

继续阅读 “构建基于 OpenResty + Lua 的短地址服务”

在 Kubernetes 中搭建 Harbor

目录 DevOps, Kubernetes

前言

Harbor 是一个开源且安全的容器镜像仓库,支持基于 RBAC 的访问权限控制,容器镜像漏洞扫描和镜像签名等安全特性。同时支持管理 Docker 镜像和 Helm Charts Repository,使开发者可以高效便捷且安全地管理各种云原生平台的镜像。

本次搭建的整体思路是利用阿里云 Kubernetes 集群搭建一个 Harbor 镜像仓库和 Helm Charts 仓库,通过 Secret 存储管理页面 SSL 证书,存储方面使用阿里云 NAS 服务挂载 Persistence Volume,并对应定义好 Persistence Volume Claim。由于 Kubernetes 集群内已存在 Ingress 服务,故使用已有的 Ingress 服务代理 Harbor,由 Ingress + TLS 向外提供服务,Ingress 到 Harbor 服务则无需 TLS。

继续阅读 “在 Kubernetes 中搭建 Harbor”

泰国地址识别的一种尝试

目录 PHP, 算法

前言

由于公司项目主要面向泰国等东南亚地区用户,参考国内各大快递、电商平台有关收货地址的自动识别,希望能实现类似的、基于泰文的泰国收货地址自动识别的功能。用户粘贴一段“姓名 + 收货手机号 + 收货地址 + 邮编”的文字,通过分析、匹配上系统内已经存在的、由物流公司提供的府(จังหวัด)、县(อำเภอ)、区(ตำบล)的邮政编码。作为一个国人程序员,自然是没有泰语功底,因此本文中所提到的有关泰语的相关说明和描述可能存在偏差,但本文仅作为实现自动识别地址功能的一种参考。

继续阅读 “泰国地址识别的一种尝试”

在 Kubernetes 中通过 Jenkins 和 Dynamic Slaves 实现 CI/CD

目录 CI/CD, DevOps, Kubernetes

本文将介绍如何通过在 Kubernetes 集群中利用 Jenkins 和 Kubernetes-Jenkins-Plugin 实现动态按需扩展 jenkins-slave 实现 CI/CD。实验环境为阿里云 ACK Kubernetes 托管集群。

前提条件

已创建好的 Kubenretes 集群,包括自建集群和云服务提供商托管集群;

在已创建的 Kubenretes 集群中安装好的 Jenkins 服务;有关安装方式:

继续阅读 “在 Kubernetes 中通过 Jenkins 和 Dynamic Slaves 实现 CI/CD”

MySQL的两种主从复制方式

目录 MySQL
  • 基于二进制日志文件偏移量(Binary Log File Position)
  • 基于 GTID(Global Transaction Identifiers)

基于二进制日志文件偏移量

主库的所有变更操作(写入更新)都会视为事件,被写入二进制日志文件中。从库通过读取主库的二进制日志文件,并在从库中执行这些事件,达到主从同步。

默认情况下,从库会执行由主库读取到的所有日志事件,即全数据库复制;也可以通过配置使从数据库只执行某些特定的数据库或数据表的日志事件,即部分数据库表复制。

每个从库都会保留一个记录,包括二进制日志文件名和偏移量,从库会记录哪些来自主库的日志事件已经在从库执行过。这意味着多个从库可以连接同一个主库,并执行同一个二进制日志文件的不同部分,从库处理从主库复制的过程,因此从库不论连接与否都不会影响主库的操作。同时,每个从库都会记录当前已经执行日志事件的位置,从库就可以在断开连接后再重连的时候,能够从记录的位置继续从主库同步。

继续阅读 “MySQL的两种主从复制方式”

Modern PHP 学习笔记:关于 PSR 规范

目录 PHP

由于 PSR 规范最初来源于一个社区组织 —— PHP-FIG,因此在介绍 PSR 规范之前,先介绍一下 PHP-FIG。

PHP-FIG(PHP Framework Interop Group),是框架代表自发组织的,其成立的目标都是为了改进 PHP 社区。PHP-FIG 制定了推荐规范,PHP 框架可以自愿遵循这些规范,改进与其他框架的通信和共享功能。

PSR(PHP Standards Recommendation,PHP 推荐标准),是 PHP-FIG 制定的推荐规范。目前 PHP-FIG 一共制定并发布了五个推荐规范,本文只介绍其中的四个推荐规范(其实是 PHP-FIG 废弃了第一份推荐规范 PSR-0)。

  • PSR-1:基本的代码风格
  • PSR-2:严格的代码风格
  • PSR-3:日志记录器接口
  • PSR-4:自动加载

继续阅读 “Modern PHP 学习笔记:关于 PSR 规范”

博客恢复服务通知

目录 通知

我于10月25日在腾讯云提交注销网站的申请,出乎意料,10月26日就收到了广东省管局的注销确认邮件,为这效率点赞。但同时,令我感到不便的是,腾讯云控制台在我收到确认邮件后未能及时同步状态。通过腾讯云官方的 Q&A,我得知腾讯云控制台同步需要1-2个工作日,但我到今天为止还没有收到主动同步的结果。见无果所以提交了工单,欣慰的是腾讯云的工程师处理及时,状态马上得到了同步。最后,由于工作室公用账号在注销网站备案后,也一并取消了我个人的主体与腾讯云账号的绑定,所以我的博客不受其影响,因此博客从现在起恢复服务。后续我会将工作室域名解析、域名备案、服务器交由其他人负责,这段时间感谢大家的陪伴,我会更努力的学习,给大家带来更多有用的文章。

求知 —— 是一种享受。

 

laijingwu

2017年10月30日

博客暂停服务通知

目录 通知

由于本人所在的网园资讯工作室域名备案需要撤销等原因,导致我个人的主体需要撤销并重新备案,这将导致我个人博客域名备案受到影响,届时博客将暂停服务并停止访问两周左右。主体、域名备案完成后会尽快恢复博客访问。如有不便,还请谅解。

 

laijingwu

2017年10月25日