现在的位置: 首页 > 云计算 > 正文

面试题:如何设计一个微服务网关系统

2020年02月19日 云计算 ⁄ 共 830字 ⁄ 字号 评论关闭

  有一天隔壁组的小王灰头土脸的跑过来,问我说:“李哥,你会设计微服务网关系统吗?”。我一愣,小王怎么突然问这么抽象的问题,关键是我们最近也没有这样的需求。吃午饭的时候,在我旁敲侧击的追问下,小王招供了,原来小王偷偷跑去阿里面试了。技术一面挺顺利的,结果在技术二面的时候卡住了,面试官问了小王关于网关的问题。对话大致如下:

  面试官:“你们的微服务有统一的网关吗?”。

  小王:“有呀,我们使用了 Spring Cloud Zuul 作为网关。”。

  面试官:“那你知道它的具体实现原理吗?”。

  小王:“额,了解一些。它内部其实是一个 Servlet 拦截了所有请求,然后代理客户端请求,最后将结果返回给客户端。”

  面试官:“好的,那你知道它具体的架构设计吗?”。

  小王:“额,这个没有详细了解过。”。

  ......省略一些无关紧要的话题......

  面试官:“今天的面试就到此结束,有后续的结果的话我们会电话通知你,感谢你参加今天的面试。”

  小王左等右等,一个星期过来还没收到电话,这才意识到自己二面的网关设计题目没有回答好,最后忍不住让我求助。

  设计微服务网关系统

  其实这已经成为一种常态,工作三到五年的程序员面试的时候除了扎实的基本功之外,系统设计题目是在所难免的。我想这可能是大多数程序员需要了解的知识点,所以专门写了一篇关于微服务架构的网关的文章来和大家一起聊聊微服务网关设计这个话题。

  随着互联网技术的发展,微服务架构已经成为每个互联网公司的标配。伴随着服务粒度的细化,服务应用数量极速上涨。如何暴露服务来对外统一口径,如何做流量控制来保护服务,如何对所有请求进行安全校验是我们不得不考虑的一个重要问题。

  在单体应用时代,我们通常会写一个拦截器来完成这件事情,它会截获所有外部请求去校验请求的合法性,日志记录,流量控制等操作。但是在微服务时代,由于服务众多,我们不可能单独为每个服务做这样的事情,这既是设计的不合理同时会造成大量的重复工作。

抱歉!评论已关闭.