自学编程难不难系列 之 后端 ..
作者: 一了 <1liao3@funlang.org>
日期: 2017-12-31
十几年前的 2004 年, 那时还没有所谓的前后端分离, 没有所谓的后端, 当时还在飞利信, 为人事部人才网做了一个短信成绩查询系统. 因为东西很小, 就做了简单的一个设计, 代码也很少, 大致结构如下:
这是我第一次做现在称为后端的东西, 没有什么经验, 从直觉上就觉得要采用队列的方式.
接收到短信的时候, 将接收的内容存到接收队列中, 同时存一份接收日志;
然后另一个处理程序来循环处理接收队列, 从数据库查出成绩, 组合成合适的文本, 存到发送队列中, 同时将其从接收队列中移除;
第三个程序来循环处理发送队列, 发送成功了就将其从队列中移除, 无论发送成功与否都记一份日志.
东西非常简单, 完全没有多余的东西. 全部任务完成之后, 系统会留下接收日志和发送日志.
上线前, 蹲点在人事部, 和甲方人事部一起优化整个人才网, 忙了一整夜. 第二天一上线, 峰值很快就突破了 Alexa 500, 记得是 Alexa 300 多, 在当时算是很不错的一个访问量了, 短信没有丢失一条, 全部回复了过去.
这么多年过去了, 前后端在不断的分离, 后端也越来越复杂, 不过从本质上来说, 队列术仍然是后端的核心技术, 只有任务队列化了, 才能够保证业务不丢失, 才能够自由的横向扩展, 才能够在极端的峰值来临时轻松消峰. 现在已经出现了越来越多的框架, 来帮助完成这件事.
作为一个完全没有计算机学术背景的非科班自学编程者, 是从直觉上觉得应该这样做, 事实上也证明了这是一个行之有效的办法. 其实, 在一年之前, 我主管的一个项目中, 就已经采用这种技术了, 只不过那不是一个纯后端的系统, 见下一篇 自学编程难不难系列 之 项目管理.