文章目录


01 前言

不知不觉来新公司工作也有一年多的时间了(2020.7.7日入职),这个时候也该整理一下项目的经验,看看这段时间积累的一些技能。

02 主要参与的项目

主要参与了如下几个项目:


  • 教育卡项目:基础组件的开发、多个微服务应用以及消息中心运维平台等)
  • 大数据同步:与企微和政数局部门对接数据,从0开始自己搭建框架,巧妙的应用各种设计模式,各种可配置化等技术。
  • 腾讯合作项目:与腾讯教育号业务部门合作的一些系统开发(服务大厅、同安区项目、腾讯教育开放平台等)
  • 其它:某大学的功能开发、运维的支持等细枝末节项目的支持。

整理的脑图如下:

项目经验小结_总结

03 项目回顾

接下来,主要回顾的是参与项目的一些内容,主要偏技术栈方面。

3.1 教育卡项目

教育卡项目一开始是主要参与基础组件的开发:


  • 消息中心基础组件:使用到了策略设计模式(自我感觉设计的不好,有待完善,应该弄成一个​​SDK​​开发包最好)
  • 分布式锁组件:其实就是基于​​Redission​​去进一步封装

然后就开始做一系列的微服务应用开发了,主要是对​​SpringCloud​​微服务应用的进一步使用:


  • 学生档案
  • 健康上报
  • 会议预约
  • 等等。。

这里,最主要的要说下消息运维中心平台(偏设计)。

3.1.1 消息运维平台

消息运维平台从头到尾都有自己亲自设计,在这个过程中,我学会了:


  • ​Axure​​并发出了相关的教程
  • ​SpringSecurity​​的进一步理解
  • 服务保护的一些应用设计(限流、降级、熔断、黑白名单等)

下面贴下我自己设计的架构图:

项目经验小结_后端_02

原型设计部分截图:

项目经验小结_后端_03


因为领导的职位调动,走到这一步项目就不了了之了,实属遗憾!!!


3.1.2 技术栈

教育卡用到的技术栈还是相当的主流的,如下:


  • SpringCloud:​​zuul-gateway​​​(网关)、​​Feign​​​(​​RPC​​​远程调用)、​​Sentinel​​(服务保护)
  • 中间件:​​RabbitMQ​​​(数据同步)、​​nacos​​​(服务发现与注册、分布式配置中心)、​​Redis​​​(缓存)、​​APM​​​监控(​​Kibana​​可视化界面)
  • 部署:​​Maven​​​生命周期、​​Docker Swarm​​​ 自动化部署、​​GitLab​​​、​​Jenkins​
  • 腾讯云:短信、云服务器、​​COS​​​、​​MongoDB​​​(费用太高了,没使用)、​​MYSQL​

以上的技术栈相信已经是互联网的主流技术栈了,还有其它的,大家可以评论留言????。

3.2 大数据同步

大数据同步这个项目是真正发挥我自己能力的一个项目,主要经历了:

收集需求 -> 原型设计 -> 项目架构 -> 项目编码 -> 测试 -> 上线 -> 运维 -> 客户沟通 -> 操作文档这些一系列的传统开发流程。

这个项目基本都是一个人在完成,下面来详细的整理自己做了哪些工作。

3.2.1 开发前

在开发前,调研了项目的可行性研究,并针对性选择相关的技术来设计目前的框架。主要用到了一下工具:


  • 腾讯会议
  • 在线文档​​showdoc​
  • 排期(在线​​wps​​)

3.2.2 项目架构

使用​​maven​​的生命周期特性来进行合理的架构分包,别的项目依赖即可调用,十分方便。里面用到了大量的设计模式,例如观察者、策略者、责任链等等,简单架构图如下:

项目经验小结_后端_04

可配置化主要在数据库里配置,程序核心的配置直接读数据库,在程序不重新启动的情况下,直接配置数据库即可对整个项目进行控制。


备注:本来我是打算自己使用​​vue​​来弄一个前端的,奈何没有资源方面的支持,所以只能通过数据库来配置了。


项目经验小结_技术栈_05

3.2.3 上线部署

项目开始,是直接部署到云上的​​windows​​​服务器的,跑起的服务总是占用​​CPU90%​​以上,而且还会被其它人关闭,因此后来改变了策略。使用:jenkins + centos的模式上线部署了,每一步的搭建都是由自己一步一步完成,整个过程真的很不容易(主要是要耗费大量的时间)。


这里​​jenkins​​部署的流程就不讲了,有需要的可以看我的博客,有相关的文章记录。


3.2.4 技术栈

当然这里使用的技术栈就很多了,除了大量的设计模式来遵循六大原则,还使用了多线程,并对多线程有进一步的了解,也初步掌握了基本的线程调优,这些也是需要自己平时大量的去积累编码才能熟透用透的。

3.3 腾讯合作项目

与第三方腾讯合作也是我平时的工作之一,主要也做了一些对接的工作,顺便了解了他们的架构。

3.3.1 教育号SaaS平台

也许是直属领导的安排,这一部分的工作较为核心,我没有过多的参与。但是我也有参与,并了解了其基本的工作(其实学不了什么东西,就是腾讯接口的API调用及CURD的操作)。这些都不重要,一般人弄个一两天就回了,所以我没有过多的关注,我更加看重的是腾讯云的架构。

现在的互联网,更多的都在讲 “云计算”,下面我贴一张腾讯云的架构图(联请联系博主!),主要知道“​​SaaS​​”、“​​PaaS​​”、“​​IaaS​​”这些概念:

项目经验小结_后端_06

3.3.2 云图平台

除了云计算,现在主流讲的是“低代码”,低代码也就是**“0代码”**的意思,无需编码即可实现界面的设计。参与的内容就是一个大屏项目,主要通过拖拽控件,然后关联控件,通过关联数据库的数据来实现配置。在这里不想多说了,都是别人的产品,详情可以参考:​https://cloud.tencent.com/document/product/665">​https://cloud.tencent.com/document/product/665​

3.3.3 腾讯教育开放平台

不得不说,腾讯真的是想做大自己的产品的,它们自己做了一个产品,叫“腾讯教育开放平台”,这个平台主要是为 “教育号”而生的,就是“教育号”​​SaaS​​​平台的一个​​API​​​管家,​​SaaS​​​平台里面的每个应用可以在“开放平台”开放自己的​​API​​​接口给其它​​SaaS​​平台应用去调用。也在里面配置过相关的接口,其实如果要实现起来也是不难的,较为复杂的只是 “权限校验+接口映射”,也没其它的了。

3.3.4 一些SaaS应用

在 “腾讯教育号” 的大平台下,也做过不少的应用,例如:


  • 成都服务大厅(网站群)
  • 成都人事系统
  • 厦门同安区项目
  • 等等。。。

上述没用到什么技术,不过能让自己提升的可能就是一些自动化脚本的编码(例如:前端打包脚本,因为项目是单体的,没有做分布式)。

3.4 其它

剩下的,就是一些细枝末节项目的支持了,主要做了某大学的“后勤管理系统”及“宿舍管系统”的业务开发。

还有一些运维的工作,下面是自己整理的一张“腾讯云”运维的思维方向图,如下:

项目经验小结_技术栈_07

运维这一部分的工作,由于运维负责的相关方(只有一个人)消极工作,频繁的请假与式沟通,也没从他身上学到什么。主要是太多重要的信息都给他掌握了(比如账号密码这些),实属郁闷,也无人协调,也许这就是弱矩阵的组织结构吧。


可能在本公司也没机会去接触的了,到时自己再系统的过一遍吧,当做增加自己的技能。


04 文末

在这一年多的时间,可以看到自己在 “教育卡” 以及 “大数据同步”这两个项目学的东西是最多的,进步也是最大的,后来跟腾讯对接(也许是更换了领导)明显感觉到学的东西没啥营养了(频繁的​​CURD​​)。

希望自己在接下来职业生涯里能学到更多的知识,掌握更加全面的技能,当然这里的 “知识” 不仅仅是技术方面的,而是在自己的行业里,从0开始到整个项目的后期运营(这里涉及到了​​PMP​​了,哈哈),并为自己将来的目标做好铺路。