31 | 数据流:通过iam-authz-server设计,看数据流服务的设计
该思维导图由 AI 生成,仅供参考
iam-authz-server 的功能介绍
- 深入了解
- 翻译
- 解释
- 总结
IAM数据流服务iam-authz-server通过提供`/v1/authz` RESTful API接口完成资源授权,并采用了大量的缓存技术来保证API接口的性能。文章详细介绍了iam-authz-server的启动流程、RESTful API请求处理流程和代码架构,以及密钥和策略的缓存实现。另外,文章还介绍了iam-authz-server的授权日志缓存机制,通过将授权日志写入缓冲channel,再由多个worker进行批量投递,以降低日志转存的时延。整体而言,本文内容详实,涵盖了IAM数据流服务iam-authz-server的设计、实现和关键代码分析,对于想要深入了解该服务的读者来说,是一篇非常有价值的文章。 文章内容涵盖了IAM数据流服务iam-authz-server的设计和实现,包括RESTful API接口、启动流程、请求处理流程、代码架构、密钥和策略的缓存实现以及授权日志缓存机制。通过缓存技术和授权日志缓存机制,iam-authz-server提高了API接口的性能,保证了数据一致性。读者可以从中了解到IAM数据流服务iam-authz-server的核心功能和关键技术特点,对于想要深入了解该服务的读者来说,是一篇非常有价值的文章。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(17)
- 最新
- 精选
- daz2yy老师,请问下,数据流和控制流这个怎么来理解呢,是从什么角度来定义的服务类型的?
作者回复: 数据流承载核心业务功能。 控制流一般用来创建一些资源,供数据流使用。这些,资源一旦建成,控制流可以一直使用。所以这时候控制流挂了,资源还是存在的,数据流仍然能够正常运转,也就是不影响业务功能。
2021-08-068 - hello老师,咨询您一个问题,使用GiN做WEB服务,微服务间通过gRPC通讯,如何选择配置注册中心,老师能否推荐几款比较流行开源的配置注册中心。
作者回复: 网关可以使用,tyk:https://github.com/TykTechnologies/tyk。 tyk后端开源,前端闭源。你可以自己开发一套前端。 配置中心可以试试:https://github.com/apache/servicecomb-service-center servicecomb-service-center是华为开源的注册中心,基于etcd封装。该注册中心可以无缝对接华为开源的微服务框架go-chassis
2021-08-0525 - Jarvis更新缓存时每次都 List 全部密钥/策略,数据量会不会太大了? Pub 时带上变化的策略/密钥 id, 只更新该 id 的内容是不是好一点?
作者回复: 是的,最好是增量拉取
2022-06-28归属地:广东3 - 静心本地channel缓冲和redis缓存对于性能的提高效果会很明显,设计的比较好。但同时,这样的设计会导致多存储数据同步的问题。比如,如果服务突然宕机,本地缓冲中的数据就可能丢失。不知道老师有没有什么好的办法解决?
作者回复: 这个地方最好的办法,就是做好优雅关停。 关停时获取终止信号,等待任务完成,并之后后续的清理,最后结束进程。 服务器宕机,任何高可用系统,都会存在多多少少的数据丢失。能做的是设计好时间窗口,确保服务器压力、性能都在可接受范围的情况下,及时提交、保存数据。
2021-10-293 - yandongxiao总结: iam-authz-server 在数据流上工作,负责授权工作,对性能要求高。 authz也需要对请求进行认证工作,authz 的认证采用 cache 方式实现 jwt token 认证,即密钥已经缓存在内存中,通过同样的加密方案,确认token的合法性。 authz的认证工作主要交给了 landon 来完成。iam-apiserver 存储的授权策略符合landon的语法规范,iam-authz-server 接收的授权请求,也符合landon的语法规范。landon 通过接口的方式,暴露了manager、auditLogger、metric 等相关的接口。比如,我们需要为landon提供用户的 policy 列表,是否允许授权,由 landon 来做决策。 缓存设计
作者回复: 6666
2021-12-042 - dll每次从apiserver触发reload() 都是全量的拉去 s.cli.GetPolicies(),这样应该可能会产生性能问题吧 假如当Policies数量特别大的时候
作者回复: 是的,最好的方式是增量拉取,老哥有兴趣可以实现下,提个PR
2022-10-17归属地:广东1 - 陈先生如果iam-authz-server挂了,是不是有audit log丢失的可能性?
作者回复: 服务挂了,audit log是有丢失的可能,这个无法避免。只能尽可能规避
2021-10-071 - helloworld在实际应用中,请求/v1/authz接口的参数体是网关根据用户实际请求的某个具体业务的api的参数、请求方法、path等,并根据提前定制的规则自动构造出来的吧,这样理解对吗
作者回复: 是请求者自己指定的
2021-08-161 - 岑惠韬老师请问Load的Start函数第二个协程的作用是什么呢?是主要起解耦作用吗?假如让PubSubLoop直接操作requeue切片,让reloadLoop每秒清空切片,仅考虑当前用法的话是不是也是能跑的?还是会有什么逻辑上的问题?
作者回复: 1. 从 reloadQueue中读取回调,但是iam-authz-server中,其实没有用到回调功能; 2. 我觉得直接操作requeue没有什么问题
2022-11-06归属地:广东 - ꧁子华宝宝萌萌哒꧂preparedAuthzServer.Run 为啥需要一个 stopChan 来阻塞不让退出? 按我的理解这个 stopChan 没有写,这个进程永远就退不了, 直接 return s.genericAPIServer.Run() 不可以吗?
作者回复: preparedAuthzServer.Run 没有stopChan
2022-06-27归属地:广东