通过本次互联酒旅项目,我有以下收获:
1..对于一个大型分布式项目整体从零到一的实现有了具体的了解;
2..对项目的合作开发有了深入的了解;
3.学会了一些框架、工具及中间件的使用;
4.对于代码的一些格式以及规范有了进一步的了解。
一.项目具体流程:
1.产品需求分析:对一个需求进行了解分析,形成需求文档。
2.数据库设计:通过需求文档,选定自己负责的模块,然后团队一起确定数据库的设计,设计内容包括需要的表,表的名字,表内需要的字段,字段名字及数据类型,字段的说明,表之间的关联逻辑,表需要的索引等。
3.API文档设计:数据库基本确定后,再根据项目需求进行接口文档设计。需要明确项目所需要的实现的功能,请求及响应的参数及格式,请求发送方式。
4.代码编写:根据API文档,进行代码逻辑的实现。编写代码时,除了要正确实现逻辑外,还需要注意代码的格式,可读性等问题,便于以后可以更容易的维护代码。
5.团队代码合并:自己写的代码测试没有问题后,通过git合并到共同开发的分支,解决其中的冲突。
6.前后端联调:代码合并后,需要前后端联调,进一步检查代码功能的实现情况。
7.代码优化:包括sql调优等;(还未进行,后续再补充)
8.部署上线。
ps:除了上述流程,前期还有项目架构的搭建工作同步进行。
二.使用的工具
1.数据库设计及管理:chiner,navicat,RedisDesktopManager
2.API文档设计:APIPost
3.代码编写:IDEA
4.项目合作开发:gitee
三.个人对此项目架构的理解
1.请求发送流程:
前端发送的请求通过ngix反向代理到spring-gateway网关,网关根据请求地址路由到nacos注册中心寻找具体服务,得到服务地址后,通过ribbon负载均衡和sentinel熔断降级向服务传送数据,经过oauth2认证,调用服务集群中的具体服务,返回数据。
2.nacos实现项目注册发现;
3.redis实现分布式缓存及分布式事务管理;
4.elasticSearch实现全文检索;
5.mysql实现数据持久化;
6.minIo实现对象的存储;
7.xxl-job实现定时任务;
8.skywalking实现链路追踪;
9.docker进行项目部署。
四.我负责的模块
此项目中,我负责的是优惠券部分代码的编写,包含如下内容:
1.数据库:用户优惠券中间表及优惠券表
2.API文档:包含三个接口
3.待完善部分:优惠券状态变更功能现在是由xxl-job实现,每次更新需要全表扫描更新,耗费资源,在项目结束前,将此功能通过redis的延时队列实现。