1、5年java项目开发经验,熟悉项目开发流程和项目开发中常见问题。
2、熟悉使用Oracle、Mysql、Mongodb、Redis等数据库。
3、熟悉Zookeeper及Kakfa等常见流式消息处理工具。
4、有基于云平台的微服务开发经验,熟练使用SpringBoot、SpringCloud框架。
5、熟悉Linux命令。
项目一:某省移动公司BOSS计费结算系统
该项目是BOSS计费结算系统中的结算系统,客户为XX省移动公司。系统主要负责省级运营商之间的费用结算。
该项目后台由话单采集、话单归类分流(文件级排重)、话单解码转换、无效话单过滤、话单预处理、话单批价、话单级排重、话单入库组成。
产品中用到了Redis、Zookeeper、Kafka、MongoDB集群及Oracle数据库。其中Redis集群被用作内存数据库,用来存放参数表数据;Kafka集群被用作流式消息处理,负责对话单进行分割,归类传入下级处理流程;Zookeeper集群共有两套,一套被用作配置文件存放节点,负责后台app运行处理话单时读取处理配置,另一套被用作进程状态和topic状态注册节点,用来更新进程和topic的运行状态;MongoDB集群因其key->value格式的set存储特性被用于话单处理过程中的排重步骤。另外所有的后台进程都采用了多线程处理,并对线程状态在ZK中进行注册管理,防止线程僵死。Oracle数据库在项目中被用于参数定时同步、话单数据存储、报表导出等工作。
项目二:某云平台PaaS层APM服务
调用链服务(ATS)属于云平台PaaS层应用监控服务(APM),主要作用是对运行在云平台的其他应用在运行过程中产生的服务或方法间的调用链关系进行数据化存储、整理,并通过对数据的界面化展示来帮助服务定位问题及运行中的性能瓶颈,从而帮助应用不断的完善自身的功能和性能。
该服务是通过pinpoint对整个调用过程的所有应用进行埋点并采集,将采集到的数据统一输送给kafka,再通过kafka将数据提供给下游mysql/cassandra数据库进行存储消费,每条数据以唯一的traceID进行区分,数据内分层以spanID及parentID确定调用层级关系。客户端发起查询请求后,将请求数据按调用关系拆分组装后,返回给客户端,并存储一份至redis。客户端再次发起请求后,先判断请求条件,根据请求条件判断上次缓存至redis中的查询结果是否包含本次查询结果,如redis缓存中存在查询结果,则直接由redis返回查询结果,不再向数据库发起查询请求。