The Apache SkyWalking team today announced the 8.4 release is generally available. This release fills the gap between all previous versions of SkyWalking and the logging domain area. The release also advances SkyWalking’s capabilities for infrastructure observability, starting with virtual machine monitoring.


SkyWalking has historically focused on the tracing and metrics fields of observability. As its features for tracing, metrics and service level monitoring have become more and more powerful and stable, the SkyWalking team has started to explore new scenarios covered by observability. Because service performance is reflected in the logs, and is highly impacted by the infrastructure on…

Apache SkyWalking: an APM (application performance monitor) system, especially designed for microservices, cloud native, and container-based (Docker, Kubernetes, Mesos) architectures.

Envoy Access Log Service: Access Log Service (ALS) is an Envoy extension that emits detailed access logs of all requests going through Envoy.


Apache SkyWalking has long supported observability in service mesh with Istio Mixer adapter. But since v1.5, Istio began to deprecate Mixer due to its poor performance in large scale clusters. Mixer’s functionalities have been moved into the Envoy proxies, and is supported only through the 1.7 Istio release. On the other hand, Sheng Wu and Lizan Zhou

Richard Feynman

In the previous post, we already have an EchoServer that is implemented with Java NIO; Let's check what we have and what we don't for now:

  1. All the IO operations (accept, read, write) are done when ready; there's no need to wait synchronously;
  2. No need to create thread for every single connection, and requests can be processed relatively in time;
  3. EchoServer can do other stuffs when there's no connection, no waste of resources;
  4. All operations are done in the same thread, including accept, read, write, process;

Things look good, but the problem is that “All operations are done in the…


This is a minimal yet complete and runnable project that gets you quickly start to build a project with GraphQL.

Available on GitHub:

How To Run

  • Clone the code to your local machine:
git clone
  • Run it:
mvn spring-boot:run
  • Play with it:

Open your browser and navigate to http://localhost:9092/gui

Create Authors

In the left top panel, type the following GraphQL:


mutation ($author: CreateAuthorInput) {
createAuthor (createAuthor: $author) {
id, name, bio

in the left bottom panel, click the QUERY VARIABLES to show the input panel for variables, and type the following variables:


"author": {…

Richard Feynman

In the previous post, we’ve implemented an Echo Server by the Blocking I/O (BIO) library and discussed some of the disadvantages of BIO:

  1. Server thread cannot do anything but wait when accepting new connections.
  2. Clients must wait in queue to be served, OR tens of thousands of threads must be created in high concurrency situation using one-client-one-thread model.
  3. Switching thread contexts may be expensive under high concurrency situation.

In this post, we will introduce the Non-blocking I/O library (NIO for short) and use it to rewrite our Echo Server to resolve the problems that is inevitable in BIO implementation.

Non-blocking I/O


Richard Feynman

What is Netty

If you are a Java developer, you must have heard about Netty more or less, and it’s likely that you have used it, directly or indirectly. If not, there is a brief introduction from the Netty Project.

Netty project — an event-driven asynchronous network application framework.

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

Why I Write This Series of Articles

I’ve been interested in Netty for a long time, and I have read many blog posts that address Netty’s performance, architecture, and package structures, which makes me more curious about how Netty do that…

Build Your Own Netty — Start from BIO

Netty Project

In this article, we will implement an Echo Server by the Java Blocking I/O library.

Echo Server with BIO

1. listen on port 8080

YASA is another Solr Admin built on VueJS and ECharts, greatly inspired by Kibana, which is a visualization tool for Elasticsearch. YASA aims to be “Kibana” for Solr eventually.




This story was originally posted on GitHub:


Caching is a critical technology in many high performance scalable applications. There are many choices in caching framework, including Ehcache, Memcache, cache2k etc. But today we are going to build one on our own, to learn what cache really does. Let’s get started.

Naive Version

A cache is typically a key-value store, and in Kotlin/Java there is exactly a class representing this kind of data structure: Map. There are chances that we have already leveraged this class to do some caching tasks. …

EnumSet is a specialized implementation of java.util.Set, as its name implies, it is designed for use with Enums; so what’s the difference between EnumSet and a regular Set (say HashSet)? And why should we use EnumSet whenever possible instead of a regular Set?


Here are the environments used in this post:

  • OS: macOS High Sierra
  • JDK: 1.8.0_151

How EnumSet Works

If you look up the source code of EnumSet, it is easy to find out that EnumSetdoesn’t store all the elements in a table (like HashMap does), instead, it stores the elements as some bits of a long type field;

Here is how…


Apache SkyWalking Core Maintainer; Open-source enthusiast. GitHub@kezhenxu94

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store