关于微服务架构,如何进行微服务间通信,用户身份验证的讨论
背景:创业初期团队,开发团队2-3人(均为1-2年经验),特此发帖与大家商讨架构问题,如有经验丰富的开发者或架构师愿意提供远程协助可以付费咨询。
- 起初只有一个Laravel服务(Web),所有信息均存在其MySQL服务器,使用blade模版进行前端开发,控制器Controller查询数据并渲染模版。
- 后来由于业务拓展,需要存储大量GPS数据,决定增加服务2(GPS),其使用MongoDB作为数据库存储。
- 同时决定逐渐引入Vue作为开发前端新功能时的框架,使用API Controller进行数据查询接口。
- 关于用户身份认证:历史遗留代码仍旧使用Laravel自带的Authorization功能。新功能使用基于JWT Token开发的包配合AWS Lambda进行鉴权和转发(如图所示)。
- 所有API入口都在api.app.com,基于AWS Lambda,根据不同的请求路径。api.app.com/web 或 api.app.com/gps 鉴权并转发至Web或GPS提供的API接口。
- 在Web和GPS的API Controller中通过decode JWT token获取到一些用户的基本信息字段(id,role等)。
- 由于团队中没有经验十分丰富的开发人员,发帖在此想和大家讨论一下目前的架构改善的空间,希望能提升用户体验,优化开发中的流程,谢谢。
推荐文章: