-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO
52 lines (34 loc) · 2.11 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Must
Update benchmark to use separate conns per goroutine, see echo benchmark
create a simple tcp echo server to measure baseline for publish bench
setup consistent benchmarking https://easyperf.net/blog/2019/08/02/Perf-measurement-environment-on-Linux#1-disable-turboboost
add a unit test wtih small chance of message failure (value of which can be set via private field)
to verify that the right message gets nacked
add CPU time to each bench? ns/op might stay the same, but on CPU time might drastically go down between changes
bench idle publisher time
bench fully idle time
baseline for all benchmarks - results vary greatly based on the state of the machine, normalize results to some througput, eg mem speed
maybe it should be CPUtime * frequency?
move tests to docker:
test when pub or sub went away (no close) - verify recent changes to pub & sub timeouts (last 2 commits)
add a health check to ensure that at least one test ran
Add latency test to verify write/read decoupling in publisher: write shouldnt take ~= latency
setup benchmark, start with kafka, use toxiproxy to simulate latency across brokers
test that broker.log is appended, not replaced
publisher test fails if we dont listen for ack in test
test publish failure is correctly communicated to publisher
batching in publish and subscribe
Multi-topic support per TCP conn, provide bench to demonstarte difference
Multiple broker support with all ack
clean up producer.go or setup better benchmark:
https://docs.confluent.io/kafka-clients/go/current/overview.html#go-example-code
move core copying to eBPF?
## Nice to have
investigate results of: `go build -gcflags='-m' . 2>&1`
too many duplicated tests: client/bench/test - unify or keep in sync
speed up docker compose build - not enough caching (go download and build steps)
Publisher and Subscriber should implement Writer and Reader interface respectively
## Future
pick features to support from here: https://medium.com/swlh/why-kafka-is-so-fast-bde0d987cd03
read system design articles on kafka/queues for:
figure out deployment - image for brokers, how they boot, recover; how subs and pubs discover kafka