Skip to content
Branch: master
Find file History
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
src increased jetty threads to 100 Feb 22, 2019
Dockerfile
README.md
pom.xml

README.md

Introduction

News Feed microservice in Spring Boot. I evaluated this microservice when compared to the Dropwizard version.

http://glennengstrand.info/software/performance/springboot/dropwizard

Overview

It connects to MySql, Redis, and Cassandra via Spring Data repositories. I was not able to use the Spring Data repository for ElasticSearch because I wanted to use the high level REST client instead of the native transport client. At the time of this writing, that repository did not work with the high level REST client. The ElasticSearch folks recommend the high level rest client over the native transport client which will soon be deprecated.

I started this service with the generated output from the swagger-codegen project using a custom spring boot template.

The underlying library integrating swagger to SpringBoot is springfox. You can view the api documentation in swagger-ui by pointing to the document root (port 8080).

Running this service

mvn clean install
docker build -t feed8:1.0 .
cd ../k8s
kubectl create -f feed8-deployment.yaml

See the Kubernetes README from this repo on how to set up the rest of the environment. If you make any changes to the code, then be sure to edit the k8s/feed8-deployment.yaml file to launch your new image.

Performance under load

With Spring boot you can switch out the underlying servlet engine. Here are the performance benchmarks for Tomcat and Jetty.

servlet engine throughput (RPM) avg latency (ms) 95th (ms) 99th (ms) RAM (MB)
Tomcat 13,966 3 5 9 800
Jetty 13,895 2.76 4 7 1,536

The above benchmark numbers were run with the default Hikari connection pool size of 10. I ran the load test with a pool size of 18 (because that is the pool size for the dropwizard version of the news feed microservice) but the throughput was one third of what you see here and the latency was double.

You can’t perform that action at this time.