真的是long time no see了,一直没有更新博客最近。难道我挂了?然而并没有!

今天要安利的是一个基于nodejs的api网关中间件:蚊香狗(下文称:MCDog)

没错,是我最近做的一个模块。虽然还处于初期,但还是忍不住给大家分享一下。

其实关于网关模块,很久前就已经开始关注了,由于种种原因(拖延症)一直没有下手。不过,现在公司开始需要这样一个中间件,刚好我又有时间有兴趣,就着手随便搞了搞。

之所以叫蚊香狗,并没有什么特殊含义,就是觉得足够猎奇,创意来自于下面的这张图:

说回正题,其实目前MCDog提供的功能简陋的不要不要的,我也强烈推荐不要真的部署在生产环境上。不过,这并不表示它完全没有价值。你完全可以把项目在本地跑起来,然后将计划合并的api创建出来,然后把MCDog生成的文件放到线上来提供服务。

而一个称职的网关系统,对可用性和安全性要求都是很高的,同时还要保证灵活可扩展,对于我这样能力的人来说确实有些难以实现。两周前无意间看到了一篇文章,感觉其思路很好,就立马着手开发了这个扩展版。

在开发MCDog过程中,除了已知的难题外,还遇到了一些计划外的问题,小有收获。例如,在校验和解析使用者提交的DSL时,要求要尽可能覆盖到所有异常情况,生成的代码一定要捕获所有可能的异常。

尽管MCDog目前的DSL校验和解析的完善度还不够,采用的解决方案和实现的代码可能也很土鳖,未来也许会选择完全不同的路线。不过在编码的过程中我还是充满了乐趣的。

这篇文章并不打算详细介绍MCDog的使用方式和开发思路,因为我已经在github上提交了较为完整的文档,有兴趣的童鞋可以看一眼去,也欢迎大家把想法和问题在github上反馈给我。

好了,不说了,回家《地平线:黎明》去~~~