对于这个问题,我将声明我正在使用 JWT 令牌。这些令牌的复杂性和处理效果非常好。有刷新令牌和访问令牌,对于这个问题,我们只需要担心如何以及何时发送检索新访问令牌的请求。
我的应用程序(NextJS)正在请求检索数据。端点需要身份验证令牌。该令牌及其到期日期存储在内存中(React 状态,我构建了一个自定义挂钩(useAuth),并且其状态在我的应用程序中全局可用。
当发出请求时,我们检查过期时间,如果令牌被视为无效(过期日期已过),我们会在继续获取请求之前请求一个新令牌。
如果在没有有效令牌的情况下尝试端点,我们会得到 false 的返回值。
当存在一个提取请求时,此过程效果很好,而我遇到的问题(因此这个问题)是我是否几乎同时发生多个提取请求。虽然它可以工作,但每个请求都希望检索一个新的访问令牌,而当一个访问令牌就足够时,我们最终会收到太多的访问令牌请求。
理想情况下,我希望第一个请求检索访问令牌(如果需要),而其他获取则等到新的访问令牌获得授予后再继续。
是时候看一些代码示例了
对于获取请求,我使用 useSWR ( https://swr.vercel.app/ )。这是一个例子。
const auth = useAuth();
// Example of ONE fetch (multiply this and use different endpoints, variable deconstruction etc)
const {
data: venue,
error: venueError,
mutate: venueMutate,
} = useSWR(auth?.isLoggedIn ? ['/api/venues/getVenue', venueUUID] : null, (url, venueUUID) =>
auth.fetchWithUUID(url, venueUUID)
);
Run Code Online (Sandbox Code Playgroud)
您无需关心 auth?.isLoggedIn 或 VenueUUID 等变量;知道这个(这些)请求正在发生。
该函数 - auth.fetchWithUUID() - 看起来像这样;
const fetchWithUUID = async (url, uuid, payload = {}) => {
if (!ref?.current?.accessToken?.expiry …Run Code Online (Sandbox Code Playgroud) 我计划使用glusterfs设置许多节点来创建分布式复制卷
我使用主(且唯一)分区上的目录在两个节点上创建了一个gluster复制卷.
gluster volume create vol_dist-replica replica 2 transport tcp 10.99.0.3:/glusterfs/dist-replica 10.99.0.4:/glusterfs/dist-replica
Run Code Online (Sandbox Code Playgroud)
这返回了以下警告
volume create: vol_dist-replica: failed: The brick 10.99.0.3:/glusterfs/dist-replica is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior.
所以我最后使用force了卷并创建了卷.然后我就能将gluster卷挂载到本地目录.
我的问题是,为什么不建议使用root分区?
我只能想到系统可能永远不会因为xyz原因而启动的明显原因,因此你会丢失一个节点的砖块内容.但是,如果你有足够的节点,你应该能够从中恢复吗?