又见春哥,OR沙龙现场记实

原创: mospan 墨斯潘園 今天

引言

第一次见到春哥本尊(活体)是在2015年是在360举行的openresty大会,历经4年再次在北京现场感受春哥技术热情与现场号召力,即使收了99元门票费现场200个座位座无虚席, 就像开个人演唱会一样,一个人演讲一下午非常辛苦,没有人提前离开,可见春哥在技术圈的影响力。这么说吧, 在中国认为最能拿得出手的开源项目就两个,一个是章文嵩博士开启现在比较稳定变化不大的LVS项目, 另外一个是章宜春发起在全球广泛使用还在蓬勃发展的openresty项目,可以说双章把中国开源技术带到世界先进水平。

这次大会春哥认真准备了4份PPT,现场演示了很多技巧,亮点多多,我个人认为最大的亮点有:

动态追踪技术

各种小语言及周边库建设

编程与禅修

免责声明

如下为本人记录本次技术沙龙部分精要和个人理解,如有错误之处,欢迎指正。

会议流程

Openresty北京技术沙龙

时间:8 月 10 日(周六)13:30-19:00

地点:北京丽都皇冠假日酒店(北京朝阳区将台路6号)酒店二层宴会厅A

部分精要

应用开发

基于Openresty开发应用的优势:

小巧: lua作为嵌入式脚本放在openresty和游戏中开发很小巧

高效: lua开发非常高效,比用C开发nginx模块要高效很多,入门门槛也低。

成熟稳定: 已经大规模广泛商业应用,尤其现在CDN行业基本都用openresty作为前端。

全动态: 可以通过edge语言生成不用重启即可生效,程序既数据,数据既程序。

应用场景

刚开始写openresty主要是想通过它来做一个完整的blog,包含前后端的webserver,目前openresty做着做着发现在CDN领域应该广泛,它主要应用场景:

命令行应用(编译器、系统编程工具、测试工具)

网关类型应用(API、负载均衡、CDN等)

Web应用(连接数据库、memcached、redis等等)

测试驱动

现在主要通过测试驱动学习、测试驱动开发方法,早期主要抄书,通过肌肉记忆,当抄到一大半时候不懂的慢慢就懂了,看似抄书节奏放慢其实可以更好的理解,书读百遍其义自现。早期抄书有些时候主要是书都是借的,不抄的话以后就看不到了,还透露有些书废寝忘食的抄完后,朋友看自己那么喜欢这本书就说这本书就送给你吧,自己哭笑不得,白抄那么累了。

自己怎么在两三月内精通nginx核心会开发C模块,一边抄代码一边通过Test:Nginx测试驱动学习开发。它的第一个nginx开源项目echo-nginx-module是这样完成的,即使现在还是很多人学习入手nginx的基础, nginx echo模块是在nginx程序上扩展了echo输出字符的功能, 对于调试很方便。

Resty CLI

resty -e 'ngx.("hello,world!")

restydoc ngx.pipe

restydoc -s content_by_lua

resty

resty-cli - OpenResty的高级命令行实用程序,可以像使用 lua 或者 luajit 命令行工具一样直接从命令行运行 resty 命令行实用程序来运行openresty脚本。它可以使用 OpenResty Lua创建各种命令行实用程序, 现场演示了下该命令与其他语言如python、perl、nodejs等性能对比,都优于python、nodejs。

restydoc

OpenResty 附带了非常完善的用户参考手册 restydoc,提供与 UNIX 手册 man 相同的功能,可以检索 OpenResty 里所有组件的帮助文档,包括但不限于:

OpenResty 各个组件的介绍和用法;

OpenResty 指令和功能接口的用法;

Nginx 介绍、用法、基本工作原理;

Lua/LuaJIT 语法要素。

调试与调优

通过打印日志可以解决大部分的问题,通过动态追踪可以解决高层次的问题。

打印日志

测试驱动

动态追踪(火焰图、SystemTap、GDB、OpenResty Trace)

Openresty Cloud

如何编写高效的Lua代码

避免或减少在热代码路径上创建GC对象(string、table、function)

lua-tablepool

避免闭包

尽量使用Lua模块

拼接字符串的正确做法

让热代码路径被JIT编译

自动优化的可能性(lux编译器)

更多的开源教程与演示视频

blog.openresty.com

youtube/bilibili

由Openresty Showman批量制作

由Openresty Trace展示软件内部真实细节

怎样阅读openresty源码

Nginx核心

LuaJit核心

ngx_http_lua等模块

lua-resty-*标准库

按需阅读,只读核心代码路径

学习代码风格规范: https://openresty.org/en/c-coding-style-guide.html

核心开发

核心开发主要讲解主题如下,由于没有完全听懂先列出主题,以后再分解。

Openresty核心结构

luajit内部实现结构

全新的基于luajit ffi的Lua API实现

全新的ngx_meta_lua模块

Test:Nginx测试台

valgrind测试模式

mockeagain测试模式

memcheck模式

小语言与周边建设

春哥曾经说过要学习好技术,主要是:英语、数学、计算机科学,我个人认为计算机科学里最主要的是计算机操作系统、算法、编译原理,曾经有个老师说如何衡量你对某个语言的理解程度,就看你是否自己写出其编译器,再用自己写的编译器与官方编译器对比,就是你对这个语言的理解程度,到目前为止个人还没写过编译器表示汗颜。他本次分享自己写的小语言如下:

OpsLang: 更高效更智能的自动化运维语言

OpsLang 快速上手

https://doc.openresty.com.cn/zh/opslang/

edgelang: 更加接近自然语言,使用更短的语句可翻译生成lua代码

Edge 语言用户手册

https://doc.openresty.com.cn/zh/edgelang/

fanlang: 类似DSL基于Perl 6语言的语法设计

fanlang 用户手册

https://doc.openresty.com.cn/en/fanlang/

ylang:

Ylang 用户手册

https://doc.openresty.com.cn/en/ylang/

ylua:

Ylua 用户手册

https://doc.openresty.com.cn/en/ylua/

动态追踪

动态追踪技术是一种不用停机停程序、不用修改当前代码情况下的一种调试调优技术,它的一般原理如下:

他还现场演示了如何使用动态追踪技术观察程序内部真实细节和不改代码加入探针调试,大致原理是把各种语言都编译成ylang中间语言进行调试。

动态追踪技术详见春哥写的:动态追踪技术漫谈

编程与禅修

技术的尽头是宗教,炒币的尽头是嫩模,编程就像学习各种武功,当武功越高毒素越多,需要像佛法之类的心法来综合,一个修外一个修内,武功越高需要的佛法也越高,否则会走火入魔的。

人们通常说的四禅八定,属于修世间禅的层次和境界。世间禅的禅定层次恰好与三界层次一样,三界是欲界、色界、无色界。世间禅中,欲界中的定有欲界定、未到地定两种。佛家认为,这两种所谓的定,不能算是真正的人定,只是达到身心初步的轻安,为进人四禅八定作准备而已。四禅八定指初禅、二禅、三禅、四禅及空无边处定、识无边处定、无所有处定、非想非非想处定八种依次升进的坐禅人定层次和境界。坐禅者人定,如果依次达到初禅、二禅、三禅、四禅四种境界,就能自然达到脱离欲界众生共同具有的饮食男女之欲,但心念中仍有固定形态的物质身体存在,故名色界四禅。坐禅者如果修过色界四禅,再依次人空无边处定、识无边处定、无所有处定、非想非非想处定四种定者,修持者意识中已没有物质身体的存在,故名无色界四定,也叫四空定。

推荐书

春哥在会上唯一推荐的书是《The Practice of Programming》, 对应的中文版为《程序设计实践》,建议读英文版本,春哥说这本书读了很多年很多次,每次读都有新的体会新的收获。

小结

一如技术深似海(可能还没入门), 同样是80后人与人差距啥这么大呢,有些时候感觉人与人之间的差距甚至大于人与动物之间的差距,路漫漫其修远兮,吾将上下而求索。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容