2.4. 数据隔离

简介: RabbitMQ支持多租户,通过虚拟主机实现项目间隔离。为黑马商城创建hmall用户及/hmall虚拟主机,实现用户权限与数据隔离。配置生产者和消费者连接新虚拟主机,完成消息收发测试,确保各项目独立运行互不干扰。

2.4.1 用户管理
RabbitMQ支持多租户,多个系统可以同时使用一个RabbitMQ。
什么是多租户:一种软件架构设计模式,允许多个租户(用户、组织或客户)共享同一套应用程序或系统实例,同时确保每个租户的数据和配置是隔离的。比如一张表增加一个companyId,那么就是不同的公司共用一套代码+数据库,但是又做了数据隔离
公司内的多个不同项目同时使用。这个时候为了避免互相干扰, 我们会利用虚拟主机进行隔离,将不同项目隶属不同的虚拟主机。一般会做两件事情:
● 给每个项目创建独立的运维账号,将管理权限分离。
● 给每个项目创建不同的虚拟主机,将每个项目的数据隔离。
下边学习用户管理和虚拟主机的配置。
点击Admin选项卡,首先会看到RabbitMQ控制台的用户管理界面:

这里的用户都是RabbitMQ的管理或运维人员。目前只有安装RabbitMQ时添加的itheima这个用户。仔细观察用户表格中的字段,如下:
● Name:itheima,也就是用户名
● Tags:administrator,说明itheima用户是超级管理员,拥有所有权限
● Can access virtual host: /,可以访问的virtual host,这里的/是默认的virtual host
下边我们给黑马商城创建一个新的用户,命名为hmall,密码123,注意选择adminstrator

你会发现此时hmall用户没有任何virtual host的访问权限:

接下来我们来给hmall用户授权。
2.4.2 虚拟主机
下边配置虚拟主机。
我们先退出登录:

切换到刚刚创建的hmall用户登录,然后点击Virtual Hosts菜单,进入virtual host管理页:

可以看到目前只有一个默认的virtual host,名字为 /。
我们可以给黑马商城项目创建一个单独的virtual host,而不是使用默认的/。

创建完成后如图:

由于我们是登录hmall账户后创建的virtual host,因此回到users菜单,你会发现当前用户已经具备了对/hmall这个virtual host的访问权限了:

此时,点击页面右上角的virtual host下拉菜单,切换virtual host为 /hmall:

然后再次查看queues选项卡,会发现之前的队列已经看不到了:

这就是基于virtual host 的隔离效果。
2.4.3 测试
下边我们用hmall用户及新创建虚拟主机。
修改publisher及consumer的application.yml
spring:
rabbitmq:
host: 192.168.101.68 # 你的虚拟机IP
port: 5672 # 端口
virtual-host: /hmall # 虚拟主机
username: hmall # 用户名
password: 123 # 密码
重新进行收发消息的测试,发现消息发发放到了virtual-host: /hmall 下的队列,如下图:

再启动consumer服务接收消息。

相关文章
|
2月前
|
网络协议 算法 前端开发
07 | 架构设计:设计一个灵活的 RPC 框架
本文回顾了RPC通信原理,详解其核心架构设计,包括传输、协议、服务发现与治理等模块,并阐述如何通过分层与插件化架构提升可扩展性,实现高性能、易维护的RPC框架。
|
2月前
|
存储 NoSQL Linux
容器化部署引擎Docker
本节介绍Docker技术,解决微服务部署中环境不一致、依赖冲突等问题。通过镜像打包应用及依赖,容器隔离运行,实现跨环境无缝迁移。对比虚拟机,Docker更轻量、高效。涵盖镜像、容器、仓库概念,架构原理及安装配置方法,助力快速交付与部署。
|
2月前
|
存储 JSON 编解码
06 | RPC 实战:剖析 gRPC 源码,动手实现一个完整的 RPC
本讲通过剖析gRPC源码,实战实现RPC框架。以HelloWorld为例,讲解如何通过Protocol Buffer定义接口、生成客户端与服务端代码,深入分析gRPC基于HTTP/2的请求发送与接收原理,揭示序列化、Frame构造、Netty传输等核心机制,帮助读者将理论知识落地为代码实践。(238字)
|
2月前
|
消息中间件 数据库 UED
1.1 同步调用与异步调用
本文介绍了微服务间的同步与异步调用。同步调用需等待结果返回,顺序执行,适合实时性高、操作简单的场景;异步调用发出请求后可继续执行其他任务,提升效率与资源利用率,适用于耗时操作。通过支付、点餐、挂号等生活实例对比,阐述了二者特点、适用场景及优缺点。
|
2月前
|
消息中间件 Java 数据安全/隐私保护
RabbitMQ集群部署
本文介绍RabbitMQ集群部署及高可用方案,涵盖普通集群搭建、镜像模式配置与仲裁队列使用。通过Docker部署三节点集群,配置Erlang Cookie与rabbitmq.conf实现节点通信;利用镜像模式实现数据冗余,支持主从切换;引入3.8版本后的仲裁队列,简化高可用配置,提升系统容错能力。
|
2月前
|
存储 NoSQL 定位技术
MongoDB的特点
MongoDB是一款高性能、高可用、高扩展的NoSQL数据库,支持嵌入式数据模型减少I/O,多存储引擎适应多样场景。提供丰富查询语言,支持索引、分片、副本集,满足海量数据存储与水平扩展需求,适用于O2O、实时分析等应用。
|
2月前
|
存储 缓存 Java
自定义注解
本文介绍基于Spring AOP实现自定义注解的完整流程,涵盖注解定义、@Target与@Retention等元注解说明,并结合Controller演示日志、权限控制等场景。通过AOP与过滤器实现登录验证,展示@Login注解在实际项目中的应用,适用于日志、鉴权、缓存等场景。
|
2月前
|
自然语言处理 算法
分词器详解
分词器将文本转为模型可处理的数字序列,主流算法包括BPE、WordPiece和SentencePiece。BPE高效但中文支持弱;WordPiece适合英文,用于BERT;SentencePiece语言无关,尤擅中文。实战中需结合语种与需求选择,并合理配置参数与特殊标记。
|
2月前
|
机器学习/深度学习
位置编码详解
位置编码为Transformer提供序列位置信息,弥补注意力机制无位置感知的缺陷。主要分绝对(如可学习、Sinusoidal)和相对(如RoPE、ALiBi)两类。RoPE通过旋转矩阵支持长序列,ALiBi以线性偏置增强外推能力。不同方法在长度外推、效率上各有优劣,广泛应用于LLaMA、BLOOM等大模型,是面试考察重点。
|
2月前
|
C++
归一化技术
归一化技术对大模型训练至关重要,如LayerNorm稳定训练、RMSNorm提升效率。Pre-norm结构更受现代模型青睐,助力收敛与性能优化。