1.编程语言
熟练使用Java和NodeJS
能够使用Go进行项目开发
熟练阅读C和X86汇编代码
2.Linux内核和网络协议栈
熟悉Linux的各大模块实现原理,进程管理和调度、内存管理、VFS、中断
熟悉Linux网络协议栈的实现原理,数据包的接收和发送流程、网桥、Veth设备对、各种L3 Tunnel(IPIP、GRE、VXLAN)原理、邻居子系统、路由子系统
熟悉各种网络协议,IP、TCP、UDP、ICMP、ARP、RARP、DHCP、DNS、BGP、HTTP(1.0、2.0、3.0)、QUIC
熟悉计算机网络,VLAN、VXLAN、路由
3.Docker和K8s
了解Docker实现原理,熟练使用Docker进行代码编译项目部署
熟悉Docker网络实现原理
熟悉K8s网络实现原理,了解Flannel和Calico不同组网方式在Linux中的实现,了解不同组网方式的限制
4.中间件以及微服务
熟悉常见的Java框架,Spring、Mybatis、Netty、SpringBoot等,了解实现原理
熟悉常见中间件如Kafka、Zookeeper等
熟悉Redis、MySQL、ES
熟悉分布式微服务框架Dubbo、SpringCloud
5.熟悉常见的数据结构和算法
HypeDNS网管
DNS是公司的核心产品,贡献了公司80%营收。网管的主要职责是负责管理所有的业务设备,管理所有设备的配置,对设备各项指标进行监控和告警,接收上级部门的监管指令。此项目的开展是由于老系统出现了一系列问题,如功能耦合严重、开发语言种类 过多、代码质量差、经常发生网管端和数据端的数据不一致。在此背景下对老项目进行的完全的重写。
项目业绩
统一了网管端的开发语言,降低了新人项目上手难度,从而降低了招聘难度
统一了代码风格,通过代码CR有效减少了重复代码。提升了项目质量
使用Docker和Docker Compose进行项目部署,部署时间由老系统的需要至少半天天减少到只需10分钟
对整体业务进行梳理,将网管划分为2大系统,在不同系统有分为数个服务,降低了系统之间和服务之间的耦合性。使之前增加指令需求需要修改5个系统数十个服务减少到至多需要修改2个系统的2个服务。开发周期由原来的一个月减小到一周内
优化了网管配置的下发流程,最大程度保证了网管端和业务端数据的一致性(老系统100万配置大概总会出现2万数据不一致,经常被通报)
优化了业务设备的升级,通过开发OPS功能使原来线上服务单次版本升级从1个月减少到1晚上即可完成
提升了系统整体的稳定性,极大减少了人员介入的次数。降低了运维难度
2020-06 ~ 2022-02 多可用区数据同步 项目负责人
多可用区数据同步主要是支撑公司业务在不同的数据中心之间数据库的实时数据同步。此项目面向全公司的开发团队,项目总体同步的数据有上千张逻辑表,数据量达到了TB级别。由于多个可用区分布在全球不同的洲,所以数据的实时性是一个挑战。由于在同步的过程中会遇到各种意外状况,数据的一致性也是另一个挑战。由于接手的时候是一个已经运行的系统,系统出现如下问题。经常出现大量错误导致告警,经常出现数据不一致,出现数据不一致之后排查问题困难。运行速度逐渐跟不上公司的发展,无法处理突发流量。
项目业绩
通过对系统的不同错误进行归类,减少了误报。系统从原来的每天都有告警减少到一到两周一次
通过将消费模式修改为批量写入增加的整体的性能,将之前的1000+/s提升到了4000+/s
通过对错误类型进行分类整理,将非系统错误调整为warn级别。避免告警误报
通过建立全链路错误日志查询系统,加快了错误数据排查速度。由原来数小时改进到几分钟。且日志可以由使用方自行排查,减少了日常排错时间
通过对突发流量进行识别,将突发流量迁移到单独的topic。避免突发流量对其他业务的影响
2018-05 ~ 2019-02 金投网行情服务端 Java开发工程师
行情服务是提供各种交易品种的实时行情和历史行情的服务。这些品种包括了A股、上期所、大连商品交易所、郑州商品交易所、贵金属、外汇、原油等。老系统存在的问题是在引入所有A股的行情之后表现出历史行情丢失的问题,系统负载高,指标系统不稳定。由于老系统时间比较久,当时的协议设计主要的考虑目标是网络流量的开销,所以采用的是二进制形式的协议。在开发新功能或者给老接口加字段的时候都不能直接增加,否则会导致客户端崩溃。在此基础上设计并实现了新一代的行情服务系统。新系统采用Netty作为基础框架,将服务拆分成数个不同职责的服务,保障的系统的高可用,降低的系统的负载。
项目业绩
通过对协议的设计将以前的二进制协议修改成了JSON的便于开发
通过对架构的调整,将行情拆分为实时行情和历史行情。实时行情又拆分为接入端和分发端,形成了漏斗式的流量分发网络。新系统在1C1G配置下可以支撑2000人同时在线
通过对历史行情进行分片,使不同交易所的流量分发到不同的服务器进行行情记录。避免负载过高导致的数据丢失问题。历史行情查询直接走HTTP接口,将原有的4台4C8G的服务器减少到2台1C1G的服务器。系统响应良好,QPS平局为10ms
通过对指标系统计算过程做优化,提升了指标的计算性能,将指标计算分发到不同服务处理。利用数据缓存减小对历史行情的查询,提高了计算速度