1.熟练掌握JavaEE开发相关技术,如SpringMVC/Spring/Freemarker/Spring Data JPA/Hibernate/MyBatis/Spring Boot/Thymeleaf
2.熟悉前端知识,如HTML/CSS/JavaScript/jQuery/AngularJS
3.对Java多线程,JVM和有自己的理解
4.精通微信公众号开发
5.熟悉小程序开发流程
6.具备产品思维和快速学习能力,代码风格良好
7.具备架构设计能力以适应不同场景需求
8.具备设计高并发级秒杀系统的能力
9.熟练掌握关系型数据库相关知识
10.阅读过Netty/Tomcat等源码
11.熟悉Linux常用操作和基本的代码部署能力
12.熟练使用IDEA IntelliJ/Jenkins/Git/Nginx/等工具
1.春节抢红包活动
抢红包活动最关键的点是解决高并发和库存超卖问题。
a.高并发
高并发包括页面请求和提交请求的高并发。
1)页面请求并发
要尽量采用静态化的方式处理。静态资源文件尽量放CDN以转移流量,整个页面静态化后保存到redis,并使用nginx+lua脚本读取以避免磁盘IO,这样做的目的是尽量前置流量,不要穿透到应用层。
2)提交请求并发
并发提交的流量也要避免穿透到应用层,思路也是采用nginx+lua+redis的方式,提前分配好每个红包保存到redis,lua脚本直接领取并快速返回给用户,领取后开启异步任务同步信息到DB并完成统计逻辑,保持最终一致性即可。这样做能最快速的响应用户,避免等待。
b.库存超卖
每个红包提前分配并保存到redis中,每次领取都是简单的lua+redis读取原子操作,原子操作保证了数据的一致性,避免超卖
2.网站定期宕机问题排查
突然遇到网站定期(大概是每周一中午左右)宕机问题,仔细分析JVM heap dump后,终于确定了错误原因:
a.依赖的地图定位服务白名单出错,每次向地图服务提供商发起定位请求都会报错
b.以上报错导致重试5次,即一个用户请求会触发5次定位请求
c.公众号发推文后流量暴增,导致定位请求流量暴增
d.每次定位请求都是一个短连接,占用一个端口,导致端口占用暴增
e.端口被占用完后,正常请求处理线程阻塞等待端口释放,应用无响应
排查过程很痛苦,要分析的原因太多太杂,但是学到了很多东西。
角色 | 职位 |
负责人 | 高级Java工程师 |
队员 | 安卓工程师 |
队员 | 前端工程师 |
队员 | 后端工程师 |