Skip to content

Commit 843c995

Browse files
authored
Merge pull request #98 from zigbee-alliance/load-test-design-update
Docs update
2 parents a8919cc + e6c4526 commit 843c995

5 files changed

+46
-20
lines changed

README.md

+11-4
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ In order to send write transactions to the ledger you need:
5151
- Sign every transaction by the private key.
5252
- PoA (proof of authority) approach is used for adding new validator nodes to the network
5353
(see [Add New Node Use Case](docs/use_cases/use_cases_add_validator_node.png)) and
54-
[Running Node Instructions](docs/running-node.md).
54+
[Running Node Instructions](docs/running-validator-node.md).
5555

5656

5757

@@ -126,15 +126,20 @@ One can either deploy its own network of validator nodes or join one of the pers
126126
- If you want to deploy your own network for debug purposes,
127127
you can use the provided Ansible Playbook: [ansible/readme.md](deployment/ansible/README.md).
128128
- If you want to join an existing network (either a custom or persistent) as a validator node,
129-
please follow the [Running a Validator Node](docs/running-node.md) instructions.
129+
please follow the [Running a Validator Node](docs/running-validator-node.md) instructions.
130130
- If you want to deploy your own persistent network,
131131
you will need to create a genesis node and a genesis file first as described in [Running a Genesis Validator Node](docs/running-genesis-node.md).
132-
After this more nodes can be added by following the [Running a Validator Node](docs/running-node.md) instructions.
132+
After this more nodes can be added by following the [Running a Validator Node](docs/running-validator-node.md) instructions.
133133
Please note, that [Running a Genesis Validator Node](docs/running-genesis-node.md) describes
134134
the case when the genesis block consist of a single node only. This is done just for simplicity,
135135
and nothing prevents you from adding more nodes to the genesis file by adapting the instructions accordingly.
136+
- If you want to join an existing network as an observer node,
137+
please follow the [Running an Observer Node](docs/running-observer-node.md) instructions.
138+
139+
A recommended way for deployment and client connection: [diagram](docs/deployment.png)
136140

137141
## Useful Links
142+
- [Quick Start](docs/quickStartGuide.adoc)
138143
- [Use Case Diagrams](docs/use_cases)
139144
- [PKI](docs/use_cases/use_cases_pki.png)
140145
- [Device on-ledger certification](docs/use_cases/use_cases_device_on_ledger_certification.png)
@@ -148,7 +153,9 @@ and nothing prevents you from adding more nodes to the genesis file by adapting
148153
- [CLI Help](docs/cli-help.md)
149154
- [Deployment](deployment/ansible/README.md)
150155
- [Running a Genesis Validator Node](docs/running-genesis-node.md)
151-
- [Running a Validator Node](docs/running-node.md)
156+
- [Running a Validator Node](docs/running-validator-node.md)
157+
- [Running an Observer Node](docs/running-observer-node.md)
158+
- [Deployment Pattern](docs/deployment.png)
152159
- [Tendermint](https://tendermint.com/)
153160
- [Cosmos SDK](https://cosmos.network/sdk)
154161

docs/deployment.png

65.1 KB
Loading

docs/design/benchmarking.md

+25-9
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
# Benchmarking
22

3+
## Test Phases
4+
5+
1. Phase 1 (MVP)
6+
- the main goal is to understand general limitations and get metrics for the core protocol
7+
- just one txn type
8+
- dedicated, but simple environment (simple deployment of validators similar to the current Test Net; no observers, no sentry nodes, no mediators)
9+
10+
2. Phase 2
11+
- the main goal is to test DCL specific (DCL business logic and txn types; deployment specific)
12+
- more txn types
13+
- more workload scenarios
14+
- simulate deployment as close to production as possible
15+
16+
317
## Client Side Metrics
418

519
* `response time` (percentiles): the time between client's initial request and the last byte of a validator response
620
* `requests per second (RPS)`: number of requests per second
7-
* `transactions per second (TPS)`: number of write requests (txns) per second
8-
* **Note** to measure that on client side write requests should use to `broadcast_tx_commit` requetss
21+
* `transactions per second (TPS)`: number of write requests (txns) per second
22+
* **Note** to measure that on client side write requests should use to `broadcast_tx_commit` requetss
923
* `number of clients`: number of concurrent clients that ledger serves
1024
* (optional) `throughtput` (in/out): number of KB per second. Marked as optional since we don't expect much in/out data due to relatively small txns payloads.
1125

@@ -44,21 +58,23 @@ The following [metrics](https://docs.cosmos.network/master/core/telemetry.html#s
4458

4559
Options:
4660

47-
* dedicated, close to production as much as possible (the best option)
48-
* local in-docker (for PoC / debugging only)
49-
* TestNet, not good: not a clean environment, would be spammed and might be broken by the load testing
61+
* dedicated, close to production as much as possible (the best option)
62+
* dedicated, simple deployment of validators similar to the current Test Net (no observers, no sentry nodes, no mediators);
63+
good for initial test phase
64+
* local in-docker (for PoC / debugging only)
65+
* TestNet, not good: not a clean environment, would be spammed and might be broken by the load testing
5066

5167
Notes:
5268

5369
* For the moment it's not clear enough what production setup will look like, in particular:
54-
* number of vendor companies (number of validators)
70+
* number of validators
5571
* type of external endpoints, options are [Cosmos SDK / Tendermint endpoints](https://docs.cosmos.network/master/core/grpc_rest.html)
5672
* type and number of proxies for validator-validator and client-validator connections
5773

58-
Current assumptions:
74+
Current assumptions for production:
5975

60-
* multiple companies (vendors) will manage one/multiple validators
61-
* while some common requirements and recommendations would be provided each vendor will deploy the infrastructure independently with some freedom regarding internal architecture
76+
* multiple companies will manage one/multiple validators
77+
* while some common requirements and recommendations would be provided each company will deploy the infrastructure independently with some freedom regarding internal architecture
6278
* there would be a set of external (for clients) and internal (for validators to support txn flows) endpoints
6379
* most likely observer nodes along with REST http servers with clients authentication would be in front of the client endpoints
6480

docs/running-observer-node.md

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Running a Observer Node
1+
## Running an Observer Node
22

33
This document describes in details how to run a observer node, and add it to the existing network.
44

@@ -79,15 +79,18 @@ and contains the genesis and persistent_peers files.
7979

8080

8181
4. Start the local observer node
82-
* Init Node: `dcld start`.
82+
* Enable the service: `sudo systemctl enable dcld`
83+
* Start node: `sudo systemctl start dcld`
84+
* For testing purpose the node can be started in CLI mode: `dcld start` (instead of two previous `systemctl` commands).
85+
Service mode is recommended for demo and production environment.
86+
8387
You should see it trying to get all the blocks from the testnet. (p.s. It can take upto 12+ hrs for all the transactions to be downloaded depending on network speed)
8488

8589

86-
5. Check the observer node is running and getting all the transcations:
90+
5. Check the observer node is running and getting all the transactions:
8791

88-
* Get the node status: `dclcli status --node localhost:26657`.
89-
90-
Make sure that `result.sync_info.latest_block_height` is increasing over the time (once in about 5 sec). When you see the `catching_up` as `true` that signifies that the node is still downloading all the transactions. Once it has fully synced this will value will turn to `false`
92+
* Get the node status: `dclcli status --node localhost:26657`.
93+
* Make sure that `result.sync_info.latest_block_height` is increasing over the time (once in about 5 sec). When you see the `catching_up` as `true` that signifies that the node is still downloading all the transactions. Once it has fully synced this will value will turn to `false`
9194
Expected output format:
9295
```json
9396
{
@@ -126,4 +129,4 @@ and contains the genesis and persistent_peers files.
126129
}
127130
```
128131

129-
6. Congrats! You are an now running a observer node.
132+
6. Congrats! You are now running an observer node.
File renamed without changes.

0 commit comments

Comments
 (0)