我之前做过的项目是属于互联网项目;是一个关于网络交友平台的应用程序的开发,和市场上面的某些交友平台类似;它主要运用的架构是基于spring-boot利用dubbo以zookeeper为注册中心搭建分布式服务架构;实现sso单点登录功能、完善用户信息、搜附近的人的功能和圈子的一系列功能如:查看好友动态、发布动态、评论、点赞、喜欢、小视频等功能,通过大数据计算智能推荐好友匹配好友等等;
我负责的功能模块开发有:登录模块、好友推荐、圈子的一部分功能:发布动态/评论等功能的开发;
登录模块的实现是通过用户手机号发验证码给用户进行登录,登录成功之后,会生成一个token,这个token的作用是用户登录之后的唯一凭证,之后调用各个分布式服务或者访问各个功能模块必须要携带它;其中发送短信的功能是利用阿里云短信服务的接口进行发送验证码给用户,发送成功后并且会把验证码进行短暂的存储在redis中,所以用户传过来的验证码会先去redis中获取,如果没有从redis中获取到会提示用户先获取验证码,如果有获取到,就验证用户传过来的验证码登录; (登录模块的实现是用户先通过手机号访问我们后台的发送短信的接口获取验证码,该接口主要用到的技术是阿里云的短信服务API,然后访问我们后台的登录接口,登录成功后生成唯一凭证 token以便于用户访问其他接口时进行身份验证。)
好友推荐功能模块分为,好友匹配、佳人列表推荐;就是根据token解析出来的用户id查询存放推荐好友的数据表,该表中的数据都是通过spark计算引擎根据一定的计分规则计算好了的。
项目中的圈子功能的主要的特点是数据量会随着用户的数量增多而增大,对于数据表是读多写少。。。。所以通过mongoDB加上redis的技术提高数据存储与访问的性能,针对读多写少的特点我们会尽量将数据表设计成单表进行查询。简单的说下发布动态的流程,首先我们会把发布的内容先存到发布表中,然后将发布表的主键id存入到相册表,再然后将发布表的主键id和自己的id存入到好友的时间线表,这样用户既能通过自己的相册表看到自己以前发布的动态,好友也能通过好友自己的时间线表看到用户发布的动态了。查看好友动态其实就是查询用户自己时间线表;获取发布id与好友id,再查询发布表将动态信息存入redis中,然后再展现出来。
其中图片上传管理是利用阿里云的oss存储服务进行管理的,用户上传头像的时候需要进行人脸识别,这就利用虹软技术进行人脸识别校验,小视频上传管理是利用FastDFS技术进行管理的
查看一条动态下的评论和发布评论的简单流程:通过发布id查询评论表即可,发布评论就是将要发布评论的内容和被评论的发布id存到评论表;
用户点赞功能模块实现:用户传过来评论id(发布id)然后从token中获取用户id,查询用户有没有对该评论(动态)点赞,有就直接返回,没有就进行点赞处理。
查看动态/评论的点赞数/评论数:根据发布id/评论id /和操作的类型查询评论表即可,再将数据存入redis中
以上就是我负责开发的功能模块开发的简单概述。
