作者回复: k8s支持类似网关的功能,叫ingress。我在Staffjoy中引入了一个轻量级的自研的网关,主要有两个目的:1)教学目的,让大家理解网关是怎么工作的,同时在k8s中,让大家理解ingress原理(Faraday类似一个自研的Ingress);2)Faraday是一个SpringBoot应用,可编程的比较灵活,要开发一些网关逻辑(比如路由,安全)比较灵活方便,另外Faraday的代码和其它微服务代码是一套统一管理的,如果引入一个其它网关,还要单独配置、管理和部署,反而麻烦。
作者回复: 用spring cloud gateway实现faraday的功能,完全可以做到,而且可能比faraday还要简单,建议学员自己动手实现,作为对课程学习成果的一个检验。如果学员理解了网关的原理和faraday的源码实现,完全可以用spring cloud gateway或者zuul替换faraday,如果能做到,这门课程可以打80分以上了。
作者回复: Faraday网关使用简单的同步处理方式,如果要实现reactive stream的方式,建议参考spring cloud gateway的做法,它是基于Spring WebFlux实现的异步模式。
作者回复: 拆分成微服务方式可以考虑,具体看你的业务复杂性和团队规模。关于微服务+网关安全认证架构,可以继续看课程第5章内容,里头有详细的架构分析,看看对你是否有启发,如果还有问题,也可以加我微信进一步交流(bulldog2015),说明来自极客时间。
作者回复: 网关一般是工作在7层的,例如网关路由需要识别http header或者path信息。 7层网关有一点性能开销,但是网关无状态可以水平扩,之前携程经验,每日百亿请求通过网关,平均增加延迟约20ms左右。 也有用TCP做网关的,之前携程的无线网关就是基于TCP,但是反而把事情搞复杂,还要定制通讯协议,开发调试都不方便,后来我们迁移到HTTP了。
作者回复: 你好,如果采用jwt令牌,里头可以包含用户角色/组等信息,在网关层可以做初步的权限控制,然后网关将用户角色/组信息向后传递,这样后台服务接口层可以进一步做细粒度权限控制,一般做法是在控制器上添加权限控制标注Annotation,Spring可以通过定制截获器标注实现。本课程第5章会进一步讲解Staffjoy项目的安全认证方案,有比较简单的权限控制实现,请继续关注课程。后面我还会在开发一个微服务电商案例,会展示比较复杂的微服务权限控制方案,可以关注我的github.com/spring2go。
作者回复: 这个是一种采用集中状态(redis)校验做法,原则上没有问题,需要监控流量做好扩容。关于微服务安全认证的原理和做法,请关注课程第5章,有详细剖析。
作者回复: 你好,课程更新由极客时间统一安排,目前节奏是每周更新10小节课,预计8月底前会全部更新完,请耐心等待,也可以等全部更新完后再统一学习,谢谢支持!
作者回复: 这个不好说,脱离测试和实际生产情况,单纯谈论性能意义不大。要实际做性能测试得出数据才知道。在生产的话,还要看实际用户流量模式和后台服务性能情况,一般需要监控数据才清楚。