1、在开发中的一些痛点,以及解决方式
主要是对于环境方面进行解决的方案
面试
- 环境配置与依赖管理:在项目开发过程中,开发、测试和生产环境的配置可能存在差异,同时依赖库的管理也可能导致版本冲突。使用Docker容器化技术可以解决环境配置问题,而Maven或Gradle等构建工具可以帮助管理依赖库。
- 代码重复与模板代码:在开发过程中,可能会遇到大量重复代码或模板代码。可以使用代码生成工具(如MyBatis Generator或JHipster)生成常见的CRUD操作代码,减少手动编写的工作量。
- 接口文档维护:在团队协作中,接口文档的维护是必不可少的。可以使用Swagger等工具自动生成API文档,减少手动编写和更新的工作量。
- 部署:自动化测试和持续集成/持续部署(CI/CD)可以提高开发效率和代码质量。使用Jenkins、GitLab CI/CD等工具实现自动化构建和部署。
- 日志管理:在分布式系统中,日志的收集和分析变得尤为重要。可以使用ELK(Elasticsearch、Logstash、Kibana)等日志分析系统进行日志收集、搜索和可视化。
- 监控与报警:为了确保系统稳定运行,需要实时监控系统状态并在出现问题时及时报警。可以使用Prometheus、Grafana、Zabbix等监控工具进行系统监控,同时结合报警组件(如Alertmanager)进行报警通知。
通过以上方法,可以有效地解决后端开发过程中的痛点,并提高开发效率。
2、项目中需要短信验证时需要注意的地方
注意事项
- 需要防止不同类型的验证码串起来的情况
- 本来是登录验证码,可以通过修改手机号的逻辑,这本身就不符合逻辑,所以在通用设计的事情,应该需要考虑到
3、定时任务框架从Scheduled升级为xxlJob
理由: 在线上需要手动启动定时任务一次时,没有入口。所以升级为xxlJob --在参考其他项目后,其实也可以写一个controller用来调用对应的定时任务 xxljob用于分布式服务的时候(例如有两个A服务)
4、springboot滚动更新的几种方式
待办
- k8s提供的滚动更新
- 优点
- 配置统一管理,可视化
- 网络探针
- 缺点
- 有很多配置需要注意
- 有很多坑
- 太庞大了
- 优点
- nginx+shell实现滚动更新
这个脚本假设你有两个Spring Boot应用实例,一个在8080端口,一个在8081端口,初始状态下,所有的流量都被引导到8080端口的应用。你的新版本应用将被部署到8081端口。
这个脚本将会:
- 构建新版本的Spring Boot应用
- 部署新版本的应用到8081端口
- 修改nginx配置,将流量逐渐引导到8081端口的应用
- 重载nginx配置,使得新的配置生效
- 停止8080端口应用,然后删除docker镜像(如果是用docker的话)
实际的脚本需要后面整理