个人介绍
2. 熟悉 Linux 系统和 Shell 脚本编写;
3. 熟悉 Java 和 python ,熟悉并发,JVM,IO 。具有 JVM 相关问题排查的实际经验;熟悉自动化用例编写
4. 熟悉 MySQL 数据库,了解常用的调优手段;
5. 熟练掌握 ElasticSearch 的使用及原理,有过相关性能调优实战;
6. 熟练掌握 Spring 全家桶,MyBatis ,等主流框架
7. 熟悉 Git,Maven,Docker 的使用
8. 熟悉前端开发,有 Angular 开发经验
工作经历
2019-07-01 -至今中兴通讯股份有限公司Java软件开发工程师
采用微服务方式并基于 Springboot 框架,参与了以下微服务的开发: 1. 网元健康度检查:实现对当前网管上托管网元的指标数据进行检查并输出报告。网管系统上托管有一定的网元,需要定期对这些网元的健康状态进行检查。人工检查耗费大量人力,还容易出错。因此采用自动化采集方式,对现有网元的数据进行采集并判断,最终输出诊断报告。 2. 网络自优化:针对不同网元上报的不同类型消息,做出不同的处理。网管系统上的网元需要将自身的操作记录到网管上。同时部分类型的网元需要网管协助完成自身的业务。因此,开发网络自优化项目,帮助网元自动化完成自身优化。 3. 标签管理:对网元进行分组管理。网元包含不同的属性,不同的网管模块需要快速筛选符合自身需要的网元。因此需要对网元进行分类管理。网元的属性会随时变化,因此需要根据网元的属性变更消息,动态对分组中的网元进行增删。
教育经历
2016-09-01 - 2019-06-01西安交通大学集成电路工程硕士
完成了基于CNN的气体传感器阵列的数据采集与训练算法,发表一篇核心sci期刊。
2012-09-01 - 2016-06-01西安交通大学计算机科学与技术本科
学习c语言,Java语言,数据结构,操作系统,计算机网络,计算机组成原理。这些核心课程平均分数在85分以上。
技能
标签管理用于对网元进行分组管理,分为手动标签和自动标签。主要包括手动标签和自动标签。手动标签在创建时指定具体的网元,存储到数据库中。自动标签存储一定的条件来过滤网元并进行分组,在网元信息变更后,会发送 Kafka 消息,自动标签根据 kafka 消息变化增加或移除网元。 1. 设计前端原型并使用 Angular 编写标签管理原型。 2. 将自动标签的动态计算优化为静态计算+消息监听变更。 3. 网元信息频繁变更时,单条消息处理导致自动标签变更效率太低。经过分析,做出以下优化: 修改为批量处理 kafka 消息,将一段时间内的网元变更消息合并,减少计算的次数,提高了变更速度。
网管系统展示并管理着部分网元的数据和业务,当网元数据发生变更时,会通过不同的网管协议向 网管发送消息,网管接入层解析这些消息后会转换为对应的Kafka消息。(5G网元与网管通过 NETCONF 协议通信,4G网元通过 SNMP 协议通信)。对于消息的处理,网络自优化功能主要处理的消息分为两种 1、直接解析入库展示。重点是处理大批量数据的 kafka 接收、多线程并发处理、elasticsearch 入库问题 2、 根据消息内容进行业务处理。重点是网元在不同场景下触发的业务消息,对网元的数据进行增删改查等操作和对一些小区数据进行 KPI 计算和判断 我的主要贡献: 1. 实现了从 Kafka 拉取并处理消息、创建索引的架构 2. 通过修改 ES 索引存储和清理策略,优化消息处理效率,消除了 Kafka 的消息积压:原先一中消息类型的数据存储于一个索引中,峰值时期每天的数据量大约在300~500G左右,需要及时清理。在定时清理索引时,采用 deleteByQuery 方式,删除效率很低。因此采用索引模板+滚动索引的方式,以时间为单位创建索引。删除时,直接删除超出时间范围的索引。 3. 优化了极端场景下 ES 数据查询异常的问题:经分析,是由于并发查询数据较大,导致通过 NIO 读取到直接内存时,设置的直接内存大小不足。通过计算峰值数据大小,修改了 JVM 参数 MaxDirectMemorySize。
该产品采用微服务架构,并基于 SpringBoot 框架开发,实现了对网元的健康状态检查。网元是网管系统中可以独立实现一定传输功能的实体。NHC 实现了一键式、自动化、可定制的网元健康检查任务,提高了运维效率,节省了运维成本。NHC 主要分为5个微服务和一个算法包 nhc-algorithm: 1. 采用 Angular 编写的前端界面 nhc-ui ,给提供提供创建并执行任务的接口; 2. 任务分发服务 nhc-service ,按照网元的类型,将一个任务拆分成多个子任务,写到 zookeeper 的节点上,便于在采集服务中并发执行; 3. 采集服务 nhc-dataengine ,监听 zookeeper 结点的数据,并在不同的线程中执行采集任务; 4. 算法包 nhc-algorithm ,包含不同类型的采集算法,用于处理采集到的数据; 5. 报告输出服务 nhc-report ,当数据全部采集并计算完成后,将所有数据输出为 excel或 word 格式的报告,采集过程结束。 6. 自定义检查项和门限服务 nhc-checkitem ,用于支持用户自定义的检查项和不同外部环境下算法的判断门限; 我的责任 1.设计前端原型并使用 Angular 编写前端界面 2.优化了数据库存储和查询: a)增加关键字段的索引; b)根据用户使用的频度,将任务表的字段拆分到多张表中存储; c)随着任务数据量的增大,采用分库策略,将任务存储到不同数据库中 3.优化内存使用 a)优化 Zookeeper Curator PathChildrenCache 中缓存的数据结构,将大数据放在缓存的深层结点中,并使用公共线程池; b)采用流式读写方式并小批量读取中间文件,优化了 POI 写报告过程中对内存的占用。 c)加入 redis 缓存查询结果和 zookeeper 任务号,防止单个服务宕机导致的整体服务不可用