Hacker News new | ask | show | jobs
by nemothekid 3073 days ago
> Do you know that Go's GC is way less advanced than Java GC as of today? This is admitted by Google's Go team lead.

I won't comment on the other points - but I managed a medium sized Cassandra cluster for a couple of years, and the GC point is valid. It has nothing to do with Java's GC being more advanced. It's easier to bypass the Go GC with stack allocations (not possible in Java), and many of Cassandra's processes (compaction, repair) end up being very GC heavy. GC tuning ends up being a function of your workload and if you ignore it, background processes like repair can adversely affect projection nodes, or throw nodes in a loop. - and adversely giving the node more memory can make things worse. Cassandra has left a bad taste in my mouth for Java-based databases.

2 comments

Yeah I can show you one of the systems:

GC of death:

https://imgur.com/a/6RAX7

Write latency:

https://imgur.com/a/Us0MO

Typical Cassandra user has these sort of problems. I have one client where they identified the issue (data modeling) and fixed it by redesigning their tables before I got there. Some of the Cassandra users are not even aware. The company where the pictures are from engaged me because the system did not meet with business requirements anymore. Could not insert data into the cluster, their ETL jobs were running for 20 hours and if one failed they did not have data for their business. We could speed it up to run it for 4 hours without remodeling the data. With remodeling it Cassandra was not the bottleneck anymore.

These graphs are meaningless in a vacuum, you don't know how would behave alternative Go based solution on similar hardware under the similar load.
Sure, this is why there is a production system surrounding them. I am not really interested in theoretical possibilities just observing reality here.
What I am saying is that you are observing one side of reality. It is very possible that even with this kind of graphs, Cassandra is capable to handle much larger traffic then custom Go solution.

Cassandra is usually competitive in open benchmarks.

> stack allocations (not possible in Java)

JVM does stack allocation whenever it is possible, you can learn about this by googling "escape analysis".