前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我在做社交项目中的用过的技术栈

我在做社交项目中的用过的技术栈

作者头像
名字是乱打的
发布2022-05-13 10:50:14
3570
发布2022-05-13 10:50:14
举报
文章被收录于专栏:软件工程

一:使用Docker实现了将不同的功能集做成了一个个的容器统一管理,Docker完全使用沙箱机制,相互之间不会有任何接口,而且容器性能开销极低.

二:项目中吐槽模块数据的存储使用了MongoDB,主要考虑因素是使用MongoDB(其中MongoDB点赞数+1如果用的是数据库springdata提供的mongodb(dao层继承MongoRepostory接口)那么需要先根据id查到这个实体,然后修改这个值再直接保存整个实体)这样势必需要进行两次io操作资源使用多(实际上我觉得MongoDB一般+1操作都需要直接用原生命令去写)

代码语言:javascript
复制
//方式二:使用原生mongo命令来实现自增
//db.spit.update(("id":"1"),{$inc:{thumbup:Number Int(1)}})
        Query query=new Query();
        query.addCriteria(Criteria.where("_id").is(spitId));//criteria 标准
        Update update=new Update();
        update.inc("thumbup",1);
        mongoTemplate.updateFirst(query,update,"spit");
        //用这个方式,java代码与数据只进行一次操作,效率更高

三:项目中用redis实现了记录点赞的文章id和用户id整合,避免重复点赞,也有把文章和个人资料这些常用数据放在redis中

四:4.用ElasticSearch+logsatsh+ik分词器实现了搜索服务的开发 选用es的原因 ES本身作为一个搜索引擎,用来处理检索的任务再合适不过。你可以在线上项目中直接将内容写入ES以提供检索服务,也可以把以往的数据导入ES以处理特定的需求。

五:用户注册时,用lang3包生成6位验证码保存到redis并写成map已直接模式存入RabbitMQ队列中利用Aliyun短信服务发送到用户端,点击注册时比对缓存验证码和用户的验证码,如果一致则返回成功并删除缓存中该值

我第一次开发注册时候突然想起来忘了删除缓存中验证码,结果一条短信3分钟都有效,注册完了还能循环利用 哈哈哈哈哈,为什么用消息中间件做中间处理呢?主要是考虑到做可以异步处理和解耦,让用户可以不用等待而且跟阿里云这些外部程序的耦合度比较低

六 我们用JWT做了加密和鉴权-简单来说用BCrypt做了密码加密解密,用JWT做了鉴权 具体的: 1注册成功的密码入库时候我们使用BCrypt做了一个加盐加密 2登录时候首先用同样的盐去匹对,匹对成功后,我们生成一个token返回 3我们实现了HandlerInterceptor重写了前置拦截器做了一个解析token的校验,拦截处理除了登录外的所有请求得到token或者用户信息,在具体业务中我们会在service层根据解析情况进行不同的操作,比如添加好友时候需要用户token,删除用户需要admin token 4,前后端做一些约定:比如前端请求微服务时需要添加头信息Authorization ,内容为Bearer+空格 +token

七 使用了springcloud统一各个模块 具体的: 1.使用Eureka做了服务器端,并在各个微服务模块添加配置使其注册到Eureka 2.使用Feign实现了各个微服务模块之间的调用(比如friend模块添加好友时候,user模块具体用户粉丝数+1等),并且在集群中可以利用其轮询处理特性实现负载均衡 3.部分功能业务在做Feign调用时候添加了熔断器(继承client并实现和处理)防止服务雪崩 4.添加了Zuul网关做统一的路由转发并加了ZuulFilter做保头措施 5.使用gitee结合Spring Cloud Config做了统一的线上配置管理 6.使用SpringCloud Bus消息总线结合RabbitMQ和actuator做了一个监听码云配置文件实现不重启项目而做到线上刷新配置文件

八结合gogs,Jenkins实现了持续各模块的集成

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档