1. 熟悉Java,阅读过Java集合、并发包下的核心源码,熟悉NIO、Netty,阅读过Netty核心源码
2. 熟悉J2EE相关的SSM技术、SpringBoot、SpringCloud、Dubbo,阅读过SpringCloud核心源码(Eureka、Feign、Ribbon、Hystrix、Zuul)
3. 熟悉特定分布式业务场景下的分布式锁、分布式事务等问题
4. 熟悉MySQL、Redis
5. 熟练使用Git、Maven
6. 熟悉大数据生态环境圈,能够使用Hadoop/Kafka/Flume/Zookeeper/ES/HBase等常见框架
7. 深入理解HDFS原理,阅读过核心源码,能够进行二次开发
8. 熟悉PowerDesigner、Visio等UML建模工具
9. 熟悉常见的设计模式,能够将其运用到业务中
- 项目名称 在线教育系统
- 项目描述
该项目主要功能是为公司旗下的教育机构的学生以及其他用户提供在线教育服务。基于Dubbo划分为门户中心、学习中心、CMS管理中心、会员服务中心、教育管理中心、社交系统中心、媒资管理中心、订单中心、支付中心等。
- 项目技术
Dubbo RPC框架,MySQL数据库、Redis缓存中间件、RabbitMQ消息中间件,SSM,Nginx负载均衡、ByteTCC事务框架等。
- 项目周期
2017.7~2018.1
- 主要职责
1. 负责订单中心的开发,包括订单生成、价格计算等CRUD。
2. 用TCC和可靠消息最终一致性完成订单创建/完成这链路上的数据一致性
3. 参与课程详情页的动态渲染系统开发,负责时效性要求较低的数据进行数据同步和聚合服务,解决传统的页面静态化更新速度慢及全量更新的问题
4. 分布式锁解决缓存重建的并发冲突问题。
- 项目名称 HDFS二次开发(CDH版本)
- 项目描述
针对公司Hadoop集群(CDH5.X)运行过程出现的历史及现存问题,对HDFS做二次开发,包括bug的修复及性能优化,提升集群的稳定性,满足公司对HDFS定制化的需求
- 项目周期
2018.5~2018.9
- 主要职责
负责若干个bug的修复及源码的优化(包含不仅限于):
解决Full GC造成NameNode集群宕机问题
解决大量job下NameNode无响应问题
解决用户上传文件导致block丢失问题
解决DataNode下线导致block丢失问题
优化DataNode停机重启时间过长问题
优化NameNode复制指令,防止集群资源紧张
优化用户上传文件的效率,提升整体性能
- 项目名称 运营作业系统
- 项目描述
该项目主要功能是为上游的运营商和中游的开发商提供一个可以与玩家即时交流沟通的IM平台,架构由分布式集群演进到微服务。基于Spring Cloud划分为客服中心、工单中心、知识库中心、权限中心、小文件存储中心(自研)等。
- 项目技术
Spring Cloud,MongoDB数据库、Redis缓存中间件、Nginx负载均衡、Netty网络通信框架、Elasticsearch搜索引擎等。
- 项目周期
2019.3~2019.10
- 主要职责
1. 负责IM客服中心的开发
(1)基于websocket协议完成单聊、群聊、离线、历史消息。
(2)负责红包服务,保证抢红包的低延迟性和公平性。
2. 负责小文件存储系统的自研开发
架构主要分为负责元数据管理的主服务器、负责存储的从服务器、负责数据备份/快照生成的备份服务器和负责上传/下载的客户端
(1)负责从服务器的接收/下载接口,解析客户端发来的自定义数据格式包,实现从服务端的Reactor模型,解决拆包粘包问题
(2)负责从服务器向主服务器的全量/增量/心跳信息等上报,使得主服务器实现故障感知
(3)负责从服务器解析主服务器下发的副本复制/删除/重平衡等指令,保证数据副本的可用性,维持整体从服务器集群的资源平衡性
- 项目名称 旁听教育系统
- 项目描述
该项目分为两大模块。一块是为贫困地区的孩子提供中小学生在线教育服务,另一块为大学生提供线上及线下的旁听教育。基于Spring Cloud划分为后台管理中心、评论点赞中心、IM中心、CMS中心、课程管理中心、旁听卡管理中心、订单中心、支付中心等。
- 项目技术
Spring Cloud,MySQL数据库、Redis缓存中间件、Kafka消息中间件、阿里云基础设施(阿里云VoD、SMS、CDN等)
- 项目周期
2019.11~2020.5
- 主要职责
1. 负责IM客服中心的重构和改进
(1)基于Kafka对系统做了解耦,将单聊、群聊、离线、历史做了拆分,增加其他业务逻辑
(2)增加消息状态服务、会话列表服务,用分布式锁保证已读消息的数据一致性
2. 负责旁听卡管理中心的开发
(1)负责旁听卡抢购的整体流程,包括缓存数据的预热,下单的流控等
(2)保证整体链路的可用性,解决MQ的消息积压等问题。