pigx框架 源码_pigx微服务开发平台多租户系统研究

一、多租户基本简介

多租户是一种有选择性的数据隔离技术,可以保证系统共性的部分被共享,个性的部分被单独隔离。

多租户在数据存储上存在三种主要的方案,分别是:独立数据库 一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高。

共享数据库,独立Schema 即所有租户共享数据库,但一个租户一个Schema。

共享数据库,共享Schema 即租户共享同一个数据库、同一个Schema,但在表中通过TenantID区分租户的数据。

二、pigx多租户实现原理

pigx采用的是第3种方案,即共享数据库、共享schema,在表中通过tenant_id字段来实现多租户数据隔离

1、如何确定租户的请求

如果把后端抽象的看成服务的集合,那么这些服务可以分为多租户相关服务与共享租户相关服务

PIGX通过在前端请求时头部带上TANENT-ID报文,来确定租户的请求:

后端服务通过TenantContextHolderFilter过滤器将请求中的tenant\_id值拿到(如果为空则采用默认值为1的租户),并通过TenantContextHolder放入上下文中,请求下游的业务便可通过TenantContextHolder.getTenantId()获取当前租户

TenantContextHolderFilter部分源码:@Override

@SneakyThrows

public void doFilter(ServletRequest servletRequest, ServletResponse s


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部