原文[高可用架构]
仔细的对比了一遍,感谢tim yang和庆丰校长的整理,非常严谨,比我讲的要好,另外感谢霍老板封我是StuQ明星讲师[呲牙][呲牙]
本周末北京线下会讲讲,感谢@hain 海良组织
github地址,https://github.com/i5ting/nodejs-fullstack 持续更新,欢迎star
ppt版本, http://git.oschina.net/ubiware/node-party/raw/master/10th/i5ting-node 全栈.pdf
全文完
欢迎关注我的公众号【node全栈】
联系我,更多交流
好文,收藏了
文章不错,这才是真正的布道者,不回避问题,直面问题,给出解决方案。
布道者和鼓吹者最大的区别就在于:
一个是真正深入使用了,知道深浅;一个刚学了个皮毛,不知深浅。
一个能够相对包容的对待技术,框架,语言;一个是某种技术,框架,语言的教徒,不允许说半点不好,表面虔诚,但大多浅尝辄止。
我个人更看好c和lua的结合,比起javascript和c++的结合更简单灵活,异步表达也更为优雅直观。桑老师提到的 openresty 已经实现了用纯同步的代码写异步程序,是非常好的探索。全栈我认为不应该是语言层面的概念,而是技能层面的概念,应该是跟语言无关的,真正全栈的人,如桑老师,各种语言都能玩得好。全栈是能够统合前后端技术的综合性人才,绝对不是会javascript,会nodejs那么简单,桑老师的文章已经将知识点和方向写得很清楚了,有志于全栈的同学可以参考学习。
@coordcn 很同意跟语言无关这个看法。语言只是解决问题的一种工具,更重要的是对问题及其解决方案以及背后自然原理的理解。如此,才能举一反三。
文章都是干货
学习了
学习了
好文!
好文!
@coordcn 赞一个
好文!
ppt版本见https://cnodejs.org/topic/56f8ce05e2d0ba0b32388717
直接预览下载
Mark!
1 对于回调," 第一、callback hell问题,目前已经很好的解决了 "这吹得有点太大了 koa的yield/co.wrap/async 只能算探索 ,称不上已经很好地的解决了 2 对于事务 java有threadLocal synchronized + hibernate/ibatis MEAN只能靠码农手写代码 3 对于调试 java有异常堆栈, php有行号 nodejs只有events.js: throw er; // Unhandled ‘error’ event
@yakczh 第一点,你认为其他语言有更好的解决方式么?
@yakczh 第二点:单线程里,你讲threadLocal有啥意义么?你所谓hibernate/ibatis就不需要手写代码么?和数据库交互操作差别到底有多少?
@i5ting 其他语言没有这个问题,所以不需要解决
@i5ting hibernate/ibatis有完整的事务支持,大部分情况只需要配置,
@i5ting 运行时打印的异常栈,能跟编译前的代码对应上吗?
@yakczh 扯淡,但凡有异步,都会有这个问题,不信你去看promise/a+规范,有多少语言实现了
@yakczh 事务本身是db自己的事儿,而commit\rollback这些语言级别控制差别不会很大。hibernate虽然非常无比完善了,可是很多公司还是用ibatis,其中很大一部分就是熟练度的问题,你说呢?如果你h玩的足够牛逼,实际开发也是够的。所以技术并不是瓶颈,你说呢?
@varHarrie koa@2正式版已经发了,完美async/await等3种中间件写法,如果等node sdk支持async就会发布stable版,值得期待
electronic的东西性能堪忧。。。atom卡爆了,跟subl没法比啊
@coordcn openresty是lua的coroutine吧,其实我没有太看出它和async/await有啥太大差别,求科普
https://cnodejs.org/topic/5709cb2f94b38dcb3c09a7ac#5709fcbebc564eaf3c6a48e4
nodejs只是更直接的奔向共产主义(完全异步),后来发现大跃进、文革(callbackhell)等,于是走上了特色的社会主义,所以多这些来说,真的算解放了,“目前已经很好的解决了”,不算吹牛吧,你说呢?
@THCloud vscode的体验还可以,哈哈,我的mac下,其他确实比较卡
@i5ting 基本的command+L 这类快捷键都不支持呀 我还是去年在微软实习才知道这么个玩意,尝试了一阵还是放弃了,也不写ts也不会那个东西的调试,远不如subl好用。。。
@THCloud 从vsc转sublime再转atom 主要atom丰富拓展,界面友好,其实机器不会太差的,倒没感觉多卡。配合sublime 主要vsc,插件少,选项卡不能忍。
@THCloud 现在已经好非常多了,试试吧
差别大去了,openresty在lua层面是没有显式异步的,跟写同步程序没区别,你即便不理解异步,也可以写异步程序。
如果将openresty理解为隐式coroutine,那async/await可以理解为显式的coroutine,最主要的差别就在这里,async/await还是离不开异步思维的。
nodejs刚开始的时候那种完全回调异步应该叫原始共产主义,基于回调的异步虽然在性能上非常好,但编码复杂,这种模式其他语言早就有了。ndoejs创始人最开始是极力排斥协程的,但现在javascript发展却遮遮掩掩的加入了类协程的东西。真正的共产主义是类似openresty这种的形式同步写法,不管是形式,还是思考方式,程序员都不需要考虑异步。异步的形式对编程是有害的,我们要的只是异步的性能好处。
没说你吹牛,我也不敢说特色社会主义不算解放,但我们肯定会朝真正的社会主义发展的,并且最终会实现真正的共产主义——机器自我编程。
太恐怖了,编程共产主义到来那天,人类将被奴役。。。。
@varHarrie 哇,当时mac mini,打开一个项目,command+p 大半天才出来 然后就果断卸载atom了
@varHarrie 但是electronic的倒是可以有很多subl没有的插件 去年那个什么active power mode,写代码带火花那个,放到subl肯定就没有了,哈哈
mark
好文章! 收藏
@13241491189 你们是真能挖啊,哈哈~
@coordcn 后端就openresty写接口,前端交给node.js,你看这样行不
好文,看了开头,下班后慢慢看
@i5ting 哈哈 此言差矣
@coolicer 可以的
@coordcn 有没有人这样干呢?唯一担心 openresty这个东西的库不够,而开发者又没有能力去造。
@coolicer 如果只会js的建议还是不要用了,的确很多库要自己造的。在局部性能上,如字符串操作,lua的性能还不如js,lua比js优秀的是异步编程模型,lua可以完全做到在lua层用同步代码去写异步程序。js要实现这个特性,generator/yield,async/await都不行,在js层面,异步还是显式的,只能做到局部同步,而且这两者跟回调一样,具有传染性。如果js复杂的编程模型不是难题的话,用js就可以了。lua适合即想获得异步的高性能好处,又不想费脑细胞去理解复杂的异步编程模型的人。
@coordcn 鱼与熊掌啊。js的显式异步是让用户自己管理的意思吗?
@i5ting WAF上用的比较多,章亦春还计划搞一个开源的。
看过 @i5ting 很多文章,内容非常丰富,是踏踏实实做事的一类人,超赞!
好实在的文章
@Richar-Dada @imfly 感谢~
更新了移动端内容
移动端分
- native原生开发
- hybrid混搭式开发(比如cordova)
- 组件式开发(比如rn)
面临的问题:native开发是姥姥不疼舅舅不爱,非常尴尬,很明显连培训出的人就业不要工资混经验就很明显了。另外领导们也都在惦记,能不能用h5写?这还算是保守的,如果直接激进的就直接上rn了,那么native开发的程序员就变了
一个写插件的程序员…招谁惹谁了。。。。
没办法,认命吧,温水里舒服了几年,也该学点东西了
- hybrid或组件化开发,你总要会一样
- 无论哪种,你都离前端很近,因为h5或组件化都是从前端走出来的
- 组件化在前端领域先行,无论借鉴还是学习都不可避免
- 如果没时间就直接上组件化,如果有时间就好好学学前端完整体系,最终也还是要学组件化
未来的3点判断
- js一统天下(nodejs做后端,传统web和h5使用javasctipt,更智能的工具如gulp,更简单的写法如coffeescript等)
- h5大行其道,为最终方向(网速变快,硬件内存增长)
- 组件化,和jvm所谓跨平台类似,是一个很长的中间过渡阶段,用户体验好,唯一的就是现在相对初期,有点坑
mark
来自酷炫的 CNodeMD
@i5ting 严重赞成,虽然js毛病不少,但也掩盖不了它身上的光芒,前些年由于es标准问题,导致js的发展几乎停滞不前,但现在不一样了,随着es标准的快速迭代,和node, h5的发展,未来将是js的天下。现在很多桌面软件已经用electron开发。后端用node开发真的很爽,没觉得比其他语言哪里差了。关键是前后端语言统一,由此带来的高效与便捷是其他语言没法比的。不说其他,就说处理json数据,这应该是目前使用最广泛的数据交换格式了吧 ,js是最方便的语言,没有之一。