- 姓名: 许波
- 性别: 男
- 出生: 1992/03/02
- 邮箱: llkj13579@126.com
- 电话: 18815287479
- 博客: https://blog.mpae.cc
- 目前居住地: 杭州市余杭区天目山路 15 号宏丰公寓
- Node.js 研发工程师
- 杭州大搜车汽车服务有限公司
- Node 研发工程师
- 2014.12 -- 至今
- 宁波工程学院
- 计算机科学与技术专业
- 2011.09 -- 2015.06
-
车牛 (cheniu) 后端 server
- Node.js & Express.js
- MySQL, Redis, Mongo, RocketMQ, RabbitMQ
- 最早接触的 Node 项目,基于 Express.js 框架并对其进行一定的改进。主要提供车牛 APP 早期基本所有的 API。后期也对整个业务线起着很重要的作用。
- 大部分开发都围绕了 APP 的功能的 API。除此之外,还在项目开发过爬虫服务,模拟登录操作,简单小游戏等功能。
- 整个项目因为比较早期,技术核心并不复杂,但通过对项目的开发和维护,也从中得到了很多的锻炼和启发,对我而言,无论是语言技巧,还是服务架构,都起了重要的启蒙作用。
-
帕秋莉网关服务 - 心跳检测服务
- OpenResty, Lua & lua-resty-checkups
- 基于
UPYUN
的lua-resty-checkups
进行定制功能性开发,整个项目采用 Lua 语言,并以 OpenResty 做为项目平台。功能是作为整个网关服务中,心跳检测的模块。 - 项目功能并非复杂,但整个项目采用的 Lua 语言完全从零开始。但从接触到学习到编写项目,从中学到了很多的语言学习和使用技巧。
-
izayoi-coffee
- Node.js & Akyuu.js
- 作为功能性的服务,功能是作为出口数据的聚合。从项目的发展过程中,从完全手动编写 API 到可配置 API,把功能逐渐模块化,以便于功能性扩展和模块化支持。
- 目前除了现有的功能之外,还设计了一套完全基于模块化的项目方案。通过模块化的支持,来实现非对称接口部署,即不同权重的 API 完全可以独立分隔,以免效能较差的请求影响对实时性高的请求。如果配合网关服务(目前未实现),还可以实现横向实例选择性扩展,API 负载均衡等功能。
- 从在项目中学到的技巧之外,由于 Akyuu.js 框架本身也刚开始使用,所以在项目开发过程中,会遇到 BUG,或者功能点不够完善。这些问题也通过阅读框架源码,修改代码得到了解决。也间接学习了一个框架的相关知识点。
-
izayoi-hotel & izayoi-portal
- Node.js & Egg.js & Antd & React.js & Dva.js & Muji.js
- 对外合作方支持平台,只要作用于对外部提供信息查看、文档查看、BUG 调试等功能。前期 izayoi-hotel 项目主要提供文档服务和信息查看。后期业务调整,重新基于 izayoi-hotel 为后端开发了新的一套前端页面。hotel 后端采用 Egg.js 框架进行编写,hotel 前端则是基于 Dva.js 框架进行开发。后期的 izayoi-portal 使用了公司前端团队研发的 React 框架,Muji 进行开发。
- 服务端功能相对比较简单,对我而言,最大的挑战是如何在后端开发的基础上,进行前端项目的编写。庆幸 React.js 的优秀理念,在代码编写上入门基本比较轻松,而对于前端的类似 CSS 等难点,也通过查阅 Google 、资料的方式进行解决。开发效率也从最开始一天一个页面,到一天完成若干个页面的转变。
-
izayoi-message
-
Node.js & Egg.js
-
MySQL & Redis
-
基于 MySQL 为存储,Redis 为缓存的简单消息消费服务。用于对公司业务消息的跨域消费。业务方通过 http 或者 socket 连接服务,进行数据消费。从功能上,支持以下功能
- 消息消费功能
- 消息超时消费功能
- 顺序消费功能
通过 Redis 作为数据的缓存和部分数据的存储,使得接口消费有着不错的负载度。而 MySQL 部分设计为按月分表。所以即使历史数据一直保存,也并不会影响服务消息的消费。而通过对数据的多重标识,即使服务被强制关机或者消费过程中发生意外,都能保证数据不会丢失。
-
偏功能性的一个服务,也是纯自己设计的一套技术方案。长期存储基于 MySQL,短期存储基于 Redis。即使 Redis 遭到破坏,也能保证原始数据不被消费。也支持一个队列的消息被两个业务方以不同的维度进行消费,支持多段消费。也可以选择单端顺序消费。从功能上来说,单机服务基本可以满足目前每小时万级别消息消费。当然对专业的 MQ 来说,这已经是性能很低下的表现,所以目前也极力通过优化逻辑的方式来提高消费的性能。
-
我出生于 92 年,平日看,就是个十足的二次元宅,喜欢吃喜欢宅喜欢二次元,当然也喜欢计算机和编程。
和大部分同学不一样,我接触电脑的时间比较晚,直到高一才拥有自己的电脑。然而高中是寄宿制,所以除了过年过节,也很少有机会接触电脑。但我从小就通过各类学习杂志或者计算机杂志进行学习,也对计算机产生了浓厚的星期。
大学如愿进入了计算专业,早期选了 .NET 作为专业,当时也学写过不少 .NET 的代码。后来接触了 Node.js ,对其间接的代码风格所吸引,加上脚本语言便捷的方式,我很快把 Node.js 作为我批量处理,简单脚本的语言。
作为一个快跨入 30 岁的老男人,我从事 Node.js 开发已经有差不多五年了。经历了人生的风风雨雨,也经历了 Node.js 的风风雨雨。从最早的 callback hell 到后来的 Promise 和最后现在用的最多 Async/Await。除了语法,前端框架也逐渐从 Express.js ,到 Koa.js,到现在的 Egg.js。除此之外,连编程语言,也正从 JavaScript 转变为 TypeScript。
除了对 Node.js 和前端的学习之外,业余时间也对其他东西有着浓厚的兴趣。例如 Linux 相关操作命令,文件服务器搭建等等。在公司同事的帮助下,编写整个项目组第一份 Dockerfile,开启了项目 docker 化的部署的进程。最近也慢慢开始学习 Python 语言作为自己的第二语言,来弥补 JavaScript 所不足的一些地方。
-
语言
- JavaScript & TypeScript
- Lua(主要是在 OpenResty 环境上进行开发)
- React.js
- Python (入门)
-
数据库
- MySQL
- MongoDB
-
缓存
- Redis
- Memcache
-
其他技能点
- Docker
- 性格开朗,待人友好,
- 为人诚实谦虚,能吃苦耐劳,
- 乐于接受新事物,学习能力 & 理解能力强。