我有一个微服务相关的疑惑,求大佬指点一下.

wautsns 2018-10-15 10:32:00
我在做课程设计的时候产生了一个疑问,打个比方:我现在有两个微服务,一个是用户服务,已经提供了通过访问 /users/{id} 的方式获取完整用户信息的功能,另一个是B服务,这个 B 服务需要使用一个通过用户 id 获取用户名的功能,且仅仅只需要用户名即可(并且这个功能并不想暴露给用户,emm,对于这里的确不合理,但这里只是举个例子,能懂我的意思就行)。如果直接通过 feign 访问 /users/xx 获取完整用户信息再取出用户名,总感觉太多余;如果在用户服务的 Controller 里添加通过 id 获取用户名的 handler 的话,为了让 B 服务访问,而普通用户不能访问,则需要在网关处做额外的配置。(我目前就只能想出这两个方法,如果能有更简便的方法,求指点啊。。。)
与之相比,在 SOA 架构下的话,我感觉好像就能很容易解决,只需要往 UserService 接口中添加这个功能,并实现即可,B 服务可以从注册中心直接拿到 UserService 中的这个功能,不会出现微服务中必须在 controller 中写 handler 的情况,也就不会出现暴露给用户的问题。
归根结底而言,我现在感觉到的问题就是,微服务之间的数据传递要通过 http 请求,并返回 json 的方式获取,而 json 中的数据往往都是 View Object,对于用户而言,无可厚非,但对于项目中的其他服务而言,这个 json 中的数据可能有太多都是无用的,往往更需要的是 Data Transfer Object ,可这些数据很可能是不能暴露给用户的。如果非要这么做,就必须在网关做额外处理。相较 SOA 着实麻烦了很多,所以就想问问大佬们,在微服务架构下,这样的情况有什么好的方式去处理?(我现在只是个刚大三的学生,0 工作经验啊,如果有什么说的不对的地方求轻喷。。。)
...全文
294 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽饮烛 2018-10-16
  • 打赏
  • 举报
回复
不要被 微服务、restful 局限了的思考,
1、权限问题贯穿了整个微服务架构,是否要在各个微服务中处理权限是以需求为导向,不是非得在网关处理。
2、加一个 getName 的接口又如何。
咸哼酒家 2018-10-16
  • 打赏
  • 举报
回复
权限控制中每次请求都带有token,可包含当前操作用户的关键信息,
每次请求request获取这些关键信息来判断权限是否足够。
至于是用feign 还是自带Controller调用,看具体业务实现需求了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧