- 服务器开发:熟悉Spring、springBoot、netty等 有看过一些技术书籍
- 前端开发:熟练使用vue.js,angularjs,Node.js等(有写过管理后台经验)
- 数据库相关:熟练使用Oracle、MySQL等主流数据库及SQl的调优,了解使用过NOSQL数据库(Mongodb、Redis,Memcache等)
- 版本管理:熟悉文档和自动化部署工具:Maven/Svn/Git/jenkins
- 消息中间件:了解MQ(kafka,activeMq)消息队列等
- 云和开放平台:微博开放平台/微信应用开发
- 企业级分布式应用服务:了解使用 edas,springCloud,nacos,dubbo,阅读过nacos启动源码
- web开发:熟悉nginx,了解python,mqtt等。
- jdk:了解并发编程,集合,阅读过相关源码。了解JVM内存模型,垃圾回收机制和垃圾收集器等
#### 哔哔小说项目
项目负责:
书桌:互动,系统通知,书单
书会:im群,书会任务,插件,等级
书库:搜索,爬虫书籍,排行,推荐
发现:动态,热门推荐,话题
用户:用户登录模块,关注,粉丝
任务中心:日常,奖励,邀新等任务
#### 技术描述:
文学项目本身分为网关和业务服,网关是分流,校验,转发等.系统的架构使用netty来搭建的,
数据库采用分库分表,分表查询采用的shardingjdbc,分表的策略是根据我们文学项目具体的业务
使用memcache缓存,处理一些session和关注模型等.由于项目本身偏重文学社交之类的,有即时通讯的功能
目前是对接腾讯的IM.
在项目中遇到的问题及解决:数据库慢查询,cpu占比过高.stackOverflowError,OutOfMemoryError-java heap space,
定位问题 top定位是那个服务cpu占比超高,jps,jinfo,jstack命令定位线程和输出异常信息
捕捉到是递归导致的内存溢出。jdk-tools 已经提供一些故障的排查工具。而遇到的慢查询可以通过show processlist
来定位到具体的SQl,在项目生产环境遇到的慢查询,处理方式定位到SQL记录下来,影响到外网APP(kill掉),再优化具体的业务实现或sql
的优化.在管理后台使用Spring+JPA从数据库中读取大量数据,使用了单例模式的AppContext的getBean,内存中缓存了大量的Entity Bean……
导致的OutOfMemoryError 通过修改jvm的-XX:MaxHeapSize(-Xmx)参数,后面调整为以及修改数据读取方式(如:只读取有用信息).
通常有对故障排查命令不熟悉的看JDK Tools and Utilities文档。
在文学的项目中,前期负责服务器的开发,对接客户端,后期有写一些管理后台的功能,在整个项目中总结如下:对接产品文档明确有些功能实现的意义.
这样才能对功能的需求有更深的理解,提出自己的问题,其次随着业务的增加,随之而来的一些管理需求,有些功能可以简化,通常建议删繁就简的出发点,和产品讨论具体的逻辑
通常这样避免掉重复的功能需求.业务服上查询或返回数据大的接口,后面做了一些优化,数据进行压缩
#### 拍美视频项目
项目视频负责:
广场模块:动态,评论,搜索
内嵌游戏开发:一系列邀新,推广活动
视频任务中心:金币的任务系统
用户模块:用户登录模块,关注,粉丝
#### 技术描述:
项目使用springCloud来搭建的,使用nacos作为注册中心和配置中心,
采用redis缓存,solr作为项目的搜索服务.
使用阿里的edas企业级分布式应用服务,视频,图片文件采用七牛云的对象存储.
由于前期考虑到项目随着业务的发展,可能单服满足不了需求,模块划分是通过业务来区分,
目前使用的SpringCloudAlibaba的nocos组件作为配置中心
为后期的分服提供方便,后续的拆分可能将nacos作为注册中心。
在外网的运行印象比较深的bug,从发现活动服出现请求接口比较慢,
到后来发现广告服大量的请求。top下业务服没有发现cpu占比很高的服务,
然后看下数据库的慢查询,也没有发现很慢的sql语句,
然后依次在网关和业务服调用生产环境的接口返回基本保持在一两百毫秒左右,
然后加上域名访问,从而定位到nginx的问题.在正式外网环境中,
我们有些bug可能通过日志文件不能准确定位到问题所在.
从而有时的问题排查需要用到 linux上常用的命令来定位问题。
在做视频的管理后台当中,由于前后端部署非自动化时效率非常低,后面我将前后端代码用gitlab的CI工具加上jenkins改成自动化部署,
提高部署效率和质量,统一部署脚本,通过参数化管理来区分各个环境之间的差异,简化了开发流程,为了管理功能和服务器业务的区分,不直接给
管理开业务库的权限,业务服会提供特殊接口给管理后台调用。
角色 | 职位 |
负责人 | 高级java工程师 |
队员 | 前端工程师 |
队员 | 后端工程师 |