- 你们网关用的什么 ? Gateway zuul
你们网关里面写什么代码?
- 跨域,路由(动态路由,负载均衡)ip 黑名单拦截,Token 的校验,对请求进行过滤(请求参数校验) 对响应做处理(状态码,响应头) 熔断 限流
- 微服务的网关,可以很好地将具体的服务和浏览器隔离开,只暴露网关的地址给到浏览器
- 在微服务网关中,可以很好的实现校验认证,负载均衡(lb),黑名单拦截,限流等。
Gateway 和 zuul 的区别 ZuulFilter
Zuul 也是 web 网关,本质上就是一组过滤器,按照定义的顺序,来执行过滤操作
二者的区别:
- 两者均是 web 网关,处理的是 http 请求
- Gateway 是 springcloud 官方的组件,zuul 则是 netflix 的产品
三家公司:springcloud,netflix ,alibaba(nacos,sentinel,dubbo zk,seata,rocketmq) - gateway 在 spring 的支持下,内部实现了限流、负载均衡等,扩展性也更强,但同时也限制了仅适合于 Spring Cloud 套件。而 zuul 则可以扩展至其他微服务框架中,其内部没有实现限流、负载均衡等。
- Gateway(Netty NIO)很好的支持异步(spring5.x ,webFlux 响应式编程默认是异步的),而 zuul1.0 仅支持同步 BIO zuul2.0 以后也支持异步了
Nginx 在微服务中的地位
最后简单聊一下 nginx,在过去几年微服务架构还没有流行的日子里,nginx 已经得到了广大开发者的认可,其性能高、扩展性强、可以灵活利用 lua 脚本构建插件的特点让人没有抵抗力。(nginx 的请求转发 最大并发是多个次,每秒 5w-10w 左右) 3w 左右
有一个能满足我所有需求还很方便我扩展的东西,还免费,凭啥不用??
但是,如今很多微服务架构的项目中不会选择 nginx,我认为原因有以下几点:
- 微服务框架一般来说是配套的,集成起来更容易,如今微服务架构中,仅有很少的公司会面对无法解决的性能瓶颈,而他们也不会因此使用nginx,
- 而是选择开发一套适合自己的微服务框架(很多公司会对现有框架进行修改)
- spring boot 对于一些模板引擎如 FreeMarker、themleaf 的支持是非常好的,很多应用还没有达到动、静态文件分离的地步,对 nginx 的需求程度并不大。
动静分离: css js 可以放在 nginx
单体项目需要部署 对 nginx 的使用的需求还是比较大的
斗鱼 不是使用后端技术 如何实现大规模缓存 :使用 Nginx 做大规模的静态资源缓存
不是为了用技术而用技术 按照实际业务来 目的是盈利
无论如何,nginx 作为一个好用的组件,最终使不使用它都是由业务来驱动的,只要它能为我们方便的解决问题,那用它又有何不可呢?
找工作思想: 不要为了用技术而去用技术
ssm 吃一辈子 稳定 挣钱 你想技术提升 跳大厂 先入行 一年就跳槽
关于限流,面试不会直接问,而是间接来问
比如:如果在抢购过程中,用户量请求非常大,怎么确保商品不会卖超
Redis 单线程 (IO 为什么快,因为我们现在的处理器是多核心数的,redis 底层使用的是IO 的多路复用)
一般人只会在意商品卖超,而忘记了限流的重要性
Mq(限流 削峰,异步,解耦合)