一、 项目描述(项目背景)
依托微信小程序和App 客户端提供线上预订酒店和旅游产品的互联网产品
- 解决用户的痛点1:加快的用户搜索酒店和预订酒店的效率
- 解决用户的痛点2:售后功能保证了用户的合法权益
- 解决用户的痛点3:基于数据分析提供给用户多需求场景的组合产品
二、 项目架构
项目架构自我描述:
首先客户端发起请求,然后通过DNS域名解析,解析为ip 地址后,将请求打到Nginx 集群,nginx 本身有负载均衡的能力,nginx 然后将请求反向代理到Gateway 网关,然后Gateway 网关进行处理之后,请求打到服务端业务部分,在网关和业务集群部分,我们使用的是Ribbon 作为负载均衡,Sentinel 做的熔断降级处理。然后在业务集群中涉及到一些分布式锁,分布式事务的处理。项目的注册中心采用的是Nacos,配置中心也采用的是Nacos ,监控中心采用的是Skywalking,主要用于链路追踪和服务报警,LogStash 作为日志收集工具。使用redis 做的缓存,使用mysql 制作的持久化,使用RabbitMQ 做的消息队列,使用ES 做的全文检索,使用minio 作为对象存储服务,使用XXL-JOB 作为任务管理调度的服务。项目注册在gitee,使用Docker 部署,使用 k8s 管理Docker 集群。
三、 项目结构以及用到技术
用到的技术及说明:
- SpringBoot
作为容器 和 MVC 框架
- SpringSecurity
认证和授权框架
- MyBatis
ORM 框架
- Elasticsearch
搜索引擎
- RabbitMQ
消息队列
- Redis
分布式缓存
- MongoDB
NoSql 数据库
- LogStash
日志收集工具
- Kibina
日志可视化查看工具
- Nginx
静态资源服务器
- Docker
应用容器引擎
- Jenkins
自动化部署工具
- Druid
数据库连接池
- OSS
对象存储
- MinIO
对象存储
- JWT
JWT 登录支持
四、 我对项目的贡献,以及我学到的东西
贡献: 在本次项目中我主要负责酒店用户评论这个小模块,主要完成了用户的评论内容的增加、删除和查阅的接口,以及回答内容的增加、删除、和查阅接口,以及随机邀请用户的接口的处理。
学到的东西: ①本次项目中首先认识到企业中完整的开发流程是什么样的。②然后在设计数据库中应该遵循的一些规范(如:是否一类的字段不能用is 开头,以及尽量字段不为空等规范)。③在接口设计的时候应该通过业务分析确定有哪些接口,以及接口设计命名应该具有层次感,尽量符合RESTful 风格,通过接口的命名最好可以快速知道接口的功能是什么。④在编码方面,主要是对异常处理方面,尽量封装全局的异常处理类,通过调用方法的方式来抛出异常,这样能增加代码的可读性。⑤学会了使用Hutool 工具去进行一些方法的使用,如判空对象之类的操作。⑥在构建查询对象时,尽量使用 LambdaWrapper ,然后通过 函数式编程的方式,去替换掉那些硬编码的地方,从而增加程序的可扩展性,和健壮性以及可维护性。⑦必须明确每个层干什么事,dao 层主要负责继承接口和自定义的MappendStament 对象,Service 主要负责业务类的书写,Controller 主要负责调用业务类的方法即可,不做判断,直接返回结果即可。
五、我对本次项目的感悟
在本次项目中,首先了解了企业开发项目的流程和规范,后端程序员应该负责哪些工作,其次是在对数据库设计和接口规范设计有了规范的概念。通过每次组内会和整体会议,了解到别的同学是怎么看待问题的,怎么学习的,怎么编写代码的,别的同阶段的同学现在知识掌握到什么程度。通过项目的学习,清楚的认识到自己还有很多欠缺的技术去学习,很多东西还不够熟练,更是不知道其原理性的东西。所以,继续加油吧!!