1. 熟悉Java,熟悉JMM,熟悉多线程开发 (如synchronize、volatile、CAS、AQS、ReentrantLock、 ThreadPool)
2. 熟悉MySQL,了解InnoDB (如主键索引和辅助索引的关系),了解其数据结构 B+ 树
3. 熟悉Redis,对其持久化策略(RDB、AOF)和高可用方案有一定了解
4. 熟悉Git,熟悉常用命令,如fetch、pull、merge、rebase、stash
运营平台
1. 项目简介: 作为公司流量出口,包含了短信、消息、邮件以及广告等业务
2. 工作内容:
1. 负责短信业务的开发与维护,日均吞吐量为百万级,最高为千万级
2. 负责短链业务的开发与维护,目前累计生成的短链总数已超过十亿条
3. 涉及技术: SpringMVC,MyBatis,MySQL,Redis,RabbitMQ,Kafka,Maven,Git,Dubbo
4. 技术要点:
1. 基于 RabbitMQ 高可靠性以及 Kafka 高吞吐的特性,结合短信业务特点,用 RabbitMQ 处理主要业务流程,用 Kafka 处理业务日志,对系统架构进行优化,实现服务隔离与服务降级,提高吞吐量和可用性
2. 短信业务原先出于便捷性考虑对日志表进行反范式设计,在数据量到达亿级后表维护过于困难。因此,结合实际业务需求,对 MySQL 中的日志表进行了垂直拆分,简化数据库操作,降低耦合度
3. 基于短信业务需求,用责任链处理短信发送逻辑,用工厂模式对短信和发送通道进行解耦,用模板方法对不同短信通道的发送逻辑进行隔离
4. 将后台管理系统的定时任务功能由原本单服务器单线程排队运行优化为分布式并发运行