TiKV Watcher is the TiKV watcher for Casbin. With this library, Casbin can synchronize the policy with the TiKV database in multiple enforcer instances.
Note: Considering that TiKV doesn't have watch mechanism like etcd or channel like Redis, this ugly implementation uses polling to achieve monitoring a certain key, which may cause some performance trouble
go get github.com/casbin/tikv-watcher
start the TiKV service before run this example:
package main import ( "fmt" "time" watcher "github.com/casbin/tikv-watcher" casbin "github.com/casbin/casbin/v2" ) func main() { e, _ := casbin.NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") w, err := watcher.NewWatcher( "testkey", 100*time.Millisecond, "127.0.0.1:2379", ) if err != nil { panic(err) return } e.SetWatcher(w) w.SetUpdateCallback( func(s string) { fmt.Println("===================get" + s) }, ) e.SavePolicy() time.Sleep(10 * time.Second) }
This project is under Apache 2.0 License. See the LICENSE file for the full license text.