啊,来到如今的窝已经好久了。。难搞,项目也作的差很少了,若是8月份没离职的话,我对后端的下阶段任务是要开始拆分服务了,这是新的挑战,也多是我技术栈的下一个技术爆炸点,今天在学习群里,和几个老哥,聊到换工做了,老哥们提议作个总结,感受挺有意思的,不只仅是树新蜂(Tree new Bee,哈哈哈哈今天听一个老哥讲的),还有就是作下知识的巩固,回顾下这段时间我到底都作了什么前端
去年12月份处刚进公司,以前的项目是外包出去的,用PHP作的,老大让我看着外包团队给的接口文档,让我先从新开发一个Web系统,嗯根据接口文档的参数设计数据库,以及接口(差点奔溃),刚来想好好表现下,在开会上打包票,两周就能把接口文档上的接口所有作出来。。(下班的时候我就说了不行哈哈哈,申请延期),这里推荐用Spring Boot + MyBatis Plus这两个框架的确大大减小了个人开发周期,大概一个月多就把接口文档里的需求开发完了
产品现阶段,比较依赖前端工程师,因此开发团队只有我一个后端工程师,我是比较迷茫的,虽然我也很想承担更多的责任,可是这个责任有点大了,之前不少我都不须要去思考,只用写好业务的CRUD就行,哈哈哈小码农(不过的确进步也是可观的,各方面开发,测试,运维;职业规划也有了新的目标)
咱们在这里不得不提一下,外包公司是真的赚钱,一个接口1500起步,小改也要这么多。。忽然有一种出去单干的冲动!redis
这个阶段困扰了我好久,由于产品有一个物联网数据模块,数据量会大的惊人,一个用户一天至少能产生8w条数据,虽然每条数据区别不会很大,这就是IoT,当时外包团队的设计是放入MySQL,这前期的确可这么作,老大预期的用户量在2到3w,我不禁惶恐,到时候我用MySQL存储,这个锅该扔给谁!(我不知道我是否是想多了,在一些交流群上,大佬们安慰我不要过小看MySQL)
OK,要学习了,我去找了物联网数据存储的解决方案:时序数据库(TSDB),开源有挺多的,我最后选了InfluxDB,理由是我第一个看的资料就是它,并且他也刚恰好能实现个人业务需求,有点的遗憾的是InfluxDB单机是开源的,集群要收费,否则以个人性格通常会搭建个集群玩玩
而后就是修改接口内部,从MySQL进行增删查迁移到InfluxDB中(IoT数据没有改的需求)数据库
春节后,我和老大去了趟外包团队的办公地,但愿他们可以帮咱们运维咱们的线上项目(减小了个人负担^_^),而后产品的功能开发由咱们本身作,而后拿到了真正外包设计的数据库!!!(以前项目是我本身根据接口文档设计的,也就是说我前面的Web项目白作了。。。)
苦逼,不过好歹有了经验,对产品理解也有了更深的体会,因此我第二次开发仍是比较顺利的,就是老大想修改数据库的结构,我举个栗子吧,以前数据库的用户表,直接用一个字段存储JSON对象(全部的用户相关信息),这让我以前写修改用户信息相关接口的时候真的很痛苦啊。。,后面的确进行了修改,把那个存储JSON字段里的内容拆分;没法理解外包团队设计的用户表居然还有年龄这个字段
同时,春节后我也开始了写博客的习惯,勤劳的时候一周两三篇,懒得时候一个月也只有一两篇哈哈哈,同时我也发现一个问题,那就是国内的互联网,好多问题,解决都是同一个方案,但这个方案有时候并不能解决个人问题编程
这个阶段,是我进步最大的阶段,没有可以直接模仿的数据库,而后进行删删改改(哈哈哈 )
老大但愿咱们的产品有一个社区的模块,产品可以分享IoT项目,点赞,收藏,关注,用户之间的私信,举报,评论回复;
在这以前,由于业务的需求,本来数据库的物联网项目管理模块业务的开发,由于以前外包团队的设计,让我处理起来真的很痛苦,我不知道他们PHP是否是有什么好的JSON第三方插件(我已经没有力气吐槽设计DB的人),在本来的基础上把业务进行了拆表,由本来的物联网项目表,拆解为物联网项目表(这个表包含了用户编程的代码,以及相关联的字段)和物联网设备表(可能我菜哈哈哈,这就是我理解的解耦,处理他们的关系,我至少再也不那么痛苦了)
我开始进行社区模块的设计,从网上知道Redis的Set数据结构很适合作点赞的功能,后面发现这个方案是可行的,但问题是,公司目前的阶段,服务器也不可能上几百G的内存,若是作的话,后期数据的迁移是很痛苦的,不管是我仍是个人后来者,不过仍是比较幸运的,找到Pika,这是一个对Redis的扩展吧,会用Redis,那么上手Pika无压力!Redis的存储是在缓存,而Pika的存储是在磁盘上,Pika是为解决的是用户使用redis的内存大小超过50G, 80G这样的状况 等等这样的状况,又学习到了哈哈哈,在这里强烈推荐了解学习下这个NoSQL,不管是官方文档仍是官方群都是比较友好的,Pika的开发维护者也乐于帮助我这种小码农解决问题,主要是学习成本也不大!
好了接下来讲社区模块,其实接口业务的开发倒没什么难度,基本上白天若是能解决完数据存储的选型与设计,下班前我都能把接口开发完,走个单测(单测那能叫测试吗?求个心理安慰哈哈哈)
在这期间,我也引入了RocketMQ,目的是为了将举报以及邮箱相关的接口异步化,我认为这样能解决服务器高峰时减小系统的压力,若是作得不对,求喷真的!在选择RocketMQ以前我也用过RabbitMQ,这纯粹是偶然,当时是为了学习Docker,而后在Docker了部署了RabbitMQ,前期我用的信息组件的确是RabbitMQ,但后期让我决定使用RocketMQ,缘由是阿里开发团队也在用这个信息组件(认真脸!哈哈哈),真正的理由是RocketMQ是由Java编写的,RabbitMQ是由Erlang编写的,语言使我更倾向于RocketMQ(我并非说只学一门语言,排斥其余语言,我也有去自学过Python和Go),RocketMQ也的确能知足个人业务需求,后期的扩展,也有阿里大佬能够提供帮助和借鉴参考(小声bb,我之前用的是ActiveMQ)后端
产品第二版本的需求已基本开发完了,如今就是上测试服务器了,而后后面两个月我感受我从后端开发变成了运维。。,项目部署,组件的部署,学习了Jenkins,自动化部署 谁用谁知道
搭建服务器FTP,前端的电脑真的坑,咱们去访问都没问题,就他有问题
部署静态文件项目,使用的是Nginx,而后花了一天时间弄上HTTPS,挖坑踩坑填坑,很简单的事情,搞了很久;个人系统并无部署到tomcat上,而是 直接打Jar包部署(求轻喷!给个理由说服我)
为了图方便,去学了Shell脚本编程,这多是收获最大的一个吧缓存
要么跳槽,要么进行下阶段服务拆分tomcat
更新下,没有跳槽哈哈哈哈,被评价广度够了,深度不够,下阶段就是沉淀到明年春节服务器