点击空白处退出提示
作品详情
持。IAM是携程内部重要的权限管理基础设施,负责统筹管理所有内部系统的权限,是公司内部信息安全的重要组成部分。目前生产
环境已有数百个业务系统接入IAM,且能够高性能地稳定地对外提供鉴权和权限管理服务。此外IAM能快读对业务系统提供权限管理
方面的支持,避免了业务方在权限管理方面的重复建设,使业务方能够专注业务,提高开发效率。
主要技术点:
1.由于调用方会通过鉴权接口对整个系统中的大量实体的id产生强依赖(比如鉴权接口需要用户提供权限id才能鉴权),用数据库主键作
为业务上的唯一标识不合适,所以需要一个单独的自增序列号生成服务,方案是用一张单独的序列表维护不同实体的序列,借鉴了
CAS无锁并发的思想,利用MySQL行级锁实现并发安全的序列号自增。
2. 为了便于故障排查以及权限超配事故的事后追责,需要对用户的每个操作记录结构化操作日志且不影响性能,为此实现了一个操作
日志发送客户端,操作日志经暂存队列和发送队列发往kafka,由消费端写入ElasticSearch并按时间归档。
3. 鉴权接口要求较高的性能,传统的关系型数据库SQL复杂,需要关联多张大表,性能不佳,为了提升性能,使用Nebula图数据库
作为鉴权接口的查询介质,再配合缓存,将平均响应时间从数百毫秒级别优化到10ms以下(QPS > 1000)。Nebula图数据库仅用于查
询,由数据同步job从MySQL同步数据到Nebula。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论