■ Java基础扎实,掌握集合,多线程,反射,序列化,泛型,设计模式以及常用数据结构与算法;
■ 掌握JVM原理,类加载机制,内存模型以及垃圾回收算法与收集器,有JVM排查问题和调优经验;
■ 掌握多线程,线程池,AQS原理,以及JUC常见工具的使用;
■ 熟练掌握 Spring ,SpringMVC ,SpringBoot,Mybatis 等开源框架 ,研究过部分功能源码;
■ 熟练掌握微服务架构SpringCloud 组件Eureka,Config,OpenFeign ,Gateway,Hystrix等的使用;
■ 熟练掌握MySQL原理和常见优化手段,能根据具体的应用场景优化对应语句和结构;
■ 熟悉Redis线程模型,掌握核心数据结构的以及各种缓存使用场景,比如缓存击穿,穿透,雪崩等;
■ 熟悉常见消息中间件RabbitMQ,Kafka的使用。熟悉各种消息通信场景问题的解决方案;
■ 熟悉云原生部署流程 ,具备分析 linux 上程序运行日志和解决问题的能力。
■ 项目:华润银行新一代核心及存款系统(2023.04------2024.05)
项目描述:该项目主要是对于华润银行旧核心及存款系统进行改造重构。由于外围系统不改造,需要兼顾考虑到新系统对老系统以及对外围渠道系统的兼容性,需保证新旧系统的稳定并行运行。
项目架构:对于系统内部而言,整个核心系统拆分为五个(客户中心,存款中心,定价中心,核算中心,公共运营中心),各中心将原有oracle杂糅的存储过程进行拆分剥离成为单个可独立处理完整逻辑的微服务单元,事务相关操作通过画布对微服务进行流程编排(分布式事务采用SAGA)以保证与原处理过程功能的最终一致性。跨中心查询类请求可通过RPC远程跨中心调用,或者文件形式交互。公共的业务通用功能组件通过SDK封装按需使用以减少业务代码的耦合性,便于扩展和维护。使用Redis缓存跨系统高频查询调用业务用户相关基本信息提高接口的跨中心调用性能。短信消息通知类业务通过MQ进行交互,减少系统阻塞,提升大量数据的处理能力;对于系统外层而言,核心系统经过网关然后通过ESB与外部系统之间进行交互,保证系统的隔离性。
技术选型:SpringBoot ,SpringCloud Alibaba,MyBatis,Nacos,Redis缓存,RabbitMQ,Docker容器技术,OceanBase数据库
责任描述:
1、分析拆分旧核心oracle源码,撰写概要设计和详细设计文档,参与功能方案评审,业务以及数据建模,最终落地到新代码功能实现。
2、旧系统功能对应的微服务拆分,公共组件SDK的编写,配合上下游相关方进行项目联调,优化代码性能和架构,保证系统的可用性;
3、旧核心数据库表设计以及迁移,分析优化旧系统存量迁移的慢SQL以及程序的执行逻辑和结构;
4、维护迁移后的功能以及迭代开发新需求功能。
■ 项目:待办推送系统(2022.09------2023.03)
项目描述:该系统的目的主要是收集同步各业务系统的具体流程流转过程中,所经过的各个节点环节产生的各项功能数据。之后将推送到系统门户首页进行展示。需要保证用户打开各业务子系统,综合办公系统以及门户系统展示数据的一致性。
项目架构:流程引擎服务作为生产者将各业务系统整合的待办,待阅,已办等信息推送到消息Kafka的topic,各topic按流程id分配到对应的分区,以保证流程id对应的待办信息消费的有序性。待办推送服务采用消费者组的形式以提高消费的效率,采用netty轮询机制通过监听对应的topic从MQ 取消息放到本地对应的阻塞队列进行消费处理,数据库中维护一个消费次数字段避免重复消费。服务端如果出现推送失败的情况则会考虑加入重试topic以进行后续的推送,客户端如果出现消费失败的情况则会通过数据库维护的重试次数字段进行重试,如果重试一定次数次仍失败则加入死信队列通过后台运维手工处理,之后再通过 Rest 调用方式将数据库中或缓存中记录推送给门户系统。
技术选型:SpringBoot ,MyBatis ,config配置中心,Kafka 消息中间件 ,Redis 缓存 ,Eureka 注册中心 ,Zuu网关,Nginx ,Docker 容器技术
责任描述:
1、在内存中上维护一个阻塞队列将消息根据同一个业务流程key路由到队列之后再落表保证消息有序。
2、表中防止重复消费消息,增加消费是否完成标识,保证数据的幂等性;
3、将数据库中消息通过RPC调用同步至门户系统;
4、在同步消息落表的步骤之前写Redis,保证后续页面手工运维推送消息的查询效率。