1熟练使用Spring,SpringBoot,SpringCloud,进行整合开发
2熟练使用MySQL,熟练使用mybatis持久层框架及SpringDataJpa
3熟练使用Redis。分布式缓存
4熟练使用消息中间件,RabbitMQ
5熟练使用非关系型数据库mongobd
6具有三年以上实际工作经验
项目描述 :
区块链钱包项目:为用户提供USDT数字货币的充提,转账,USDT线下交易。
项目职责:
● 数字货币交易模块,
1 ,数字货币交易商发布数字货币买卖广告,并为交易商提供广告管理功能(广告撤销,查看广告下的交易订单)
2 ,下单功能,用户向数字货币交易商购买或出售交易货币,订单下单后创建一个聊天会话,可以跟数字货币交易商实时通讯,支付后由支付方修改订单状态为已支付,被支付方确认收款,点击已收款按钮,订单完成
3,订单的下单,支付,完成等通知由web 服务通过RabbitMQ 中间件传递到IM服务(聊天服务器),
4 ,管理后台的,广告,订单等管理功能
5 , 用rabbitmq中的插件x-delay-message 来实现订单延时消息的投递(下单后15分钟未支付自动取消订单等)
6, 用户下单,或修改订单,分别对广告和订单加上分布式锁(Redisson框架的lock(),和unLock方法 )
● 交易即时通讯功能模块的开发,
1, 用户下单的订单通知,支付通知等,由web服务通过消息中间件RabbitMq传递到IM服务(聊天服务器),最后由WebSocket推送给客户端,并将下单和支付通知由javaMail 发送邮件到用户邮箱。
2 ,使用MongonDB 存储用户的聊天消息,消息送达到客户端,客户端会返回一个消息确认ACK,然后标记消息为已送达。未送达的消息将由用户下次上线时主动通过接口拉取
3 , 使用静态的CurrentHashMap 来存储 用户的webSocket 连接,避免并发造成线程安全问题
4 , Redis可以指定KEY 过期时间的特性,限制用户发送聊天时间的频率
● 文件上传下载功能
1 ,使用亚马逊的S3对象的存储来存储项目文件(聊天图片,语音,用户头像等)
2 ,文件访问是使用Nginx 反向代理服务器来访问亚马逊文件存储系统
项目架构:SpringCloud微服务架构,采用Nacos作为注册中心和配置中心,权限采用SpringSecurity,接口集成Swagger生成接口文档,分布式定时任务集成XXL_Job,分布式事务采用LCN ,分布式锁采用Redis的Redisson。即时消息采用WebSocket实现用户之间即时通讯,聊天消息存储采用的MongonDB(非关系数据库),消息在服务器之间采用RabbitMq中间件进行传递,并使用SpringBoot Admin 进行服务状态的监控。
技术栈:Spring + SpringBoot+SpringClould+RabbitMQ+XXL_Job+Redis +WebSocket+SpringBoot Admin
+Nacos+MongoDB+MyBatis