微服务设计与概念咨询

小弟最近在学习springcloud项目,有些问题网上搜索了依旧无法解惑,希望能得到各位前辈的答疑解惑,谢谢。目前在学习中,没有实际的业务。
1、目前设计是对外的接口都是统一返回格式,那供内部服务之间调用的接口该返回什么类型的值?
2、服务之间调用的时候,比如订单服务获取订单详情的接口需要调用用户服务获取用户的一些信息、调用物流服务获取快递轨迹信息,假如用户或者物流的接口发生错误(服务无法访问,或者业务的错误比如快递不存在之类的、或者根据订单查询别的服务额外数据查询不到的时候),是订单详情接口返回订单详情获取失败错误、还是照常返回订单详情(只是扩展数据,比如用户信息、快递信息、支付信息之类的没有数据显示而已)?
3、比如A服务调用B服务的接口,但是B服务的接口一些业务逻辑校验不通过,比如参数校验失败、数据不存在、业务条件不成立,该如何返回、返回什么数据给A服务的接口呢?是抛出异常还是返回统一对象格式?(跟问题2有点类似)
4、鉴权一般是在网关统一鉴权,还是各个微服务自己处理相应的鉴权、网关只负责解析token判断是否登录?
5、PC前台比如新闻门户、商城前台,一般使用什么技术和框架?需要考虑到SEO
6、企业实际项目开发中,是否应该使用dto、vo对象?还是全程都是使用do数据库实体对象、只是在部分场合比如返回用户信息之类的才新加dto对象返回?
7、网关如何区分前台和后台接口?后台接口需要做额外验证、比如只允许后台管理员访问后台(后台和C端用户是一个基础用户账号表),以前做单体项目的时候我是通过后台固定/admin前缀拦截的


回答:

1.内部服务之间调用也采用封装统一的返回格式即可。
2.内部服务A服务调用B服务,内部调用用一些状态码去约定错误和正确,根据状态码来去处理不同的错误,单单的抛出异常A服务无法明确是什么异常,除非你每种异常都单独定义。
3.内部服务互相调用其实和返回给前端的格式不需要有什么区别。
4.一般鉴权是单独的微服务来做,各个微服务来调用鉴权服务的接口判断登录,网关一般用于单点转发调用不同的微服务,蓝绿部署以及熔断等操作。
5.目前VUE比较多吧,不太了解前端的技术,SEO问题一般用SSR框架可以解决。
6.看公司的技术规范和个人习惯吧,一般来说,采用DTO来传输数据,VO来展示给前端。一般不会直接使用do来返回和传输(偷懒的话这条作废),返回信息可以采用不同的VO来给前端。
7.建议两三张表吧,更安全,万一出漏洞给你后台管理员信息都泄露出去了,比单纯的泄露C端用户信息更可怕,起码能隔离一下,而且C端用户和管理员不是一个体量的东西,访问频率可用性等方面也不一样,后期维护和扩展起来也更方便。


回答:

  1. 接口问题用swagger
  2. api网关建议用apisix
  3. 微服务每个都可以独立部署,业务成熟一个上一个


回答:

建议gitee,github找找别人的开源项目,看看别人怎么做的,别闭门造车

以上是 微服务设计与概念咨询 的全部内容, 来源链接: utcz.com/p/944150.html

回到顶部