请说一下你项目中是如何进行项目管理和发布的
我们在项目中使用GOGS做代码的托管,Jenkins做项目的自动运维和发布
首先,在GOGS中创建一个仓库,将写好的代码存入仓库中,本地向仓库拉取或提交代码,在提交时,我们会通常push到指定分支上,项目经理会先检查代码无误后,会从专门的分支上进行push。
其次,Jenkins 会监听代码仓库的变化,一旦检测到变化,就会从GOGS中拉取最新的代码。
然后,通过写好的脚本对最新代码进行构建和部署。
其实就是对代码做重新的打包,最后生成docker的镜像和容器。
以上就是我在上家公司的项目管理和发布的大致流程。
现在浏览器点击按钮出现了一个报错,如何定位发生问题的代码
- 首先通过浏览器的" 开发者工具"打开网络请求(Network)列表,找到具体的发送请求
- 查看错误的状态码。如果是5xx的错误码则是服务器问题,如果是200码出现与业务不符错误,则判定为代码问题。
- 5xx错误码可以去网关或者代理上查找问题。业务逻辑问题需要追踪到后端接收请求的代码。
- 对于追踪接收请求的代码可以通过以下几步来完成
- 首先,到
C:\Windows\System32\drivers\etc
中的host文件有没有映射这个请求的IP地址 - 如果有则通过这个IP地址到nginx中查看代理到的地址和端口,没有则直接到nginx中查看
- 之后代理地址和端口,找到具体的服务。
- 如果是代理到了网关服务,则需要到网关中的配置文件,查看匹配到的请求被转发到哪个服务上。
- 然后再向服务注册中心,找到具体的服务,找到服务的地址和端口。
- 最后,通过这个服务的地址和端口定位到具体的服务,到这个服务的表现层找到具体的请求
- 首先,到
- 通过以上步骤,我们大致定位到了请求的入口,之后就可以进入到业务逻辑层,进行断点调试,找到具体出现问题的代码,进行修改代码
当然除了以上步骤之外,还可以直接通过报错信息,进行全局搜索哪里用到了这个信息,快速定位,以及通过代码审查工具或者日志输出找到问题所在。
你得项目中进行用户的登录和检验的详细流程是怎样的
一般来说,用户登录和验证的详细流程可以包括以下步骤:
用户请求登录:用户在登录页面输入用户名和密码,并提交登录请求。
服务器接收请求:服务器接收登录请求,并验证用户提供的用户名和密码是否有效。
用户身份验证:服务器对用户提供的用户名和密码进行身份验证,通常会使用加密算法对密码进行加密比对存储在数据库中的密码。
验证结果返回:服务器根据验证结果返回相应的信息,如果验证成功则生成一个加密的会话标识(如Token),并将其返回给客户端。
客户端存储Token:客户端收到Token后,通常会将其存储在本地,以便在后续的请求中发送给服务器进行身份验证。
访问受限资源:用户在登录后,可以使用Token来请求受限资源,服务器会验证Token的有效性,如果通过验证则返回相应的资源。
安全退出:用户可以选择安全退出,客户端会销毁Token,服务器也会相应地使Token失效,从而保障用户的安全性。
说一下文章发布的流程
- 首先用户向自媒体微服务发起操作请求
- 然后从自媒体人文章表中查询id是否存在。存在则是修改,不存在则是新增。
- 如果是新增则建立文章与素材的关联关系,修改则更改文章与素材的关联关系。
- 其次判断文章是否是草稿,是则将草稿保存到草稿表中。否则是发布请求,需要根据用户在发布时设置的选项,匹配封面图片,修改状态为审核中。
- 进入审核阶段,从审核表中的查到需要审核的文章进行内容和图片审核,这里是使用到了阿里云审核(华为云审核、百度云审核)
- 先进入内容审核。审核失败返回结果及失败原因,无法确定的进入人工审核,通过则进入图片审核。
- 图片审核,审核失败返回结果及失败原因,无法确定的进入人工审核,成功则向文章微服务使用MQ投递消息
- 文章微服务监听MQ中的消息,将审核通过的文章保存到文章微服务中的文章表,并使用Feign调用自媒体人微服务中的修改文章方法将文章微服务中的文章id添加到自媒体人的文章表中,并修改为已发布状态。
此外,发布时间如果是在当前时间之后,我使用的是Redisson作延迟队列实现的。