Перейти до основного контенту

Dispatchers

Диспетчери забезпечують можливість синхронізації інкрементних змін політики. Вони повинні базуватися на алгоритмах консистентності, таких як Raft, щоб забезпечити консистентність усіх екземплярів enforcer. За допомогою диспетчерів користувачі можуть легко створювати розподілені кластери.

Метод диспетчера поділяється на дві частини. Перша частина - це метод, поєднаний з Casbin. Ці методи слід викликати всередині Casbin. Користувачі можуть використовувати більш повний API, який надає сам Casbin.

Інша частина - це метод, визначений самим диспетчером, включаючи метод ініціалізації диспетчера, та різні функції, які надають різні алгоритми, такі як динамічне членство та зміни конфігурації.

примітка

Ми сподіваємося, що диспетчери забезпечать лише консистентність Casbin enforcer під час виконання. Отже, якщо політика не є консистентною під час ініціалізації, диспетчери працюватимуть неправильно. Користувачам потрібно забезпечити консистентність стану всіх екземплярів перед використанням диспетчерів.

Повний список диспетчерів Casbin наведено нижче. Будь-які сторонні внески щодо нового диспетчера вітаються. Будь ласка, повідомте нас, і ми додамо його до цього списку.

AdapterTypeAuthorDescription
Hashicorp Raft DispatcherRaftCasbinA dispatcher based on Hashicorp Raft
KDKYG/casbin-dispatcherRaft@KDKYGA dispatcher based on Hashicorp Raft

DistributedEnforcer

DistributedEnforcer обгортає SyncedEnforcer для диспетчера.

    e, _ := casbin.NewDistributedEnforcer("examples/basic_model.conf", "examples/basic_policy.csv")