Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here

colossus

I/O and Microservice library for Scala

Subscribe to updates I use colossus


Statistics on colossus

Number of watchers on Github 1050
Number of open issues 1
Average time to close an issue 19 days
Main language Scala
Average time to merge a PR 4 days
Open pull requests 20+
Closed pull requests 20+
Last commit almost 3 years ago
Repo Created almost 6 years ago
Repo Last Updated over 2 years ago
Size 8.8 MB
Organization / Authortumblr
Latest Releasev0.11.0
Contributors9
Page Updated
Do you use colossus? Leave a review!
View colossus activity
View on github
Book a Mock Interview With Me (Silicon Valley Engineering Leader, 100s of interviews conducted)
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating colossus for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Colossus

Build Status

Maven Central

codecov.io

Colossus is a lightweight I/O framework for building Scala services.

ColossusScalaI/O

Full documentation can be found here: https://tumblr.github.io/colossus

For general discussion and Q&A, check out the Google Group.

Colossus takes part in the TechEmpower web framework benchmarks under the JSON serialization and Plaintext tests.

Here's an overview of what you can find in this repo:

  • colossus : The framework
  • colossus-metrics : high-performance metrics library (does not depend on colossus)
  • colossus-examples : A few simple examples that can be run
  • colossus-testkit : Small library containing a few useful tools for testing
  • colossus-tests : The unit and integration tests for colossus
  • colossus-docs : Markdown documentation

License

Copyright 2016 Tumblr Inc.

Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

colossus open issues Ask a question     (View All Issues)
  • about 4 years Request Timeout per request
  • about 4 years Add a way to intialize collectors for specific tagmaps
  • about 4 years Add a setting for cooldown for metric pruning
  • about 4 years Do metrics work in 0.8.1?
  • about 4 years Is it possible to mix HttpService and StreamingHttpService together?
  • about 4 years global tags on same path from different locations doesn't work
  • over 4 years Consider using monomorphic types for clients
  • over 4 years Load balancing error reporting
  • over 4 years Provide a mechanism for cross-worker resource management
  • over 4 years Improve scaladoc for public types
  • over 4 years Cleanup type scopes
  • over 4 years Make error reporting more configurable
  • over 4 years Consider library reorganization
  • over 4 years Drop Akka logging in favor of slf4j
  • over 4 years Fully replace Delegator with Initializer
  • over 4 years Add Http2 support
  • over 4 years metric system should take includeHostnameInGlobalTags option
  • over 4 years Design a better Http Routing DSL
  • over 4 years Upgrade Akka
  • over 4 years Histogram buckets need to be configurable
  • almost 5 years Redis/Memcache clients should return failure exceptions
  • over 5 years Add retry back-off for LoadBalancingClient that can't connect to a host
  • over 5 years New Parallel Service Layer
  • over 5 years Add support for authentication of connections
colossus open pull requests (View All Pulls)
  • Websocket protocol
  • More API Changes
  • typesafe config integration for IOSystem take 1
  • Yaka/req size
  • Client cleanup and unification : part 2
  • Client cleanup and unification
  • WorkerManager IdleCheck now waits for acks
  • ClientConfig now can be sourced from typesafe Config
  • Websocket server improvements
  • Collection trie
  • Major Protocol, Connection handler Refactoring
  • Fix websocket server
  • fixing bug with client graceful disconnect
  • Resurrect Pipes
  • Minor Pipe cleanup and some small optimizations
  • Docs: Worker updates
  • Include the host header in HTTP requests
  • Remove trailing whitespace
  • Minor code cleanup
  • Fixed wrong Scaladoc parameters.
colossus questions on Stackoverflow (View All Questions)
  • Colossus Background Task
  • Looking for a working Hauppauge Colossus filter graph
colossus list of languages used
colossus latest release notes
v0.11.0 Built in load balancer, compression, fixes, refactoring

Load balancer

Previously clients had to be manually wrapped in a load balancer class to add load balancing and retry logic to clients. This logic is now built into clients and is configurable. The client is passed a sequence of addresses instead of just one. The default behavior is to retry using every host in the list with zero backoff. For example, with one host, only one attempt is made; with five hosts, five attempts will be made using each of the hosts. The number of retries and the backoff strategy is configurable, see the client docs for more details. The old load balancer has been deprecated and will be removed in a future version.

Filters and HTTP compression

Filter functionality has been added to request handlers so if you want logic to be applied to every request you can add a filter. Specifically this means that compression has been added to HTTP services so requests can be uncompressed. See the services docs for more details.

Consistent redis and memcache interfaces

The redis API has been simplified so the default behavior is to return options, which matches the design of the memcache API. The old methods have been deprecated and will be removed in a future version.

v0.10.1 Prevent XXS attack

An undefined route would return No route for ${request.head.url}, which could allow for a cross-site scripting attack. The code was change to just output Not found.

v0.10.0 Library upgrades, scala 2.12 and refactoring

To migration from 0.9.x to 0.10.x:

  • Package namespace changes, a non-exhausted list:
    • colossus.protocols.http.server.HttpServer => colossus.protocols.http.HttpServer
    • colossus.protocols.http.server.Initializer => colossus.protocols.http.Initializer
    • colossus.protocols.http.server.RequestHandler => colossus.protocols.http.RequestHandler
    • colosuss.metrics.LoggerSender => colosuss.metrics.senders.LoggerSender
    • colosuss.metrics.OpenTsdbSender => colosuss.metrics.senders.OpenTsdbSender
  • Content type removed from HttpBody and is now correctly accessible as a HttpHeader. For example:

    request.ok(HttpBody("text", HttpHeader("content-type", "application/json")))
    

    Becomes

    request.ok(HttpBody("text")).withContentType(ContentType.ApplicationJson)
    
Other projects in Scala
Powered by Autocode - Instant Webhooks, Scripts and APIs
Autocode logo wordmark