All Projects → spotify → Apollo

spotify / Apollo

Licence: apache-2.0
Java libraries for writing composable microservices

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Apollo

Criollo
A powerful Cocoa web framework and HTTP server for macOS, iOS and tvOS.
Stars: ✭ 229 (-85.97%)
Mutual labels:  framework, http-server
Comet
Modern PHP framework for building blazing fast REST APIs, CRUDs and microservices
Stars: ✭ 328 (-79.9%)
Mutual labels:  framework, http-server
Pure Http
✨ The simple web framework for Node.js with zero dependencies.
Stars: ✭ 139 (-91.48%)
Mutual labels:  framework, http-server
Neutralinojs
Portable and lightweight cross-platform desktop application development framework
Stars: ✭ 4,731 (+189.89%)
Mutual labels:  framework, http-server
Sylar
C++高性能分布式服务器框架,webserver,websocket server,自定义tcp_server(包含日志模块,配置模块,线程模块,协程模块,协程调度模块,io协程调度模块,hook模块,socket模块,bytearray序列化,http模块,TcpServer模块,Websocket模块,Https模块等, Smtp邮件模块, MySQL, SQLite3, ORM,Redis,Zookeeper)
Stars: ✭ 895 (-45.16%)
Mutual labels:  framework, http-server
Fortjs
Component based MVC web framework for nodejs targeting good code structures & modularity.
Stars: ✭ 44 (-97.3%)
Mutual labels:  framework, http-server
Framework
Swoole, PSR-15, PSR-7, PSR-11 lightweight modular anti-framework for REST micro-services.
Stars: ✭ 259 (-84.13%)
Mutual labels:  framework, http-server
Restana
Super fast and minimalist framework for building REST micro-services.
Stars: ✭ 341 (-79.11%)
Mutual labels:  framework, http-server
Cppwebframework
​The C++ Web Framework (CWF) is a MVC web framework, Open Source, under MIT License, using C++ with Qt to be used in the development of web applications.
Stars: ✭ 348 (-78.68%)
Mutual labels:  framework, http-server
Webcpp
用C++开发web服务器框架
Stars: ✭ 23 (-98.59%)
Mutual labels:  framework, http-server
Proxy.py
⚡⚡⚡Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on Network monitoring, controls & Application development, testing, debugging
Stars: ✭ 1,291 (-20.89%)
Mutual labels:  framework, http-server
Httpmole
A HTTP mole service
Stars: ✭ 127 (-92.22%)
Mutual labels:  http-server
Components
MobileUI was created thinking of making your hybrid application faster and smaller since you only install what you are really going to use for UI.
Stars: ✭ 125 (-92.34%)
Mutual labels:  framework
Qtnetworkng
QtNetwork Next Generation. A coroutine based network framework for Qt/C++, with more simpler API than boost::asio.
Stars: ✭ 125 (-92.34%)
Mutual labels:  http-server
Kepler
The open source full-stack geosocial network platform
Stars: ✭ 125 (-92.34%)
Mutual labels:  framework
Denovel
A Deno Framework For Web Artisan - Inspired by Laravel
Stars: ✭ 128 (-92.16%)
Mutual labels:  framework
Nexmon
The C-based Firmware Patching Framework for Broadcom/Cypress WiFi Chips that enables Monitor Mode, Frame Injection and much more
Stars: ✭ 1,761 (+7.9%)
Mutual labels:  framework
Qpcpp
QP/C++ real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 124 (-92.4%)
Mutual labels:  framework
Kit
Unity3D开发的工具包集合, 集成常见的开发组件以免于重复造轮子。佛系更新中。。。
Stars: ✭ 123 (-92.46%)
Mutual labels:  framework
Framework
Repositório principal contendo o Core e Extensions: JPA, Security, WS
Stars: ✭ 124 (-92.4%)
Mutual labels:  framework

Apollo

Circle Status Codecov Maven Central License

Status: Archived

⚠️ Apollo is heavily used within Spotify, however, most of its development has recently been done internally leveraging Apollo's module system. Because of this, and the fact that Apollo has very little (if any) use outside Spotify we want to signal this current state to the community by putting the project in archive mode. This means this project will no longer have new features, bug fixes or accept PRs for new features. Apollo development will continue internally in Spotify.

Apollo is a set of Java libraries that we use at Spotify when writing microservices. Apollo includes modules such as an HTTP server and a URI routing system, making it trivial to implement restful API services.

Apollo has been used in production at Spotify for a long time. As a part of the work to release version 1.0.0 we moved the development of Apollo into the open.

There are two main libraries in Apollo:

Apollo API

The apollo-api library is the Apollo library you are most likely to interact with. It gives you the tools you need to define your service routes and your request/reply handlers.

Here, for example, we define that our service will respond to a GET request on the path / with the string "hello world":

public static void init(Environment environment) {
  environment.routingEngine()
      .registerAutoRoute(Route.sync("GET", "/", requestContext -> "hello world"));
}

Note that, for an Apollo-based service, you can see the routes defined for a service by querying /_meta/0/endpoints.

The apollo-api library provides several ways to help you define your request/reply handlers. You can specify how responses should be serialized (such as JSON). Read more about this library in the Apollo API Readme.

Apollo Core

The apollo-core library manages the lifecycle (loading, starting, and stopping) of your service. You do not usually need to interact directly with apollo-core; think of it merely as "plumbing". For more information about this library, see the Apollo Core Readme.

Apollo Test

In addition to the two main Apollo libraries listed above, to help you write tests for your service we have an additional library called apollo-test. It has helpers to set up a service for testing, and to mock outgoing request responses.

Links

Introduction Website
JavaDocs
Maven site

Diagrams

Apollo set-up

Apollo in runtime

Code of conduct

This project adheres to the Open Code of Conduct. By participating, you are expected to honor this code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].