具备扎实的java基础,熟练掌握java反射机制、多线程等。
熟悉linux环境及常用操作命令、常用数据结构及算法。
熟练使用springboot、springcloud等搭建微服务架构,熟练使用kafka、redis、netty、mongodb等中间件。
熟练使用 git、maven等工具构建和打包项目。
音视频领域直播后端相关开发经验以及电商平台经验
项目1: 音视频直点播系统
项目描述:
视频点播系统面向企业用户提供音视频文件管理以及文件内容转换等功能。系统主要分为业务子系统、媒体处理子系统、上传下载子系统三部分。业务系统主要包含用户管理、文件管理、转码处理、数据统计等功能;媒体子系统负责底层实际文件内容转换(如文件转码、剪辑、合并等);上传下载子系统将文件存储至分布式存储obs/iobs。
视频直播系统主要提供实时音视频推拉流服务以及直播文件录制服务。系统主要包含直播中心、媒体处理、上传下载三个子系统。媒体系统负责实际推拉流等处理,直播中心控制推拉流处理,上传下载模块将媒体系统生成的录制文件存储至obs。
责任描述:
经历了项目从0开始搭建的过程,按需调整系统架构,对产品和服务端架构设计都有清晰的认识。
使用kafka异步处理请求数据、redis缓存数据、db主表数据冷热分离以及建立合适的数据库索引等方式提高接口处理速度。
使用redis lua脚本+状态递增更新方式保证转码任务状态更新及业务逻辑的正确性
使用本地消息表+kafka Ack机制+消费逻辑幂等等方式,确保消息不丢失。
使用ip白名单提升内网系统间调用安全性
设计并实现回调重试机制确保用户收到任务处理结果回调。
使用JWT实现openapi接口认证;使用redis锁+redis队列实现转码任务统计。
使用线程池和coundownLatch并发控制提高文件上传下载速率; 设计直播文件分桶上传OBS方案,成倍提升文件存储吞吐量。
项目2: 会议录制系统
项目描述:
会议录制系统主要对音视频实时会议进行实时录制并生成会议视频等文件。
责任描述:
使用redis构建录制session,维护录制状态及关系,提高系统运行效率。
使用redis缓存录制配置信息,提升接口访问效率。
使用mq异步处理用户回调, 解耦系统依赖同时提升录制回调接口处理速率
使用redis监控录制文件处理状态, 通过定时任务兜底保证业务正确及完整性
灵活实现分布式锁,在本地jvm竞争出一个线程参与竞争分布式锁,大大降低了对redis的访问频率
巧妙地将系统大部分功能基于redis实现, 保证系统高效运行
合理设计系统实现方案解决业务规则上的一致性
使用自定义注解+本地缓存+切面逻辑实现对特定接口限流以保护后端资源
实现视频调阅功能(online播放或者online分段播放), 应用基于零拷贝技术API提升视频传输性能
项目3: monitor监控系统
项目描述:
监控系统主要负责收集各平台系统埋点数据,日志数据等,提供各类查询视图,为各系统定位系统问题提供依据;同时对上报数据进行分析,对各类系统异常提供告警;另外生成各类运营统计分析数据实现对系统的观测等等。
责任描述:
使用kafka对埋点上传请求等进行异步处理,削峰填谷,提高系统吞吐量,防止数据库被击垮, 保证系统可用性。对特定业务特定埋点信息区分优先级(使用不同Topic),保证特殊用户数据优先处理;对日志上报请求,使用文件上传+本地缓存请求列表方式提高各端日志上传效率(即先写入本地内存队列,使用线程池异步处理内存队列数据,然后转发kafka,提高接口响应速率)
对主要接口添加开关(即限流)配置,提升高峰时期系统稳定性。对特定接口业务(如业务告警等)添加开关配置以及使用线程池异步处理,提升接口响应速率及稳定性
kafka消费端将埋点数据/日志数据等待入库数据缓存在本地内存,使用专用线程组对本地内存数据进行批量入库,通过控制线程数以及内存数据的拉取间隔等合理控制写库数据量;使用存储过程进一步提高数据有效负载,提升入库吞吐量;消费端对特定业务逻辑设置开关,按需控制消费速率。使用pg数据库on conflict特性实现幂等防止数据重复。
对不同业务采用不同线程池,隔离系统资源,防止外部依赖引起雪崩, 提高系统可用性
定期对数据库主要表数据进行归档/冷热分离,保证实时数据的查询效率; 使用mongodb单独处理年会埋点等统计数据,使用定时任务统计埋点数据并缓存redis,数据查询接口查询缓存数据,提升接口查询效率;将特定日志数据全量同步大数据平台进行离线数据分析。
使用数据库读写分离将读请求分配到读库, 最大程度提升埋点等数据写库速率
灵活设计会议运维监控功能实现设备状态准实时更新
可兼职时间
可兼职地点
0条评论 雇主评价