今天在 Q 群里唠一个新技术(关于 phper 如何学习 swoole)的时候,突然一群友发一句 "脱离业务的技术都是耍流氓",顿时让我等老鸟无言以对。然后,就是一堆的不明群众复制、刷屏。。。
幸好本人反应够快,快速输入下面这段话:
分享一些工作的经验:不存在脱离业务的技术。所有新技术都是为了解决一些业务痛点,让特定业务更爽。
当我们掌握足够多的技术,在遇到问题时就可以选择适合的技术进行解决。反之,如果没有技术储备,就会手足无措,又或者说选择一些不太恰当的技术进行解决,最终都会走一些弯路、踩一些坑。走弯路、踩坑固然是所有项目都会遇到的一个问题,一个人走弯路、踩坑也许不是什么大问题,但整个项目走弯路,这个最终苦的还是我们这些技术人员。
技术储备至关重要,不论是团队还是个人。有了足够的技术储备,才可以游刃有余,做到胸有成竹,遇到问题可以快速找到 N 种解决办法,并评估各个方案的优缺点进行合理选择。
总之一句话:根据业务场景选技术,但前提是对各种技术都有深入的理解,能熟知其利弊。
下面会围绕这个观点,做一些延伸思考:
关于这个问题,我的同事 "江边望海" 曾经提到一种关于 "技术人员的成长之路" 的思路可以拿来借鉴:
第一个阶段: 做技术人员的前 3 年,不断的做业务,做各种各样的业务。
第二个阶段: 3-5 年,解决一些异常问题,遇到足够多的问题。总结其规律,找出业务痛点
第三个阶段: 根据痛点、规律制定流程(开发规范、协作方式、设计模式),开发新的解决方案(新技术的诞生)
不谋而合,新技术的目标就是为了解决一些痛点,优化工作效率。无论新技术是一种实际的技术,如 redis、hadoop 等解决现有存储的问题。还是如 MVC、设计模式、OAuth 一般只是提供一种思路,不同语言有不同的实现。新的技术(思想)只是针对特定痛点的一剂良药,用的得当便可事半功倍,用的不得当便会事倍功半。
先说一段题外话:很久以前的一次聊天中,我给客服小妹讲一黑科技:现在有一种技术,可以模拟任何人的手机号给任何人打电话、发短信。
- 然后客服小妹就问,这技术有什么用呀?可以把自己伪装成任意一个人,然后给你打电话,你怕不怕。然后呢?这么说吧,假如给你家人发短信,上面显示你的手机号,让汇钱,怕不怕我家人才没这么笨。。。那。。。然后我就各种解释,想让她明白这技术多么牛逼,多么有用。"好啦,我明白了,我逗你玩的,别太认真,哈哈哈哈"然后就这样了。。。
技术是很牛逼的技术,只是要想让别人认可这项技术,寻找这项技术所解决的痛点尤为重要。幸好只是跟同事瞎聊,如果就拿类似这样的方案跟领导讲技术解决方案,说不明白各模块所存在的必要价值,估计就惨了。
好吧,说正事,如何才能寻找开发中的痛点?
引入新技术可能存在一些问题,这是大家的共识。具体问题包括但不限于以下几点:
曾经听过滴滴架构师李令辉的一次分享《用灵活的架构去适应变化的业务》,明确指出了我们不引入新的开源技术。这看似有些难以理解,但却有其意义。引入新技术有其优势,也有其弊端。再引用李令辉的一句:
我们还有野心重新梳理整体业务架构,中国架构师比较不自信,当设计一个新架构的时候,你的领导和同事就会问是否有大公司这么做过,大公司包括了 BAT3M。
技术方案固然重要,但有一点更为重要,就是团队的 "内研" 能力。团队的内部研发能力如果较弱,就算拿最牛逼的技术依然会走弯路。别人的技术方案只是一种工具,内研能力才是决定我们是否能把这个工具用在正确地方的主要因素。
- 最后还是说一说开始的话题:phper有没有必要学习swoole。本来就是想说这个话题的,结果被打断了,好吧,我还是很执着的。
swoole 做为一个新的技术(其实成熟版本已经存在 3 年以上),与 php 充分融合,借用 php 的语法,使用 php 的 cli 运行模式就可以测试其全部功能。看似 swoole 是 php 的一个扩展方法,实则不然。swoole 是一套网络框架,看过其源码就会明白,其中有大量的 C 代码,实现了并发、网络编程、共享内存操作方面的东西,最终只是以 php 的扩展方式做为最终呈现。
- 那么,还有必要学吗?
当然有,php 做为一种脚本语言,常规的职责就是藏在 nginx/apache 的后面接收请求,处理请求并返回给 nginx。存在的问题是每接到一个请求就需要初始化一些资源,返回结果后就把资源释放掉。这就决定了 php 只能做 web 应用,做服务就略牵强。举个例子来说,用 php 提供一个分词服务,分词的服务端需要先加载词典,然后接收用户传入的文本,将其分词并返回。整个过程最耗时的就是加载词典,而 php 常规的 php-fpm 模式需要每次加载词典,这无疑是个很大的问题。如果把 php 前端的 nginx 去掉,php 直接对外提供服务,那么就可以让 php 启动一个进程并一直存在,词典也只需要加载一次。
这看似简单的调整,实则已经改变了 php 在整个架构中的职责。如 swoole 官网所写:重新定义 PHP。
- 要如何学?
官网的 demo 看起来很简单,但刚才已经说了,swoole 不再是单纯的 php,是重新定义 PHP。常规 phper 所不了解的网络编程、并发、进程间通信在这里已经是常识问题,不会有单独的文档介绍这些内容,需要自己去补充。如果有 java、C/C++ 的并发编程经验,上手这个会更方便。如果单独去了解一下相关的知识,再来看这个东西,会有一种遇到神器的感觉:swoole 简化了网络编程的许多方面,可以让 phper 以最快的方式实现一个网络服务器。然而也有一步一个坑的走过来的 phper,真是边走边在心里咒骂,怎么这个坑在文档中没有说明,为什么这个变量不起作用。具体的坑在另一篇文档中有说明(),这里就不再调戏 swoole 了,哈哈。至于 swoole 能做什么,有人问能做数据采集吗,这里也不做解释,swoole 提供了更多的可能。掌握此技能很有必要(业余时间),不管现在你是否有适用场景。
不是有个段子吗:如果你有一把锤子,看哪都是钉子。但如果你有 100 种熟练使用的工具呢?
所拥有的见闻(技能),决定了所看到的世界。
扫码关注公众号,就有机会天天听我瞎哔哔~来源: http://www.cnblogs.com/dormscript/p/5847487.html