34 | 路由凭什么作为微服务网关的基础职能?
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了微服务架构中网关的重要性和基础职能,强调了网关作为服务集群对外的入口,承担统一对外交互的代理人角色。文章介绍了微服务网关的基础职能,包括路由器、流量过滤器、安全、认证、授权、限流、监控和缓存等,并围绕网络I/O模型的知识进行了详细讲解。此外,文章还探讨了网关的性能考量,以Zuul网关为例,阐述了不同网络I/O模型对网关性能的影响。总的来说,本文为读者提供了微服务网关的基础知识和重要考虑因素,帮助读者快速了解微服务架构中网关的作用和性能优化的相关知识。 文章还提到了网关的可用性考量,强调了网关的轻量化、选型成熟性和高可用性的重要性。此外,还介绍了“BFF”概念,即网关针对不同前端提供不同服务的能力。最后,文章提出了对网关路由职能在BFF方面的应用,引发读者思考网关在微服务架构中的其他应用和功能实现方式。 总的来说,本文内容丰富,涵盖了微服务网关的基础知识、性能优化、可用性考量和BFF概念,为读者提供了全面的了解和思考空间。
请先领取课程
全部留言(16)
- 最新
- 精选
- Free在学习IO模型的时候,接触到另一种解释,和本节的解释不太一样,一直疑惑今天讲的IO模型和下面的IO模型本质上是同一种解释,还是说下面的解释不对,求大佬解惑。 另外,本节中说select、epoll、kqueue属于多路复用 I/O,多路复用 I/O 本质上是阻塞 I/O 的一种。而在下面的说法中,select、epoll、kqueue属于同步非阻塞IO,到底select、epoll、kqueue是阻塞还是非阻塞,哪种说法对呢? 以下是另一种解释: IO操作分两个阶段,一般来说step1花费的时间远远大于step2: step1、等待数据准备好(读到内核缓存) step2、将数据从内核读到用户空间(进程空间) 同步阻塞IO(BIO): step1上阻塞step2上也阻塞。 同步非阻塞IO(NIO):step1上非阻塞step2阻塞,Reactor就是这种模型(select、epoll、kqueue) 。 异步非阻塞IO(AIO):step1上非阻塞step2上非阻塞,Proactor模型就是这种模型。
作者回复: 上面的说法不能说有错,现在经常能听到有人这么提及的。但有确实一些误导成分,其关键是混淆了面向用户一侧的阻塞,与面向系统一侧的阻塞的概念。 以Java的NIO为例,它本身就是基于多路复用I/O实现的,对于用户来说,只要不必为每一个I/O通讯去开一条线程,一个循环等着selector返回有效的通知即可处理所有I/O通讯,那对用户来说它就是非阻塞的,并不关心没有数据到来之前,为何不会空转消耗CPU资源。 但是对操作系统来说,这种只能称之为异步,本身select函数必须是阻塞的,否则就会导致循环中大部分时间CPU都在空转。 其实“以多路复用IO去实现非阻塞IO”这种提法,不加以详细解释,本身就有混淆概念的嫌疑。Java本身是将其NIO解释为New IO的,我个人猜测也是为了避免这种混淆。
2021-05-04226 - Snway如何理解网关具有唯一性,服务网关同样可以部署集群吧,应该不会有单点问题
作者回复: 可以部署集群,但集群外部还是需要有一个“代表”,它可以是另一个gateway或者load balancer。
2021-02-04510 - zhanyd同步,异步,是指两个线程之间的关系,如果线程A对线程B发起请求,A要一直到等B的结果返回了才能继续往下运行,A和B就是同步关系。 如果线程A对线程B发起请求之后,不在原地等结果,直接干别的事情去了,等B有结果了再通知A,A和B的关系就是异步关系。 阻塞,非阻塞,是指单个线程的状态,如果线程A对线程B发起请求,A线程要等B线程的结果,A在等的过程中不干别的,线程挂起,休眠,就是阻塞状态;如果A线程不用等B的结果,直接干别的去了,那么就是非阻塞状态。2021-02-04135
- walle斌关于BFF。。我想说一下。。我公司就有前端的BFF团队。。咋说来。。做的好还行。。不行的那真是浪费时间。。各种浪费时间。。多了一层以后,人员沟通,技术问题再次解释一遍。。这都啥啊2021-09-296
- 范飞扬"那么到了 Zuul 的 2.0 版本,最大的改进就是基于 Netty Server 实现了异步 I/O 模型来处理请求,大幅度减少了线程数,获得了更高的性能和更低的延迟。" 请问老师和同学,不是说Linux没有异步IO吗?这里为什么说实现了异步IO?2022-11-05归属地:上海2
- Helios转发的设备不是一层代理么?为何把转发和代理还分开2021-02-132
- Jxin感觉信号驱动io应该放在多路复用前面。可以算是非阻塞io的升级版。而多路复用是更好的方案。2021-02-112
- tt原始时代的声音:在微服务和独立的网关出现之前,也就是我们的现在,在用的有综合前置机、apache做反向代理、硬负载均衡器,后面是很多单体服务,这些服务上有着很多冒烟的烟囱2021-02-032
- neohope在API网关之前,会把移动APP的后端服务单独独立出来,APP访问APP后端服务,APP后端服务访问Web后端服务,相当于做了一个完全定制化的API网关。 当时也尝试过直接用Nginx来完成,但当时也不知道OpenResty这类扩展,复杂些的功能没能实现,没能实际应用。 后面从Zuul开始就不造轮子了。2021-04-061
- 海风极客微服务中网关可以被视为服务的唯一出入口,要尽可能的保持简单和抽象,在其前面也最好部署负载均衡,其本身也应该具有负载均衡的功能,网关提供的路由功能就好比路由器对TCP报文的三层转发功能,使其进行正确的请求和响应。2023-11-22归属地:北京