成 绩:TOP 10 %,两个学年获得校级二等奖学金
CSDN博客:Angus_水的精神_CSDN博客-开发经验,Elasticsearch,在人间凑数的日子领域博主
掌握技能
工作经历
时间:2020.05 ~至今(一年)
单位:中国科学院信息工程研究所
职级:入职T2,现在T4(第一次评级,跨级升至T4)
项目经验
中科院 十四亿级别物联网资空间测绘系统
功能模块:14亿物联网资源检索引擎子系统、业务网关子系统、用户中心子系统、预热子系统、系统审计及行为分析子系统、搜索提示子系统、防爬机制设计
项目描述:物联网资源检索系统,用来检索整个互联网中现存的可以检测识别到的设备,这些设备涉及到了15个大类,100小类。设备包括品牌型号版本,以及设备上存在的软件,软件的版本、品牌、型号、大类、小类。以及软件和设备存在的漏洞。存活的设备会附加上地理位置属性。支持根据设备和软件的各个属性以及地理位置的聚类分析。用于科研人员的研究,给做安全防御领域的人提供良好的数据支撑。
项目职责:
负责项目整体设计包括以上全部模块,主导技术选型。保证服务各个环节的高可用。避免单点故障问题。负责维护支撑十四亿物联网设备数据的搜索引擎,维护了15个节点的elasticsearch集群。从零搭建elasticsearch集群,并解决集群安全通信,跨集群数据同步问题。通过双集群的设计,来保证服务高可用。通过心跳机制,来动态切换集群。解决了elasticsearch分布式搜索引擎的脑裂问题。通过副本和快照来保证数据不丢失。负责elasticsearch搜索引擎的后续优化工作。在数据集从8亿增长到14亿,数据容量从2.5T到5T的情况下,通过对集群的升级及规划和索引合理拆分,将聚类检索的时间从10秒降低到了2秒、普通检索从5秒降到1秒以下。集群写入速度提升到了2w/s。使用nginx作为流量网关,使用gateway+nacos+sentinel 搭建了业务网关。期间改造了sentinel源码,来支撑生产环境下,业务网关零停服情况下的动态修改限流规则的需求。通过改源码将sentinel规则持久化到nacos,实现限流规则从客户端到sentinel的dashbord再到nacos的闭环。对鉴权、限流、等公共能力进行了抽取。
通过对公共能力的抽取,将网关下沉为公共服务,发挥组内技术优势,为研究所内其他开发小组提供网关技术支持。帮助其它组解决用户鉴权,限流,降级等问题。借助于sentinel的限流,实现了系统调用的安全防护。借助于sentinel的热点参数限流,实现针对用户的限流。达到了防爬的数据保护目的。使用logstash + elasticsearch + kibana,搭建了一套日志收集分析系统。通过在流量网关进行适当的改造,配合前后端传参的适当改造。实现了系统审计以及用户行为分析的需求。配合报警工具,来洞察系统的服务能力,及时发现问题并发送报警。在凌晨生成用户行为分析的报告,并进行推送,为系统更好的扩展优化提供数据支撑。维护了redis集群,用于存放用户的登录信息,鉴权中心分布式token;用于预热子系统,通过用户访问的审计结果,将系统经常访问到的数据,以及请求花费时间较长的数据,进行缓存预热。达到系统去短板的效果,提升用户体验。JVM问题诊断,发现并解决内存泄露问题。参数调优,使系统处于最佳状态。使用Docker + docker-compose来部署编排服务。
实习经历
时间:2019.08-2020.05(九个月)
单位:12306(中国铁道科学研究院)
项目经验
12306 商旅项目(上线)
开发时间:2019.11~2020.05
项目描述:12306 大客户商旅平台以 12306 互联网售票系统为基础,面向政府、大型国企和私企,开展
对公火车票、酒店、机票、餐饮、用车等业务。
功能模块:接入中心、预定中心、用户中心、订单中心、财务中心
项目职责:
财务中心的计费方案设计,平台内部对账核心模块。使用 ShardingSphere 进行分库分表,并完成相关的测试工作。期间解决了引入ShardingSphere后,事物失效,以及无法插入数据的bug。搭建Jmeter 分布式集群,进行压力测试
12306 空铁联运项目(上线)
开发时间:2019.08~2019.11
功能模块:空铁联运产品大订单,火车票改签,火车票退票,平台结账对账
项目描述:中国铁路推出了和东方航空合作实现空铁联运,火车票同机票同时购买,给用户带来更好的
购买体验,智能提供一些好的空铁组合,给用户更多的选择。
项目职责:
参与整体业务的设计;编写内网调度服务代码,编写 API 调用火车票微服务完成灰名单功能 设计伪随机算法用于生成唯一订单号,并在服务器上进行压力测试,以及进行安全性测试。支付回调。在做支付回调页面数据展示的时候,因为代码量比较多,为了方便维护,采用了生成器模式。平台内部对账核心模块。
自我评价
有良好的团队合作能力、有较好的逻辑思维和空间想象力,能够独立负责项目,并协调组内成员完成。酷爱编程,严格要求自己写出规范负责的代码。对技术有强烈的兴趣。喜欢与人交流技术,乐于分享,有自己的技术博客,CSDN目前总排名3600,周排名2000左右。独立解决问题的能力,能承受一定的工作压力,经历过几次技术攻坚和服务抢救。具有强烈的自我驱动力。具有良好的新知识接接受能力,坚持每天3-4个小时的学习时间。
阅读过的书籍
基础类
《Java并发编程的艺术》《逆流而上》《码出高效》《web技术内幕》《实战JVM虚拟机》《深入了解JVM虚拟机》
调试类
《Java深度调试技术》
源码类
《spring技术内幕》《elasticsearch源码解析与技术实战》
代码规范类
《java开发手册》《代码整洁之道》《重构改善既有代码的设计》《设计模式精解》
容器化技术类
《k8s权威指南》
架构类
《高可用可伸缩微服务架构》《架构修炼之道》
官方文档
《Elasticsearch官网文档》《sentinel官方文档》《gateway官方文档》 《ShardingSphere官网文档》
心怀一颗去大厂的梦,因为那里有一群有共同愿景,喜欢折腾的人,同时我可以站在巨人的肩膀上。
不过暂时只专注项目上线,专注眼前的工作。即使钱再少,都无所谓的。
我才二十几岁,一切都只是刚刚开始!
路漫漫其修远兮,吾将上下而求索
我有时候也会负责我们这里的后台开发的面试工作。
所以对于简历,我发表一下自己的看法:见过比较多的简历,都是多页纸,我不确定我能看完它,因为面试只是和开发工作并发执行的,看简历的时间多了,工作的时间就短了,所以简历看不到亮点,直接就pass了,不会浪费太多时间在看简历上。
我的简历采用的是三七分的模板,尽可能的把内容压缩到了一页纸上,使内容更加紧凑,不给面试官来带翻页的麻烦。三七分的模板左侧是个人信息相关的,包括了教育背景,以及工作经历。右侧是跟技术相关的,包括了自己的技术栈,以及开发经验。开发经验的话是一个时间倒序,最前边是我的现阶段的项目。为了压缩到一页纸上,第二个项目描述就比较水了。相对来说,我的第二个项目只是陪衬,第一个才是能够体现我的工作能力的项目。