1,简述黑马头条项目?
黑马头条是类型与今日头条的新闻类型软件,用户可以查看他人发布的新闻头条,对其进行关注点赞之类的,也可以自己申请成为发布人,发布的内容,可以由平台管理员在后台管理系统对发布的内容进行审核、查看、也能对已经发布的进行下架等权限操作。
2,介绍下黑马头条项目的技术架构?
黑马头条项目采用的是分布式微服务+大数据技术架构实现的,是一个前后端分离开发的项目,我主要是负责的是后端的开发,其中后端主要使用到的技术有springboot、SpringCloud、nacos、freemarker、redis、kafka、git等,还有一些第三方的接口,比如阿里云的文章和图片的审核功能。
3,说下微服务开发的特点是什么?
- 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
- 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
- 自治:自治是说服务间互相独立,互不干扰
- 团队独立:每个服务都是一个独立的开发团队,人数不能过多。
- 技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
- 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
- 数据库分离:每个服务都使用自己的数据源
- 部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护
4,介绍一下前后端分离项目的开发步骤?
1).需求分析
梳理用户的需求,分析业务流程。
2).接口定义
根据需求分析定义服务端微服务接口,提供前端调用。
3).服务端和前端并行开发
- 服务端依据接口进行服务端接口开发(Java后端开发人员)。
- 对业务接口进行开发
- 开发完接口要对其进行测试
- 前端开发用户操作界面,并调用服务端接口完成业务处理(全栈或前端开发人员)。
- 使用前端技术完成前端界面的构建
- 调用服务端来获取数据
4).前后端集成测试
- 在前后端完成各自的开发后,对其整个业务进行前后端集成测试。
5,介绍下登录的流程,密码加盐策略?
用户输入用户名和密码,点击登录,我们首先会校验用户名和密码是否正确
如果正确就会给用户返回一个jwt生成的token(令牌),方便前端把它存储到浏览器的cookie中,当下一次用户访问的时候,后台会校验token,token有效的话,我们就会直接放行
在用户注册的时候,为了使密码更加的安全,会为每个用户创建一个随机的盐(随机字符串)一块随着用户进行保存,同时数据库中存储的密码也是加盐之后的密码。避免md5加密相同的密码,加密后的字符串是一致的问题
当用户登录的时候,会先根据用户的密码和已知的盐进行md5加密,然后再与数据库中的秒进行比对,这样的话,密码一致才算真正的登录成功。
6,网关校验认证的流程?
因为我们是微服务开发,我们所有接口的统一入口就是spring cloud gateway网关。
在网关中我们设置了一个全局过滤器,这样所有的请求都会先走过滤器才能路由到各个微服务中,我们就在过滤器中校验用户携带的token是否有效,是否过期等,如果失效或过期,我们会在网关中进行拦截,直接返回401,告知前端,跳转到登录页面后再访问。当然,如果请求是一个登录请求,则直接放行。
