rabbitmq,nginx,apache中的多租户技术运用浅析

/ 默认分类 / 0 条评论 / 1086浏览

前言

multi-tenancy technology(多租户技术),使在一个服务实例中可以创造不同的数据隔离环境出来,在多用户共用的系统中,可以保证每个用户之间的数据隔离性; 即以单一的服务实例,为多个客户端提供服务,并且不同的客户端可以进行服务的定制化,不同的定制服务互相隔离,这就需要在设计上对它的数据和配置进行虚拟分区,从而使系统的每个租户或称组织都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。

多租户软件隔离使用介绍

比较有名的比如Apache http服务器,Nginx,Rabbitmq等

apache是第一个提出虚拟主机概念的软件,其使用服务端配置文件的方式进行数据隔离,主要可以使用visualhost基于ip地址配置,或者使用服务名来配置不同的环境;

nginx中没有虚拟主机的概念,但是提供了server模块,也可以实现多租户模式

http {
  index index.html;

  server {
    server_name www.domain1.com;
    access_log logs/domain1.access.log main;

    root /var/www/domain1.com/htdocs;
  }

  server {
    server_name www.domain2.com;
    access_log  logs/domain2.access.log main;

    root /var/www/domain2.com/htdocs;
  }
}

上面两种方式有一个特点,都是在服务端进行配置修改来达到多租户隔离的效果,rabbitmq也属于多租户架构的软件系统,但是rabbitmq和前两个有所不同,虚拟主机的设置不是在服务端配置,而是服务端提供了http api,用户可以调用api来创建和设置不同的虚拟主机.

PUT /api/vhosts/{name}

也可以使用rabbitmq中bin中提供的rabbitmqctl来执行添加虚拟主机的功能,rabbitmqctl是rabbitmq提供的客户端工具,,可以获取当前所有的connection,获取所有channel,添加vhost,添加user等等;

当然这些都是rabbitmq提供的开放api;

rabbitmq中的visualhost官方文档
nginx中的server官方文档
apache中的visualhost官方文档