vault backup: 2026-03-08 20:45:50
This commit is contained in:
parent
f0c9a658a4
commit
fb4d004c67
97
个人简历/简历.md
97
个人简历/简历.md
|
|
@ -1,41 +1,70 @@
|
|||
# 基本信息
|
||||
**姓名**: 乔洪波
|
||||
**邮箱**: asskicker0214@outlook.com
|
||||
**电话**: 19521253015
|
||||
**微信**: 18951859502
|
||||
# 专业技能
|
||||
- 有丰富的 Java 编程经验,熟练使用 Netty、JUnit,此外可以使用 Python 做脚本编写,可以使用 Vue 做前端开发
|
||||
- 作为公司内部微服务调用框架的核心开发,在并发、性能、稳定性方面有丰富的经验
|
||||
- 经常协助业务系统进行生产排障,有丰富的故障排查经验(和直觉 :D)
|
||||
- 熟悉 GitLab,可以组织起小型团队构建可靠的、现代化的工作流程
|
||||
- 熟悉云原生相关的技术,如容器化、K8s、Istio、Prometheus
|
||||
# 教育经历
|
||||
- `2013/09` ~ `2017/06` 南京大学 · 软件工程 (本科)
|
||||
- `2017/09` ~ `2019/06` 南京大学 · 软件工程 (硕士研究生)
|
||||
# 乔洪波 — 资深后端&微服务工程师
|
||||
|
||||
> *在校获得优秀毕业生称号*
|
||||
# 工作经历
|
||||
- `2019/07` ~ `至今` 中国银联
|
||||
**邮箱**: asskicker0214@outlook.com • **电话**: 19521253015 • **微信**: 18951859502
|
||||
|
||||
# 项目经历
|
||||
银联自 2018 年起开始研发新一代微服务调用框架,用以替代现存基于 Dubbo 定制开发的框架。截至 2026 年初,公司内部所有重要系统均已基本完成接入或迁移,新框架已承接公司全部的资金类交易,经受住大量业务调用和长时间稳定性的考验。我们内部将该框架称为 Service Mesh,我的工作也主要围绕它展开。
|
||||
## 简介
|
||||
具有 7 年以上 Java 后端和分布式系统经验,专注于微服务调用框架、性能优化与可靠性工程。深度参与公司核心微服务框架的设计与实现,强调测试覆盖、生产可观测性与零缺陷投产。
|
||||
|
||||
### 服务注册发现中心的重构
|
||||
`2022年`
|
||||
在银联最核心的系统(转接)迁移前一年 (2022年),注册发现中心 Pilot 出现了代码腐化的迹象。由于定制化需求越来越多,Pilot 的处理流程越来越难以理解。在尝试修复一个生产缺陷时,很容易引入另一个生产缺陷。仔细分析后,我们认为小修小补无济于事,必须连根拔起完全重构。重构这件事是被部分人反对的,我作为重构的主要推动者和实施者(提交了 50% 以上的代码)面临着非常大的风险和压力。本次重构仅限于 Pilot 模块内部,必须保证和其他模块、业务系统完全兼容。借助多年积累下来的比较完善的自动化测试,以及生产真实流量的重放验证,上线后零生产问题。新的设计不仅达到了完全的兼容性,各接口性能也得到了(无心插柳式的)提升 —— 注册类提升 100%,发现类提升 30%
|
||||
## 核心技能
|
||||
- **语言与框架:** Java, JUnit, Mockito,Python,Vue.js
|
||||
- **系统与中间件:** Redis, Zookeeper
|
||||
- **云原生:** Kubernetes、容器化、Istio、Prometheus
|
||||
- **工程实践:** 高并发设计、性能调优、自动化测试与生产流量回放、故障排查
|
||||
|
||||
### Spring Boot Starter 开发
|
||||
`2023年` ~ `至今`
|
||||
与 Istio 等服务网格解决方案不同,公司内部的服务网格没有采用流量劫持的方案,而是采用轻量级 SDK + 边车来实现流量转发,Java 语言的新一代 SDK 由我负责开发(代码量占 95% 以上)。SDK 采用分层设计,靠下的各层与 Spring 解耦,可以脱离 Spring 使用,避免了 gRPC starter 那种完全与 Spring Boot 绑定 的模式;且完全舍弃了旧版的 Java SDK,在开发初期就充分考虑了可集成性,避免了 Dubbo Starter 为了适配 Spring Boot 而产生的那种厚重的胶水层。SDK 使用 Mockito + JUnit 编写了近千个单元测试,自 2023 年发布以来已被 200+ 业务应用集成,至今零生产缺陷。
|
||||
## 教育背景
|
||||
- 南京大学 — 软件工程 本科(2013/09 — 2017/06)
|
||||
- 南京大学 — 软件工程 硕士(2017/09 — 2019/06)`优秀毕业生`
|
||||
|
||||
### 服务网格容器化支持
|
||||
`2022年` ~ `至今`
|
||||
公司内的服务网格没有按照 CNCF 推荐的路线图发展,出于一些原因,我们先在虚机上面进行了服务网格化,然后才逐步对各服务进行容器化。我们采用了向 Pod 自动注入边车的方式,即借助 K8s API Server 提供的 Web Hook 机制,拦截 Pod 创建请求,篡改 Pod 配置并向其添加边车容器。
|
||||
## 工作经历
|
||||
- **中国银联** — 后端工程师 (2019/07 — 至今)
|
||||
- 核心贡献者,参与并主导公司新一代微服务调用框架(内部称 UPMesh)和 Java SDK 的设计与实现。
|
||||
- 主要成果:
|
||||
1. 逆转注册发现中心代码腐化的趋势,完成重构和不停机上线,上线后零缺陷
|
||||
2. 负责微服务调用框架 Java SDK(Spring Boot Starter)设计与实现,代码量占比 >95%,已被 200+ 应用集成,发布后至今零生产缺陷。
|
||||
3. 推进微服务框架容器化落地,基于 K8s Admission Webhook 实现 Pod 边车自动注入。
|
||||
4. 牵头数据转移组件订阅端开发,带领 4 人团队,支持 DB→DB/消息队列/TCP 的多路转储、形变与一致性校验。
|
||||
|
||||
## 代表性项目
|
||||
### 1. 公司级注册发现中心重构 (2022) - `质量保证` `重构` `分布式系统`
|
||||
注册发现中心 Pilot 是公司级的中间件,维护了 30000+ 服务节点的元信息。
|
||||
公司内所有涉及资金的业务系统均在 Pilot 上进行注册发现。
|
||||
|
||||
**面临的问题**
|
||||
1. 注册发现中心出现代码快速腐化的迹象,生产缺陷频发
|
||||
2. 可读性差,难以应对未来的功能迭代
|
||||
3. 架构设计有瓶颈,容量有风险,业务隔离性差
|
||||
|
||||
**采取的措施**
|
||||
1. 顶住压力果断重构(架构和代码两个层面)
|
||||
2. 进行严格的回归测试、流量重放测试
|
||||
|
||||
**取得的效果**
|
||||
1. 上线后无兼容性问题,无生产缺陷
|
||||
2. 接口性能提升了 30% ~ 100%
|
||||
3. 代码腐化现象被抑制,2022 年至今仅 1 个生产缺陷
|
||||
|
||||
### 2. 微服务 SDK 开发 (2023 — 至今)`Java` `SDK` `高性能` `高并发`
|
||||
设计并实现了服务发布和调用的 Java SDK,主要特性如下
|
||||
1. 分层设计,可以与 Spring, Spring Boot 结合,也可以单独使用
|
||||
2. 支持流式传输、优雅启停、RPC 调用等功能
|
||||
3. 使用 JUnit + Mockito 构建近千个单元测试,使用 docker 构建 30+ 场景的集成测试
|
||||
|
||||
现已被 300+ 模块集成,无生产缺陷
|
||||
|
||||
### 3. 容器化实践 (2022 — 至今)`K8s` `Docker` `云原生`
|
||||
为了解决语言异构的问题,业务系统互相通信时均通过边车进行转发,各语言只维护轻薄的 SDK。在虚机上,边车是一个独立进程;容器环境中,我们基于 K8s API Server 的 Webhook 机制,拦截业务系统的 Pod 创建请求,自动向其中加入边车容器。
|
||||
|
||||
### 4. 数据转移组件(2024 — 至今)`小组领导`
|
||||
公司内部分业务系统有分享(发布/订阅)数据的需求,功能包含任务控制模块,数据形变、Lua 脚本集成、一致性比对等。
|
||||
|
||||
Java 语言的订阅端由我带领一个 4 人小组实现,我的工作主要有:任务分解、代码评审
|
||||
|
||||
TODO 扩充
|
||||
|
||||
效果:零缺陷、新人成长快
|
||||
|
||||
### 5. 自研集成测试工具(2019 — 至今)`Side Work` `测试套件` `AI 编程`
|
||||
Taurus 是一个比单元测试粒度更粗的自研测试工具,属于为了支持日常开发而演化出的副产品。
|
||||
它与单元测试互为补充,为团队内各系统的质量保驾护航。后期我们使用 AI (Vibe Coding) 为其编写了 VSCode 插件,进一步提升了易用性。
|
||||
|
||||
### 数据转移组件
|
||||
`2024年` ~ `至今`
|
||||
公司内部分业务系统有分享数据的需求,简单来说,需要将一个数据库中的数据转移到其他系统的数据库、消息队列或作为 TCP 请求发送。数据转移不是简单的复制,而是需要进行形变、过滤、加解密等操作,此外还需控制转移任务的启停与一致性比对等等。我有幸可以带领一个 4 人的小组开发订阅端模块(及 SDK),我们的其中一个用户也恰好是公司两大核心业务之一的清算系统。
|
||||
|
||||
### 集成测试工具
|
||||
`2019年` ~ `至今`
|
||||
集成测试框架是我日常工作中的一个 Side Work,它的诞生是为了解决三个问题:第一个是单元测试并不总适合所有项目;第二个是公司内部大量使用私有协议,无法直接使用 Postman 等现有工具;第三个是一些现有工具(如 jmeter)不是基于文本组织案例的,难以使用 Git 管理。我从入职以来就一直持续设计和迭代自实现的测试工具,测试案例使用纯文本编写,使用各种指令来组合测试流程。这些指令背后使用 Java 实现,工具预置了基本的指令(如,发送HTTP请求),且支持实现自定义指令。它可以在本地执行,也可以以 Web 的方式做平台化部署。支持定时执行案例、生成覆盖率报告、导出 Excel、发送邮件、Gitlab MR 合并前编译测试等功能。该测试工具虽然不是正式产品,但也在被部分团队使用、或集成进其他系统。
|
||||
Loading…
Reference in New Issue