mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
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>
23 lines
772 B
Plaintext
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}}}
|