设计具有规模授权的独立授权服务

Design independent auth service with authorization for scale

我是系统设计和学习基本系统设计概念的新手,但最近面试官问了我一个问题。

“设计具有规模授权的独立授权服务。假设它将同时用于 100 万用户。”

那么 scale/architect 微服务如何同时处理 100 万用户的授权和身份验证?

如果以系统设计的初学者(像我)可以理解的方式举例说明,那就太好了。

谢谢。

注意:我知道如何编写微服务架构,但未能理解如何设计可同时扩展到 100 万用户的微服务架构。

这取决于系统 design/architecture 和使用的组件/软件层。基于用例 scenario/architecture,可以部署通过添加实例进行水平扩展或通过添加 RAM 进行垂直扩展等。一般情况下,对于大/高流量的系统,优先考虑横向扩展。

执行少量分析/性能测试,通过收集相关数据/症状以从现有系统进行分析来决定方法。根据结果​​确定当前系统每秒可以处理的最大请求数,根据它,您可能需要增加 system/server 的 CPU 核心数来处理如此多的并发请求。

根据您的系统架构,其中一种方法可以考虑在系统的入口点安装负载均衡器,该负载均衡器将以循环方式将请求分派给其他服务器/微服务或相应的资源池特定于应用程序的服务器/特定于位置的服务器。通过这种方式,它减少了系统压力并有助于扩展应用程序响应时间。

您可以转向基于集群的架构来处理许多并发会话,在这种架构中您可以拥有一个编排器,该编排器将有助于根据流量的激增或资源利用率动态扩展或缩减为微服务配置的副本。

典型的解决方案可以基于 API 基于网关的部署,因为它通过处理从外部实体/调用者到微服务的身份验证和授权来带来安全性。在这里,对于外部请求,API 网关将进行负载平衡、隐藏微服务、负责授权并随后执行身份验证并将请求路由到相应的微服务。

为了近乎完美的设计,您可能需要使用所选方法对软件和硬件组件进行性能测试/负载测试/分析,并检查是否满足各种系统要求/性能指标并做出相应决定。