2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00
ovs/ovsdb/_server.ovsschema
Ilya Maximets 026c77c58d ovsdb: New ovsdb 'relay' service model.
New database service model 'relay' that is needed to scale out
read-mostly database access, e.g. ovn-controller connections to
OVN_Southbound.

In this service model ovsdb-server connects to existing OVSDB
server and maintains in-memory copy of the database.  It serves
read-only transactions and monitor requests by its own, but
forwards write transactions to the relay source.

Key differences from the active-backup replication:
- support for "write" transactions (next commit).
- no on-disk storage. (probably, faster operation)
- support for multiple remotes (connect to the clustered db).
- doesn't try to keep connection as long as possible, but
  faster reconnects to other remotes to avoid missing updates.
- No need to know the complete database schema beforehand,
  only the schema name.
- can be used along with other standalone and clustered databases
  by the same ovsdb-server process. (doesn't turn the whole
  jsonrpc server to read-only mode)
- supports modern version of monitors (monitor_cond_since),
  because based on ovsdb-cs.
- could be chained, i.e. multiple relays could be connected
  one to another in a row or in a tree-like form.
- doesn't increase availability.
- cannot be converted to other service models or become a main
  active server.

Some performance test results can be found here:
  https://mail.openvswitch.org/pipermail/ovs-dev/2021-July/385825.html

Acked-by: Mark D. Gray <mark.d.gray@redhat.com>
Acked-by: Dumitru Ceara <dceara@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
2021-07-15 22:38:03 +02:00

23 lines
772 B
Plaintext

{"name": "_Server",
"version": "1.2.0",
"cksum": "3009684573 744",
"tables": {
"Database": {
"columns": {
"name": {"type": "string"},
"model": {
"type": {"key": {"type": "string",
"enum": ["set",
["standalone", "clustered", "relay"]]}}},
"connected": {"type": "boolean"},
"leader": {"type": "boolean"},
"schema": {
"type": {"key": {"type": "string"}, "min": 0, "max": 1}},
"cid": {
"type": {"key": {"type": "uuid"}, "min": 0, "max": 1}},
"sid": {
"type": {"key": {"type": "uuid"}, "min": 0, "max": 1}},
"index": {
"type": {"key": {"type": "integer"}, "min": 0, "max": 1}}},
"isRoot": true}}}