5 Links — May 2019

Huỳnh Quang Thảo
Jun 3 · 3 min read

Every month, if not every day, I learn many things from my work or my colleagues. However, I often forget what I studied and I feel pity for myself because the impression I haven’t improved yet :D

So I decided that I will take (maybe) 5 interesting links I learned at the end of the month. One reference will include context, a short description and how to discover more about that subject. By looking back, I can remember some interesting kinds of stuff I watched/read before. I hope you also see this useful :D

This is my first post in this series.

  1. Distributed tracing with OpenCensus

Link: https://opencensus.io/

This month, I researched and implemented a distributed tracing system for our team’s microservices (over 20 services). This is a huge topic that I wish I would write a separate blog. But in my two cents, if you are doing microservice stuff, your infrastructure needs a distributed tracing system. OpenCensus is a good start.

Some other references you should follow: [1]Open Tracing, [2]How not measure latency.

2. Scaling Instagram Infrastructure Talk

Link: https://www.youtube.com/watch?v=hnpzNAPiC0E

A wonderful speech from Instagram engineers has shown the evolution of Instagram infrastructure for many years. Two main points from the speed are:

  • The systematic way Instagram engineers try to think and solve problems. Every time they see a problem, they use concrete data to understand and fix issues. In case the system doesn’t produce enough data points, they build tools and collect necessary metrics. This is a valuable approach rather than struggle to brute-force all solutions space/guessing/… you named it.
  • Defined 3 metrics of scaling: scale up, scale out, and scale dev team. With each metric, they present a solution to improve (with some quantitative data)

3. JVM Intrinsic function

Link: https://stackoverflow.com/questions/45912510/does-java-jit-cheat-when-running-jdk-code/45917687#45917687

While doing some Java kinds of stuff, I come to this link. It is amazing because working with Java for a long time; I don’t know some classes such as Big Integer has a different implementation that using Assembly behind for optimization.

Those functions have a special name intrinsic function. I admired the guy who asked this question because he tries to implement BigInteger on his own (by copy Java’s source code) but he cannot get the same performance. I didn’t think about this before.

4. Algorithms behind Modern Storage Systems

Link: https://www.infoq.com/presentations/storage-algorithms

An interesting talk with a very clear voice about modern storage system approaches including Log-Structured Merge-Tree, B-Tree, and Read-Update-Memory triangle.

5. Java on-heap vs off-heap

Link: https://stackoverflow.com/questions/56296509/why-is-cassandra-taking-this-much-memory-despite-xmx-heap-option

The new thing I learned from this question is the on-heap and off-heap concept in Java. This is not a real thing with me. I have written some similar ideas before (Android Heap Allocation zero-to-one). But I don’t have such a detail as this question’s answers provided. :D

Thanks.

90

90 claps
Huỳnh Quang Thảo

Written by

Always true 98%. Don’t care 3% others