一、引子
在平时的开发工作中,使用新的技术是件很常见的事情,而在引入新技术时,充满未知,另外它不一定是自己熟悉的语言或环境,所以很可能会耗掉半天时间去解决其中一个问题,比如:搭建可以运行的环境等等。
下面的文字正是我根据个人的实践经验,对工作过程做的总结,或许对你提升学习/开发效率有所帮助。其中是以「使用kong实现API接口签名验证」为例来阐述具体的几个操作。
二、如何实现
1. 看文档
有了初步想法后,看文档是了解新技术的最直接方式。这一步我相信人人都会做,但我要说的是看文档的正确姿势:花时间通读文档。
很多时候程序出问题了,花很多时间去查错,究其原因就是基础知识不完整,没有好好地把技术文档读完就仓促的做事。比如我自己犯过最典型就是:对lua rewrite模块与nginx rewrite模块的优先级知识不了解,没看文档上来就修改nginx配置以实现自己的需求,随之出现了另外的问题,最后花费不少时间才完全解决。所以认真读文档,你会省很多很多的时间。
2. 结合需求看文档
系统地读过文档后,就可以结合自身需求,对技术的某个模块仔细学习。举个例子:
现在要用kong做网关,并开发kong插件实现API签名验证,那么初步的需求有两个,1.作为网关,具备了哪些能力;2.如何开发插件。需求确定后,就能锁定kong API与插件开发两个章节,有目标的看注意力会比较集中。
随后就仔细看,看的过程可以把自己预计会使用到的配置项摘录到笔记软件中;如果文档是英文文档,还可以对关键的概念或者配置按照自己的理解翻译成中文,记录在笔记软件中。这么做不但自己印象会深刻,而且利于检索。
3. 快速把程序运行起来
对新技术有所了解以后,就要让它在本地运行起来。我觉得在Docker出来之前,这是个很不友好的任务,因为很可能是:你想要装A软件,但发现缺B软件,转头先装B软件的时候又缺C软件......过程简直让人怀疑人生。
Docker
还是以「使用kong实现API接口签名验证」为例,我习惯的做法是先去 The Docker Store 搜一下有没有kong相关的Docker镜像,结果不出所料,而且是官方镜像。
点进详情页有非常详细的使用步骤,几条命令就能安装所依赖应用程序以及启动我们的kong程序。
image.png
image.png
Github
把kong运行起来后,想到一个问题:不可能每次修改网关的接口都通过命令行API啊,必须要有友好的界面。于是在github上搜kong相关的项目,一眼瞄中这个dashboard。
打开一看,还提供了Docker的运行方式,简直太好了。
image.png
docker-compose
到这一步已经用Docker和GitHub基本把需要的软件和本地环境的搭建好了,但是还有一个问题,你可能需要把环境共享给其他同事,或者想做到一键启动,减少重复启动的成本(又得启动kong,又要启动dashboard,又要数据库等等)。因此可以考虑使用docker-compose管理多个服务。
小结:掌握Docker的使用,以及利用好GitHub社区的资源,在环境搭建和应用安装上真的事半功倍。(附上男人看了脸红女人看了流泪的Docker教程)
4. 快速实现需求
kong环境搭好了,接下来任务是开发验证接口签名的插件。这时候可能会开始考虑这个插件要怎么设计,哪些参数应该提供给外部设置,如何存储用户配置的数据等等让插件更优雅好用的问题。这些问题往往需要很多时间思考,所以如果你想要的是快速实现,那么我建议怎么方便怎么来(用配置文件存储自定义配置信息等),优先把核心的验证逻辑做好,剩下的「有了会更好」的功能用迭代的方式去完善。
5. 看源码
实现了插件以后,接着就需要把插件安装到kong网关上,然后给接口装配上这个插件并进行测试。在这个过程中遇到了一个问题(也可能是我文档理解不对),怎么都无法把插件安装到kong网关上,配置文件改来改去都没成功。最后把kong对应版本的源码下载下来,找到配置加载的代码,注释非常详细,最后找到正确的配置地方解决了问题。
这里想说的就是不要害怕看源码,写得好的程序,本身就是很好的文档,比乱蒙效率高的多,而且还可以锻炼看开源项目的能力。
三、总结
kong的这个例子算是比较简单顺利的,实际的情况需要具体问题具体应对。但关于如何快速学习新技术/工具,我想下面几点是通用:
- 至少通读一遍文档;
- 用好Docker和GitHub;
- 不要蒙,看源码;
希望对你有所帮助,也欢迎交流指正:)。
网友评论