01 前言
不知不觉来新公司工作也有一年多的时间了(2020.7.7日入职),这个时候也该整理一下项目的经验,看看这段时间积累的一些技能。
02 主要参与的项目
主要参与了如下几个项目:
- 教育卡项目:基础组件的开发、多个微服务应用以及消息中心运维平台等)
- 大数据同步:与企微和政数局部门对接数据,从0开始自己搭建框架,巧妙的应用各种设计模式,各种可配置化等技术。
- 腾讯合作项目:与腾讯教育号业务部门合作的一些系统开发(服务大厅、同安区项目、腾讯教育开放平台等)
- 其它:某大学的功能开发、运维的支持等细枝末节项目的支持。
整理的脑图如下:
03 项目回顾
接下来,主要回顾的是参与项目的一些内容,主要偏技术栈方面。
3.1 教育卡项目
教育卡项目一开始是主要参与基础组件的开发:
- 消息中心基础组件:使用到了策略设计模式(自我感觉设计的不好,有待完善,应该弄成一个
SDK
开发包最好) - 分布式锁组件:其实就是基于
Redission
去进一步封装
然后就开始做一系列的微服务应用开发了,主要是对SpringCloud
微服务应用的进一步使用:
- 学生档案
- 健康上报
- 会议预约
- 等等。。
这里,最主要的要说下消息运维中心平台(偏设计)。
3.1.1 消息运维平台
消息运维平台从头到尾都有自己亲自设计,在这个过程中,我学会了:
Axure
并发出了相关的教程SpringSecurity
的进一步理解- 服务保护的一些应用设计(限流、降级、熔断、黑白名单等)
下面贴下我自己设计的架构图:
原型设计部分截图:
因为领导的职位调动,走到这一步项目就不了了之了,实属遗憾!!!
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
的生命周期特性来进行合理的架构分包,别的项目依赖即可调用,十分方便。里面用到了大量的设计模式,例如观察者、策略者、责任链等等,简单架构图如下:
可配置化主要在数据库里配置,程序核心的配置直接读数据库,在程序不重新启动的情况下,直接配置数据库即可对整个项目进行控制。
备注:本来我是打算自己使用
vue
来弄一个前端的,奈何没有资源方面的支持,所以只能通过数据库来配置了。
3.2.3 上线部署
项目开始,是直接部署到云上的windows
服务器的,跑起的服务总是占用CPU90%
以上,而且还会被其它人关闭,因此后来改变了策略。使用:jenkins + centos的模式上线部署了,每一步的搭建都是由自己一步一步完成,整个过程真的很不容易(主要是要耗费大量的时间)。
这里
jenkins
部署的流程就不讲了,有需要的可以看我的博客,有相关的文章记录。
3.2.4 技术栈
当然这里使用的技术栈就很多了,除了大量的设计模式来遵循六大原则,还使用了多线程,并对多线程有进一步的了解,也初步掌握了基本的线程调优,这些也是需要自己平时大量的去积累编码才能熟透用透的。
3.3 腾讯合作项目
与第三方腾讯合作也是我平时的工作之一,主要也做了一些对接的工作,顺便了解了他们的架构。
3.3.1 教育号SaaS平台
也许是直属领导的安排,这一部分的工作较为核心,我没有过多的参与。但是我也有参与,并了解了其基本的工作(其实学不了什么东西,就是腾讯接口的API调用及CURD的操作)。这些都不重要,一般人弄个一两天就回了,所以我没有过多的关注,我更加看重的是腾讯云的架构。
现在的互联网,更多的都在讲 “云计算”,下面我贴一张腾讯云的架构图(转载联请联系博主!),主要知道“SaaS
”、“PaaS
”、“IaaS
”这些概念:
3.3.2 云图平台
除了云计算,现在主流讲的是“低代码”,低代码也就是**“0代码”**的意思,无需编码即可实现界面的设计。参与的内容就是一个大屏项目,主要通过拖拽控件,然后关联控件,通过关联数据库的数据来实现配置。在这里不想多说了,都是别人的产品,详情可以参考:https://cloud.tencent.com/document/product/665
3.3.3 腾讯教育开放平台
不得不说,腾讯真的是想做大自己的产品的,它们自己做了一个产品,叫“腾讯教育开放平台”,这个平台主要是为 “教育号”而生的,就是“教育号”SaaS
平台的一个API
管家,SaaS
平台里面的每个应用可以在“开放平台”开放自己的API
接口给其它SaaS
平台应用去调用。也在里面配置过相关的接口,其实如果要实现起来也是不难的,较为复杂的只是 “权限校验+接口映射”,也没其它的了。
3.3.4 一些SaaS应用
在 “腾讯教育号” 的大平台下,也做过不少的应用,例如:
- 成都服务大厅(网站群)
- 成都人事系统
- 厦门同安区项目
- 等等。。。
上述没用到什么技术,不过能让自己提升的可能就是一些自动化脚本的编码(例如:前端打包脚本,因为项目是单体的,没有做分布式)。
3.4 其它
剩下的,就是一些细枝末节项目的支持了,主要做了某大学的“后勤管理系统”及“宿舍管系统”的业务开发。
还有一些运维的工作,下面是自己整理的一张“腾讯云”运维的思维方向图,如下:
运维这一部分的工作,由于运维负责的相关方(只有一个人)消极工作,频繁的请假与推式沟通,也没从他身上学到什么。主要是太多重要的信息都给他掌握了(比如账号密码这些),实属郁闷,也无人协调,也许这就是弱矩阵的组织结构吧。
可能在本公司也没机会去接触的了,到时自己再系统的过一遍吧,当做增加自己的技能。
04 文末
在这一年多的时间,可以看到自己在 “教育卡” 以及 “大数据同步”这两个项目学的东西是最多的,进步也是最大的,后来跟腾讯对接(也许是更换了领导)明显感觉到学的东西没啥营养了(频繁的CURD
)。
希望自己在接下来职业生涯里能学到更多的知识,掌握更加全面的技能,当然这里的 “知识” 不仅仅是技术方面的,而是在自己的行业里,从0开始到整个项目的后期运营(这里涉及到了PMP
了,哈哈),并为自己将来的目标做好铺路。