目录
技术架构:
- 前段发送请求,进行DNS解析
- 通过Nginx的反向代理到Wbflux网关
- 通过SpringCloud Gateway进行动态路由到指定的
- SpringBoot应用在业务集群中通过OpenFeign进行相互调用
- Nacos集群再整个架构中都能提供服务注册发现于动态配置和配置管理功能整合SpringBoot Admin进行服务监控
- SpringCloud GatWay通过Ribbo进行负载均衡,通过Sentine进行熔断降级
- Skywalking UI作为监控中心和Prometheus进行运维报警系统,将故障发送给管理人员。
- RabbitMQ实现消息队列,用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用
- ElasticSearch进行全文检索
- 在业务集中还需要实现对应的分布式事务、分布式锁。
- Redis实现缓存
- Developer将代码文件上传到GitHub上通过docker容器部署,使用K8s AP对资源进行编排,管理应用的全生命周期,同时也提高发布与更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测试、交付等持续集成,运维人员继续对这些进行维护。
开发流程:
项目工程结构:
项目结构:
数据库设计:
数据库使用的是CHINER元数建模
- 所有的查询操作都要走索引
- 数据库的设计要符合规范
- 字段格式的规范
- 字段类型
- 不要使用外键或者多表联查,设计合理的中间表
- 所有的表都要有创建时间,修改时间,逻辑删除。
- 主键使用bigint
- 除主键字段外其余字段均要有默认值
接口设计:
接口设计使用的是ApiPost6进行接口的设计
- 接口的请求路径是否合理
- 接口请求路径规范,与代码对应controller层一致
- 传入参数的名和后端代码是否对应
- 传入参数名的规范
- 本次Api设计不要使用Restful 的路径传参
- GET 请求的参数在 Query 里面填写,POST 在 Body 里写
- 参数名采用驼峰命名
- 所有的删除都要走修改逻辑,使用逻辑删除
编码阶段:
本次使用的是Mybais-Plus
- Controller层只返回结果不进行业务处理
- 所以的业务逻辑处理都放在Service层
- 尽量不要使用TryCatch,使用全局异常捕获
- 编码一定要符合规范并且使用善于注释
- DAO层代码直接继承BaseMapper,也可以在其中编写所需要的SQL语句
- Service层代码继承IService,使用Mybais-Plus的方法进行数据库操作,并且在Service层不要出现Mapper,使用this来调用方法。
- 使用卫语句,不要做多层if嵌套
- 当要用到跨模块调用服务时,用OpenFeign
- 使用Lambda表达式可以简化代码
GIT的使用:
- 每次编码前都要Pull最新的代码
- 代码提交的时候一定要查看提交的内容
总结:
在单人开发的时候有很多规范都不曾注意,但是在多人开发的时候,规范是一个非常重要的东西,只有大家统一一个规范,才能让最后的代码整洁,干净,可读性强。本次是将一个项目从头开始的搭建过程,作为一个刚入行的开发,经常是处理一些业务的编写,第一次从设计文档以及数据库开始的搭建项目对我眼界的开阔有很大的帮助,在本次开发中所用到的大多数都是以前所学习过的东西,可是学习过缺并不知道怎么试用而且其对应的使用场景是什么,在这次项目的开发中都开始慢慢的学习与了解。从开始的束手无策,到现在的略知一二,这是一个从零到一的过程,使我受益匪浅。在这次团队的开发中,队友也了我很大的帮助,大家一起学习一起进步,有问题大家也会很乐意来帮助你解决,这种环境是我非常喜欢的。希望这一个月的学习能让我在以后的学习,工作上有更明确的目标。