求职意向
- Go 语言服务端开发工程师
- SRE 工程师 / 运维开发工程师
- ……
教育背景
- 本科:山东科技大学 计算机科学与技术专业
- 时间:2018.09 - 2022.08
- 主修课程:数据结构、计算机网络、计算机组成原理、操作系统、算法设计与分析、Web应用开发、移动应用开发、数据库系统等。
- 所获奖励:
- 2019.05 获山东科技大学第四届网络安全技能大赛暨驻青高校网络安全邀请赛个人三等奖、团体一等奖
- 2019.06 获2019年MathorCup高校数学建模挑战赛三等奖
- 2020.01 获2019年亚太地区大学生数学建模竞赛三等奖
- 2020.05 获山东科技大学Java程序设计大赛一等奖
- 2020.06 获2020年MathorCup高校数学建模挑战赛三等奖
- 2019.09 获院级“科技创新奖学金”1次
- 2020.09 获院级“科技创新奖学金”1次
- 2021.05 获山东科技大学思途杯网页前端设计大赛一等奖
专业技能
- 扎实的Go语言基础,有良好的编码习惯和编码风格,熟悉常见的Go语言API,熟悉并发编程的基本概念和常见方法,熟悉Go语言并发编程;掌握常见的面向对象分析与设计方法,熟悉面向对象的设计原则,熟悉常用的 GoF 设计模式,熟悉常见的数据结构和算法;熟练使用Go语言开发和前端开发工具Visual Studio Code,熟练使用版本控制工具Git,有多人协作进行大型项目开发的经验。
- 熟悉 Go 语言常用的 Web 应用开发框架 Gin、Go 语言常用的 RPC 框架 gRPC,有在大型项目中使用 Gin 提供的 HTTP 服务开发能力、gRPC 提供的远程过程调用能力以及 GORM 提供的 ORM 支持进行 Web 项目开发的经验。
- 熟悉常用的关系型数据库产品 MySQL,熟悉常用的非关系型数据库产品 MongoDB 和 Redis,有使用 MySQL、MongoDB 和 Redis 进行大型项目开发的经验。
- 熟练使用Linux操作系统,有两年日常使用Linux操作系统的经验,熟悉 Linux 系统下的应用部署与维护,熟悉Shell脚本语言,熟悉使用 Shell 脚本语言编写运维脚本的方法。
- 熟悉 Docker,熟练使用 Docker 进行项目的部署;了解常用的容器编排工具 Kubernetes,了解使用 Kubernetes 进行容器编排的基本方法。
- 了解常用的大型微服务系统管理工具 Istio,了解 Istio 的组件和各种概念及其配置文件的编写,了解使用 Istio 部署和管理大型微服务项目的方法,了解 Service Mesh 生态。
- 自学能力很强,对云原生(Cloud Native)、微服务、服务网格(Service Mesh)、SRE、DevOps等新思想、新概念、新技术有浓厚的兴趣和一定的了解,深度参与开源社区,热衷于接受和使用新技术。
- 善于解决现有系统中存在的缺陷和不足,有多次独立定位并修复与并发、缓存相关的复杂缺陷的经验。
工作经历
- Sea Group - Garena - GRE 部门
- 时间:2022.03 - 2022.11(2022.03 - 2022.08 为实习,2022.08 - 2022.11 为正式工作)
- 负责作业平台、资产管理平台、标准运维平台、跳板机等运维工具的开发。
- 负责与项目相关人员共同完成系统设计、Go 语言服务端开发和部分前端开发。
- 负责项目的改进与优化,快速定位并修复软件缺陷,提升了系统的性能、稳定性和可用性。
- 促进 Google SRE 思想在部门内部的普及。
项目经验
QueenBee 作业编排平台
- 时间:2022.03 - 2022.11
- 职责:Go 语言服务端开发
- 该系统主要作为运维自动化平台进行设计,实现对上万台服务器统一编排、执行自动化的运维操作。系统主要具有运维脚本管理、运维操作编排、快速执行、定时任务、Agent 管理、云区域管理等功能。
- 项目为微服务架构,分为网关、作业服务、定时任务服务、文件服务和Agent 管理服务五个微服务,使用 Gin 作为 Web 框架,使用 etcd 作为服务注册与发现中心,使用 MongoDB 数据库,使用 Redis 作为缓存数据库的同时实现了进程内缓存,使用 NSQ 作为消息队列,使用Git进行版本控制,采用前后端分离的方法进行开发,前后端通过 RESTful API 进行通信。
- 完成了基于 etcd 的服务注册与发现、基于 Prometheus 的监控指标采集与导出、定时任务功能、go-fastdfs 集群的搭建与维护、Worker 的安装与管理、执行日志的上传与汇总导出等核心功能的开发。
- 独立定位、解决了若干与并发、缓存相关的复杂缺陷,提升了系统的可靠性和可用性;通过使用 Redis 作为缓存数据库配合预加载机制,减少了 Agent 健康检查时读数据库的次数,使得数据库的读写压力降低了 30% 左右;通过进程内缓存,减少了作业日志存储和作业状态保存时读写数据库的次数,解决了数据库性能瓶颈问题的同时提高了消息消费的速度,解决了 NSQ 消息队列积压的问题;通过对微服务进行重构,解决了两大资源消耗较高的功能:作业执行和日志导出互相争夺资源导致应用性能下降的问题。
- 公司内部上万台服务器均通过该平台进行管理,大大提高了运维工作的效率,降低了运维成本。
Labrador-Exporter 客户端代理(Agent)
- 时间:2022.03 - 2022.11
- 职责:Go 语言服务端开发
- 该系统作为业务服务器上运行的客户端代理而设计,具有暴露 Prometheus Metric、执行 QueenBee 下发的运维脚本并返回执行结果和执行日志、执行文件分发操作等功能。
- 项目为单体架构,使用 Gin 作为 HTTP 服务开发框架,通过 RESTful API 进行调用,使用 Go API 实现了脚本执行与执行日志实时获取功能,根据操作系统使用 supervisor、systemctl 等多种方式部署。
- 完成了日志导出功能的重构、执行 iftop 命令获取机器的内外网流量并暴露为 Prometheus Metric 等功能的开发;完成了执行日志丢失、执行结果错误、资源占用过高影响业务进程等缺陷的修复工作。
- 通过对现有功能进行重构,解决了执行运维脚本时写日志操作资源占用高、写满业务机器磁盘的问题,保证业务进程的稳定;通过灵活使用 defer 语句确保关键操作的执行,解决了日志和执行结果丢失的问题。
GTOP 标准运维平台
- 时间:2022.10 - 2022.11
- 职责:Go 语言服务端开发
- 该系统主要作为各类运维操作的入口平台进行设计,主要用户是运营人员等无技术知识储备的人员。
- 项目为单体架构,基于 MVC 模式进行设计,使用 gRPC Gateway 同时提供 HTTP 与 RPC 服务,使用 GORM 框架,使用 Git 进行版本控制,使用 MySQL 数据库,采用前后端分离的方法进行开发,前后端通过 gRPC Gateway 提供的 RESTful API 进行通信。
- 完成了配合 QueenBee 作业平台完成游戏服务器日志拉取、游戏服务器日志导出等功能的开发。
- 通过灵活使用 channel 实现耗时操作的异步化,确保 HTTP 请求快速返回,保证了用户体验;通过 select 语句配合 for 语句实现重试机制、配合 context 实现灵活的 goroutine 控制机制;通过实现按关键字加锁的机制保证了日志导出操作的幂等性。
Collie 资产管理平台
- 时间:2022.03 - 2022.11
- 职责:Go 语言服务端开发
- 该系统主要作为资产管理与操作工具进行设计,是部门内部所有运维工具的入口平台,用于提高资产管理的效率,并为资产在运维工具中的识别提供统一标识。
- 项目为分布式应用,分为 Web 应用和定时任务进程两个服务,其中 Web 应用负责提供统一的操作入口,定时任务进程负责定时调用云服务商的 API 获取资产列表并与系统内部的现有资产进行比对操作。项目基于 MVC 模式,使用 Gin 作为 HTTP 服务开发框架,使用 Git 进行版本控制,使用 MySQL 数据库,采用前后端分离的方法进行开发,前后端通过 RESTful API 进行通信。
- 完成了使用 SDK 拉取 GCP、IBM 两家云服务商并进行资产比对的逻辑;完成了 GCP 自动扩缩容的实际执行逻辑;完善了系统现有的功能,如资产的退库判断、资产的状态展示等。
Bulldog 跳板机
- 时间:2022.09 - 2022.11
- 职责:Go 语言服务端开发
- 该系统主要作为服务器的统一登录入口进行设计,使得运维人员可以在浏览器中对服务器执行操作,同时可以记录下用户输入的命令形成录像以供审计。
- 项目为分布式应用,分为 Web 应用和云区域网关代理(Exchange)。其中 Web 应用提供统一的操作入口,云区域网关代理程序负责实现内外网之间的转发工作。项目基于 MVC 模式,使用 Gin 作为 HTTP 开发框架,使用 Git 进行版本控制,使用 MongoDB 数据库,采用前后端分离的方法进行开发,前后端通过 RESTful API 进行通信。
- 完成了录像的记录、导出、上传操作,活跃连接识别,根据命令记录跳转到录像等功能。
所获奖励
- 2019.05 获山东科技大学第四届网络安全技能大赛暨驻青高校网络安全邀请赛个人三等奖、团体一等奖
- 2019.06 获2019年MathorCup高校数学建模挑战赛三等奖
- 2020.01 获2019年亚太地区大学生数学建模竞赛三等奖
- 2020.05 获山东科技大学Java程序设计大赛一等奖
- 2020.06 获2020年MathorCup高校数学建模挑战赛三等奖
- 2019.09 获院级“科技创新奖学金”1次
- 2020.09 获院级“科技创新奖学金”1次
- 2021.05 获山东科技大学思途杯网页前端设计大赛一等奖
自我评价
- 对于编程充满热情,多次主动参加技术分享活动,对我而言编程不仅仅是一种工作,更是一种爱好。
- 自学能力很强,热爱新技术,能够快速学习知识、技术、框架和工具,乐于推动新技术的普及。
- 善于应用所学知识,能就服务端开发中的各种技术选型和架构方案提出自己的看法和建议,在工作中自己提出的建议曾多次被采纳,提高了开发效率、用户体验和系统的性能表现。
- 心思缜密、做事认真,能够从用户的角度去理解、思考、分析问题和需求以提高用户体验。
- 善于与他人合作和沟通,合作意识强烈,个性开朗,容易相处,具有很强的集体荣誉感。
- 责任心强,工作能力强,抗压能力强,曾经多次独立完成原本需要多人完成的开发和缺陷修复任务。
About this Post
This post is written by Noelle Mu, licensed under CC BY-NC 4.0.