Yukang's Page

Kong源码分析: 事件

Kong的缓存更新很多依赖于事件,而事件看起来是相对来说比较复杂、也是最有趣的一部分。 worker模型假设我们对Kong做了一个更改的请求,这个请求通常是通过admin_api这个路由处理的。也就是说最终执行数据库操作的动作是在一个Nginx worker进程里。因为操作了数据库所以我 .....
阅读全文

Kong源码分析: 缓存

Nginx里的缓存使用在Kong里面我们缓存的内容大部分是配置,不管是API本身的配置还是插件相关的配置,缓存之后就存储在内存中。 Kong里的缓存基础代码在tools/database_cache.lua文件里面。这里又分两种类型的缓存,一种是shared dict, 一种是使用lua .....
阅读全文

Kong源码分析: 插件

插件的强大之处在我自己使用 Kong 的过程中,最方便的还是在于 Kong 的强大的插件机制。 Nginx 本身提供了提供模块开发机制,但是相对来说更底层一些,并且需要使用 C/C++ 来开发,对于很多开发人员来说 Nginx 仍为一个黑盒。OpenResty 集成了很多好用插件,并提供 .....
阅读全文

Kong源码分析: 启动

Kong的初始化过程安装好Kong之后我们是用命令sudo ./bin/kong start -c kong.conf -vv来启动。其中kong.conf为配置文件,-vv选项打印出一些重要信息展示出来,方便发现问题。 可以看到./bin/kong是一个脚本,是用的#!/usr/loc .....
阅读全文

Kong源码分析

缘由最近在工作上接触了Kong这个开源项目,因为我们内部做微服务化重构,所以导致系统相互间通信比较复杂,如果想做一些涉及各个系统的功能就很困难。比如我们前段时间实现的灰度系统就把人折腾得很惨。因为我们的设计中有一些http header 需要在各个系统之间传递。每个项目的 Nginx 里 .....
阅读全文

小说推荐

之前我用过一段时间 Kindle,因为没有使用保护套导致在书包里面被压坏。而后一两年用 IPad 看了一些电子书,始终觉得稍微有些笨重,而且看久了眼睛不舒服。前段时间在 z.cn 上瞎逛又有了买个 Kindle 的欲望,拿到手后又好好找了一些电子书比较多的网站。目前使用最舒服的还是 h .....
阅读全文

OpenResty使用总结

OpenResty最近用OpenResty比较多,除了一些业务逻辑的实现也做了AB组灰度相关的实现。OpenResty是在Nginx基础上做的扩展,应该算是国人开源项目中很成功的一个。在做的过程中写了不少Lua代码,写Lua代码的体验就是库好少,语言好简单。 OpenResty lua编 .....
阅读全文

rubytt 续

前段时间继续做了 rubytt 这个小项目,遇到一些问题。 我想做一个自动检测未定义变量的功能,发现如果只是做静态分析,是很难做出来的。还有涉及到各种 gem 包的分析,这些工作量较大。可以看出在这个PR里我甚至用上了一些硬编码。 然后我想做一个自动分析代码复杂度的功能,比如某些函数太长 .....
阅读全文

程序员病

最近看费曼的书《发现的乐趣》,里面有一段描述非常好玩: 好,弗兰克先生开始实施他的计划了,与此同时,他也得了一种病——『计算机病』。现在每个使用计算机的人都知道这个毛病,那种病非常厉害,会干扰整个工作。这是我们面临的一个严重问题。所谓『计算机病』就是你一『玩』上计算机,就会上瘾。计算机 .....
阅读全文

Ruby 程序的静态分析: rubytt

rubytt是一个 Ruby 程序的静态分析器,这个项目从16年年初一直到年底,断断续续持续了近一年。这里稍微总结一下自己的开发过程。 0. 缘由14年开始,从我进入 DJI 之后开始接触 Rails 开发。Ruby 之前也接触过,不过都是写一些小脚本之类的东西。我们几乎用 Rails .....
阅读全文
Prev Next