前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)-3

简介: 前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)

项目总结和复盘


(1)


B2C(Business to Customer)。B2C中的B是Business,意思是企业,2则是to的谐音,C是Customer,意思是消费者,所以B2C是企业对消费者的电子商务模式。这种形式的电子商务一般以网络零售业为主,主要借助于Internet开展在线销售活动。


在线教育系统,分为前台网站系统和后台管理系统,B2C模式。


前台用户系统包括课程、讲师、问答、文章几大大部分,使用了微服务技术架构,前后端分离开发。


后端的主要技术架构是:SpringBoot + SpringCloud + MyBatis-Plus + MySQL + Maven+EasyExcel+ nginx


前端的架构是:Node.js + Vue.js +element-ui+NUXT+ECharts


其他涉及到的中间件包括Redis、阿里云OSS、阿里云视频点播


业务中使用了ECharts做图表展示,使用EasyExcel完成分类批量添加、注册分布式单点登录使用了JWT


(2)


项目前后端分离开发,后端采用SpringCloud微服务架构,持久层用的是MyBatis-Plus,微服务分库设计,使用Swagger生成接口文档


接入了阿里云视频点播、阿里云OSS。


系统分为前台用户系统和后台管理系统两部分。


前台用户系统包括:首页、课程、名师、问答、文章。


后台管理系统包括:讲师管理、课程分类管理、课程管理、统计分析、Banner管理、订单管理、权限管理等功能。


前后端联调经常遇到的问题

1、请求方式post、get


2、json、x-wwww-form-urlencoded混乱的错误


3、后台必要的参数,前端省略了


4、数据类型不匹配


5、空指针异常


前后端分离项目中的跨域问题是如何解决的

后端服务器配置:我们的项目中是通过Spring注解解决跨域的 @CrossOrigin


也可以使用nginx反向代理、httpClient、网关


说说你做了哪个部分、遇到了什么问题、怎么解决的

分布式id生成器在前端无法处理,总是在后三位进行四舍五入。


分布式id生成器生成的id是19个字符的长度,前端javascript脚本对整数的处理能力只有2的53次方,也就是最多只能处理16个字符


解决的方案是把id在程序中设置成了字符串的性质


前端渲染和后端渲染有什么区别

前端渲染是返回json给前端,通过javascript将数据绑定到页面上


后端渲染是在服务器端将页面生成直接发送给服务器,有利于SEO的优化


能画一下系统架构图吗

3b3a1f0763e1cb2c1dc49f57e7acc0fa_70e749844a0efe07900f68cbaf5ddf83.png


Bug记录


maven错误解决

用我的仓库


删了包,让它重新下


执行了全局异常处理

77aeb6c11d308635394a5b9761999def_3873fb638c3bbcf97cf89d2d0bbd60ff.png


6f6ce312ed0981df1cf7d66f32349490_fedc27d02cd898ba836d04cc26639392.png


常见的排错方式

如下错误


61237ded232de87b37bf9e93fd5bbbf0_0c30dc7b6e1b4a67482445c468e74028.png


排错思路


从头开始想,当我点击这个按钮的时候发生了什么事,从前端想到后端依次检查。如果都没有错误那就检查其他配置,如nginx,nacos,等第三方技术

好,那么我们来实践一下


1、从前到后发森什么事了?


84f55773c7e911a8f73a2957d3584369_3abe5f7e52094c5ada5e581d1d52b5a8.png


2、详细分析


b2c7b28361a03db0e13658e8dc646842_730d89f8ac01731a089f4a42c335a1ae.png


用开发者工具抓包,看看请求的过程都发生了什么

81b14221d34425cfd2a9265615492098_163c7e022c5ab01f47f57e49396c2dae.png



因为整个项目是微服务架构,这里其实是订单微服务调用了课程信息、用户信息微服务。


用户信息都是显示出来的,那就说明是课程微服务出问题了,我们先用swagger进行测试看看接口的功能有没有问题


43f81e33bb9c2a3015a2a2d7beb2f433_6218228ef6c09eff72a39193d8041be0.png


问题逐渐清晰了,后端功能没问题,那就是前端的问题了


其实刚才我们就能定位到是前端的问题,因为课程id参数为undefined,参数是通过前端传的。为了更严谨,我们选择都测试。


让目光再次回到前端代码


9780b42569b9d724d965e8523b3033ac_ec56c736426fb4ec871df93b205e5fe7.png


c6d9843faa252e547a9b4f7b38c88add_e194f34844b8d14042cf0993bc5728d9.png


再次测试


6671a4c232573c33d0c895283b512447_ccc85214ac0c1c981c034e84ca9e82e6.png


Feign调用异常FeignException$NotFound: [404] during

一般来说,feign报404错误有以下几个原因

1、路径错误

在服务消费者断采用GetMapping方式,如

@GetMapping(“knowledge/metadata/delete/{mdcode}”)


在服务提供者端,用

@RestController

@RequestMapping(“knowledge”)

public class KnowledgeGraphController {


@RequestMapping(“metadata/delete/{mdcode}”)

(实现方法)

}


服务消费者端,一定要加上knowledge呀喂


2、在多个客户端上启动了服务提供者服务,而这两边的服务方法没同步,所以在调用feign时,会采用负载均衡,在多个客户端上一边读取一次。如果这个时候恰好读的是没有指定方法的客户端提供的服务,就会报404错误。

建议改好方法之后提交,两边再跑服务


3、路径上参数为null

例如mdcode 为null,匹配不到路径地址,触发不了路径问题


参考


视频演示

尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目_哔哩哔哩_bilibili


什么是跨域

https://www.jianshu.com/p/8fa2acd103ea

相关文章
|
2月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
73 3
|
19天前
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
39 1
|
24天前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
39 5
|
1月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
1月前
|
安全 jenkins 持续交付
如何在 Jenkins 中配置邮件通知?
如何在 Jenkins 中配置邮件通知?
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
285 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
自然语言处理 jenkins 测试技术
Jenkins适合什么样的项目
【10月更文挑战第18天】Jenkins适合什么样的项目
41 3
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
140 1
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
57 2