-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
#593) * gist of the idea of a sticky_random balancer * make sticky_random actually work * include the zone locality in the address attributes Make it available to the picker layer along with the pool type. Also rework how the locality is computed to do it as part of building the target host rather than deferring the comparisons to the sorter. * include IsLocal in debug output * add support for local zone affinity to sticky_random Using the zone local attribute inhjected by discovery (if it exists), update sticky_random so that it biases to only use the local zone connections if there are any available, otherwise fall back to remote. * add num_backup_conns option to force discovery of non-zone-local vtgates
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
package main | ||
|
||
import ( | ||
"flag" | ||
"fmt" | ||
"math/rand" | ||
"sort" | ||
"time" | ||
|
||
"github.com/guptarohit/asciigraph" | ||
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Region Sharding example using etcd on ubuntu-22.04
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Local example using consul on ubuntu-22.04
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Local example using etcd on ubuntu-22.04
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / End-to-End Test
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (12)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / End-to-End Test (Race)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 10
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 10
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (mysql80)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_schema_tracker)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (schemadiff_vrepl)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_cellalias)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vttablet_prscomplex)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_basic)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (ers_prs_newfeatures_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl_stress)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (15)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_vschema)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl_suite)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_transaction)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_unsharded)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_topo)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_schema)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtctlbackup_sharded_clustertest_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (xb_recovery)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl_stress_suite)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (tabletmanager_tablegc)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_across_db_versions)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (tabletmanager_throttler_topo)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_readafterwrite)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vstream)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (13)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Reparent Old VTTablet
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (topo_connection_cache)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtbackup)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_foreignkey_stress)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_migrate_vdiff2_convert_tz)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_tablet_healthcheck_cache)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_partial_movetables_and_materialize)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (backup_pitr)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (xb_backup)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (mysql_server_vault)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_ghost)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_vindex_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (backup_pitr_mysqlshell)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (22)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_gen4)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_general_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_v2)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_reservedconn)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_queries)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_partial_keyspace)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (backup_pitr_xtrabackup)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Reparent Old Vtctl
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (18)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_scheduler)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_topo_etcd)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (tabletmanager_consul)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_godriver)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Region Sharding example using etcd on ubuntu-22.04
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_foreign_key_stress)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / End-to-End Test
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_topo_consul)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Query Serving (Schema)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (21)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtorc)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (22)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_topo)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Local example using zk2 on ubuntu-22.04
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_concurrentdml)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 25
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_revert)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_concurrentdml)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Backups - E2E
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_foreignkey_stress)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_migrate_vdiff2_convert_tz)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / End-to-End Test (Race)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Unit Test (mysql80)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Backups - Manual
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Query Serving (Queries)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_topo_consul)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vstream)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Unit Test (Race)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_cellalias)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 10
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Docker Test Cluster 10
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl_stress_suite)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (xb_recovery)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_transaction)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_tablet_healthcheck_cache)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl_suite)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (mysql80)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_readafterwrite)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_reservedconn)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_vindex_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (topo_connection_cache)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (18)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vttablet_prscomplex)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_schema_tracker)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_unsharded)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_ghost)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_gen4)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_vschema)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (15)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_vrepl_stress)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (21)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtctlbackup_sharded_clustertest_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (13)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_scheduler)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Unit Test (Race)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_topo_etcd)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (tabletmanager_consul)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (backup_pitr_mysqlshell)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_partial_keyspace)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (backup_pitr_xtrabackup)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Backups - E2E
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtorc)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtbackup)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_v2)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Reparent Old Vtctl
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_schema)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (onlineddl_revert)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_queries)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (tabletmanager_tablegc)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_general_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (ers_prs_newfeatures_heavy)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_basic)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (12)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (xb_backup)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Backups - Manual
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (mysql_server_vault)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_partial_movetables_and_materialize)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vtgate_godriver)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (tabletmanager_throttler_topo)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_across_db_versions)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Query Serving (Queries)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (schemadiff_vrepl)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (backup_pitr)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run endtoend tests on Cluster (vreplication_foreign_key_stress)
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Run Upgrade Downgrade Test - Reparent Old VTTablet
Check failure on line 10 in go/vt/vtgateproxy/sim/vtgateproxysim.go GitHub Actions / Unit Test (mysql80)
|
||
) | ||
|
||
var ( | ||
numClients = flag.Int("c", 9761, "Number of clients") | ||
numVtgates = flag.Int("v", 1068, "Number of vtgates") | ||
numConnections = flag.Int("n", 4, "number of connections per client host") | ||
numZones = flag.Int("z", 4, "number of zones") | ||
) | ||
|
||
func main() { | ||
rnd := rand.New(rand.NewSource(time.Now().UnixNano())) | ||
|
||
flag.Parse() | ||
|
||
fmt.Printf("Simulating %d clients => %d vtgates with %d zones %d conns per client\n\n", | ||
*numClients, *numVtgates, *numZones, *numConnections) | ||
|
||
var clients []string | ||
for i := 0; i < *numClients; i++ { | ||
clients = append(clients, fmt.Sprintf("client-%03d", i)) | ||
} | ||
|
||
var vtgates []string | ||
for i := 0; i < *numVtgates; i++ { | ||
vtgates = append(vtgates, fmt.Sprintf("vtgate-%03d", i)) | ||
} | ||
|
||
// for now just consider 1/N of the s "local" | ||
localClients := clients[:*numClients / *numZones] | ||
localVtgates := vtgates[:*numVtgates / *numZones] | ||
|
||
conns := map[string][]string{} | ||
|
||
// Simulate "discovery" | ||
for _, client := range localClients { | ||
var clientConns []string | ||
|
||
for i := 0; i < *numConnections; i++ { | ||
vtgate := localVtgates[rnd.Intn(len(localVtgates))] | ||
clientConns = append(clientConns, vtgate) | ||
} | ||
|
||
conns[client] = clientConns | ||
} | ||
|
||
counts := map[string]int{} | ||
for _, conns := range conns { | ||
for _, vtgate := range conns { | ||
counts[vtgate]++ | ||
} | ||
} | ||
|
||
histogram := map[int]int{} | ||
max := 0 | ||
min := -1 | ||
for _, count := range counts { | ||
histogram[count]++ | ||
if count > max { | ||
max = count | ||
} | ||
if min == -1 || count < min { | ||
min = count | ||
} | ||
} | ||
|
||
fmt.Printf("Conns per vtgate\n%v\n\n", counts) | ||
fmt.Printf("Histogram of conn counts\n%v\n\n", histogram) | ||
|
||
plot := []float64{} | ||
for i := 0; i < len(localVtgates); i++ { | ||
plot = append(plot, float64(counts[localVtgates[i]])) | ||
} | ||
sort.Float64s(plot) | ||
graph := asciigraph.Plot(plot) | ||
fmt.Println("Number of conns per vtgate host") | ||
fmt.Println(graph) | ||
fmt.Println("") | ||
fmt.Println("") | ||
|
||
fmt.Printf("Conn count per vtgate distribution [%d - %d] (%d clients => %d vtgates with %d zones %d conns\n\n", | ||
min, max, *numClients, *numVtgates, *numZones, *numConnections) | ||
plot = []float64{} | ||
for i := min; i < max; i++ { | ||
plot = append(plot, float64(histogram[i])) | ||
} | ||
graph = asciigraph.Plot(plot) | ||
fmt.Println(graph) | ||
|
||
fmt.Printf("\nConn stats: min %d max %d spread %d spread/min %f spread/avg %f\n", | ||
min, max, max-min, float64(max-min)/float64(min), float64(max-min)/float64((max+min)/2)) | ||
} |