Alternatives to NATS logo

Alternatives to NATS

Kafka, gRPC, MQTT, NSQ, and RabbitMQ are the most popular alternatives and competitors to NATS.
371
493
+ 1
60

What is NATS and what are its top alternatives?

NATS is a high-performance messaging system that is lightweight and easy to use. It offers features such as publish/subscribe messaging, request/reply messaging, and message queuing. However, NATS lacks advanced features like message persistence and topic wildcard subscriptions, which may be necessary for some use cases.

  1. Apache Kafka: Apache Kafka is a distributed streaming platform that is known for its high-throughput, scalability, and fault tolerance. It offers features like partitioning, replication, and fault tolerance, making it suitable for large-scale data processing. Pros: High throughput, fault tolerance. Cons: Complex setup and management.
  2. RabbitMQ: RabbitMQ is a popular open-source message broker that supports multiple messaging protocols and messaging patterns. It is highly configurable and offers features like message queuing, routing, and clustering. Pros: Supports multiple messaging protocols, high availability. Cons: Learning curve for complex setups.
  3. Apache Pulsar: Apache Pulsar is a cloud-native, distributed messaging system that offers features like message partitioning, geo-replication, and multi-tenancy. It is designed for high-performance and scalability in modern data architectures. Pros: Multi-tenancy, geo-replication. Cons: Complexity in setting up geo-replication.
  4. Redis: Redis is an open-source, in-memory data structure store that can also be used as a message broker. It offers features like pub/sub messaging, persistence, and clustering. Pros: High performance, persistence. Cons: Limited features compared to dedicated message brokers.
  5. ActiveMQ: Apache ActiveMQ is a powerful and flexible open-source message broker that supports multiple messaging protocols and delivery modes. It offers features like message persistence, clustering, and JMX management. Pros: Feature-rich, flexible configuration. Cons: Overhead in managing complex configurations.
  6. IBM MQ: IBM MQ is a messaging middleware that provides reliable messaging and data integration. It offers features like message queuing, publish/subscribe messaging, and support for multiple platforms. Pros: Enterprise-grade reliability, support for multiple platforms. Cons: Costly for small-scale deployments.
  7. Kafka Streams: Kafka Streams is a client library that allows users to process and analyze data in real-time with Apache Kafka. It offers features like fault tolerance, stateful processing, and scalability. Pros: Seamless integration with Apache Kafka, stateful processing. Cons: Limited to stream processing functionality.
  8. Google Cloud Pub/Sub: Google Cloud Pub/Sub is a fully managed messaging service that allows users to build event-driven systems. It offers features like at-least-once message delivery, scalable real-time messaging, and support for push and pull subscriptions. Pros: Fully managed service, scalable messaging. Cons: Vendor lock-in.
  9. Amazon SQS: Amazon Simple Queue Service (SQS) is a fully managed message queuing service that allows users to decouple and scale microservices, distributed systems, and serverless applications. It offers features like FIFO queues, message delay, and message retention. Pros: Fully managed service, scalable messaging. Cons: Limited to message queuing functionality.
  10. Mosquitto: Eclipse Mosquitto is an open-source message broker that implements the MQTT protocol. It is lightweight and suitable for Internet of Things (IoT) applications. Pros: Lightweight and efficient, MQTT protocol support. Cons: Limited to MQTT messaging protocol.

Top Alternatives to NATS

  • Kafka
    Kafka

    Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design. ...

  • gRPC
    gRPC

    gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking... ...

  • MQTT
    MQTT

    It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. ...

  • NSQ
    NSQ

    NSQ is a realtime distributed messaging platform designed to operate at scale, handling billions of messages per day. It promotes distributed and decentralized topologies without single points of failure, enabling fault tolerance and high availability coupled with a reliable message delivery guarantee. See features & guarantees. ...

  • RabbitMQ
    RabbitMQ

    RabbitMQ gives your applications a common platform to send and receive messages, and your messages a safe place to live until received. ...

  • Mosquitto
    Mosquitto

    It is lightweight and is suitable for use on all devices from low power single board computers to full servers.. The MQTT protocol provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for Internet of Things messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers. ...

  • NGINX
    NGINX

    nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. According to Netcraft nginx served or proxied 30.46% of the top million busiest sites in Jan 2018. ...

  • Apache HTTP Server
    Apache HTTP Server

    The Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant web server. Originally designed as a replacement for the NCSA HTTP Server, it has grown to be the most popular web server on the Internet. ...

NATS alternatives & related posts

Kafka logo

Kafka

23.5K
607
Distributed, fault tolerant, high throughput pub-sub messaging system
23.5K
607
PROS OF KAFKA
  • 126
    High-throughput
  • 119
    Distributed
  • 92
    Scalable
  • 86
    High-Performance
  • 66
    Durable
  • 38
    Publish-Subscribe
  • 19
    Simple-to-use
  • 18
    Open source
  • 12
    Written in Scala and java. Runs on JVM
  • 9
    Message broker + Streaming system
  • 4
    KSQL
  • 4
    Avro schema integration
  • 4
    Robust
  • 3
    Suport Multiple clients
  • 2
    Extremely good parallelism constructs
  • 2
    Partioned, replayable log
  • 1
    Simple publisher / multi-subscriber model
  • 1
    Fun
  • 1
    Flexible
CONS OF KAFKA
  • 32
    Non-Java clients are second-class citizens
  • 29
    Needs Zookeeper
  • 9
    Operational difficulties
  • 5
    Terrible Packaging

related Kafka posts

Nick Rockwell
SVP, Engineering at Fastly · | 46 upvotes · 4.1M views

When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

See more
Ashish Singh
Tech Lead, Big Data Platform at Pinterest · | 38 upvotes · 3.3M views

To provide employees with the critical need of interactive querying, we’ve worked with Presto, an open-source distributed SQL query engine, over the years. Operating Presto at Pinterest’s scale has involved resolving quite a few challenges like, supporting deeply nested and huge thrift schemas, slow/ bad worker detection and remediation, auto-scaling cluster, graceful cluster shutdown and impersonation support for ldap authenticator.

Our infrastructure is built on top of Amazon EC2 and we leverage Amazon S3 for storing our data. This separates compute and storage layers, and allows multiple compute clusters to share the S3 data.

We have hundreds of petabytes of data and tens of thousands of Apache Hive tables. Our Presto clusters are comprised of a fleet of 450 r4.8xl EC2 instances. Presto clusters together have over 100 TBs of memory and 14K vcpu cores. Within Pinterest, we have close to more than 1,000 monthly active users (out of total 1,600+ Pinterest employees) using Presto, who run about 400K queries on these clusters per month.

Each query submitted to Presto cluster is logged to a Kafka topic via Singer. Singer is a logging agent built at Pinterest and we talked about it in a previous post. Each query is logged when it is submitted and when it finishes. When a Presto cluster crashes, we will have query submitted events without corresponding query finished events. These events enable us to capture the effect of cluster crashes over time.

Each Presto cluster at Pinterest has workers on a mix of dedicated AWS EC2 instances and Kubernetes pods. Kubernetes platform provides us with the capability to add and remove workers from a Presto cluster very quickly. The best-case latency on bringing up a new worker on Kubernetes is less than a minute. However, when the Kubernetes cluster itself is out of resources and needs to scale up, it can take up to ten minutes. Some other advantages of deploying on Kubernetes platform is that our Presto deployment becomes agnostic of cloud vendor, instance types, OS, etc.

#BigData #AWS #DataScience #DataEngineering

See more
gRPC logo

gRPC

2.2K
63
A high performance, open-source universal RPC framework
2.2K
63
PROS OF GRPC
  • 24
    Higth performance
  • 15
    The future of API
  • 13
    Easy setup
  • 5
    Contract-based
  • 4
    Polyglot
  • 2
    Garbage
CONS OF GRPC
    Be the first to leave a con

    related gRPC posts

    Noah Zoschke
    Engineering Manager at Segment · | 30 upvotes · 306.2K views

    We just launched the Segment Config API (try it out for yourself here) — a set of public REST APIs that enable you to manage your Segment configuration. Behind the scenes the Config API is built with Go , GRPC and Envoy.

    At Segment, we build new services in Go by default. The language is simple so new team members quickly ramp up on a codebase. The tool chain is fast so developers get immediate feedback when they break code, tests or integrations with other systems. The runtime is fast so it performs great at scale.

    For the newest round of APIs we adopted the GRPC service #framework.

    The Protocol Buffer service definition language makes it easy to design type-safe and consistent APIs, thanks to ecosystem tools like the Google API Design Guide for API standards, uber/prototool for formatting and linting .protos and lyft/protoc-gen-validate for defining field validations, and grpc-gateway for defining REST mapping.

    With a well designed .proto, its easy to generate a Go server interface and a TypeScript client, providing type-safe RPC between languages.

    For the API gateway and RPC we adopted the Envoy service proxy.

    The internet-facing segmentapis.com endpoint is an Envoy front proxy that rate-limits and authenticates every request. It then transcodes a #REST / #JSON request to an upstream GRPC request. The upstream GRPC servers are running an Envoy sidecar configured for Datadog stats.

    The result is API #security , #reliability and consistent #observability through Envoy configuration, not code.

    We experimented with Swagger service definitions, but the spec is sprawling and the generated clients and server stubs leave a lot to be desired. GRPC and .proto and the Go implementation feels better designed and implemented. Thanks to the GRPC tooling and ecosystem you can generate Swagger from .protos, but it’s effectively impossible to go the other way.

    See more
    Dylan Krupp
    Shared insights
    on
    gRPCgRPCGraphQLGraphQL

    I used GraphQL extensively at a previous employer a few years ago and really appreciated the data-driven schema etc alongside the many other benefits it provided. At that time, it seemed like it was set to replace RESTful APIs and many companies were adopting it.

    However, as of late, it seems like interest has been waning for GraphQL as opposed to increasing as I had assumed it would. Am I missing something here? What is the current perspective regarding this technology?

    Currently, I'm working with gRPC and was curious as to the state of everything now.

    See more
    MQTT logo

    MQTT

    614
    7
    A machine-to-machine Internet of Things connectivity protocol
    614
    7
    PROS OF MQTT
    • 3
      Varying levels of Quality of Service to fit a range of
    • 2
      Lightweight with a relatively small data footprint
    • 2
      Very easy to configure and use with open source tools
    CONS OF MQTT
    • 1
      Easy to configure in an unsecure manner

    related MQTT posts

    Kindly suggest the best tool for generating 10Mn+ concurrent user load. The tool must support MQTT traffic, REST API, support to interfaces such as Kafka, websockets, persistence HTTP connection, auth type support to assess the support /coverage.

    The tool can be integrated into CI pipelines like Azure Pipelines, GitHub, and Jenkins.

    See more
    Shared insights
    on
    MQTTMQTTReductStoreReductStore

    You can use ReductStore to keep a history of MQTT messages by using its Client SDKs. This can be useful if you use a binary format for your data and it can be recorded in a classical TSDB. You can set a FIFO quota for a bucket in your ReductStore instance so that the database removes old MQTT messages when the limit is reached.

    See more
    NSQ logo

    NSQ

    142
    148
    A realtime distributed messaging platform
    142
    148
    PROS OF NSQ
    • 29
      It's in golang
    • 20
      Distributed
    • 20
      Lightweight
    • 18
      Easy setup
    • 17
      High throughput
    • 11
      Publish-Subscribe
    • 8
      Scalable
    • 8
      Save data if no subscribers are found
    • 6
      Open source
    • 5
      Temporarily kept on disk
    • 2
      Simple-to use
    • 1
      Free
    • 1
      Topics and channels concept
    • 1
      Load balanced
    • 1
      Primarily in-memory
    CONS OF NSQ
    • 1
      Long term persistence
    • 1
      Get NSQ behavior out of Kafka but not inverse
    • 1
      HA

    related NSQ posts

    RabbitMQ logo

    RabbitMQ

    21.3K
    557
    Open source multiprotocol messaging broker
    21.3K
    557
    PROS OF RABBITMQ
    • 235
      It's fast and it works with good metrics/monitoring
    • 80
      Ease of configuration
    • 60
      I like the admin interface
    • 52
      Easy to set-up and start with
    • 22
      Durable
    • 19
      Standard protocols
    • 19
      Intuitive work through python
    • 11
      Written primarily in Erlang
    • 9
      Simply superb
    • 7
      Completeness of messaging patterns
    • 4
      Reliable
    • 4
      Scales to 1 million messages per second
    • 3
      Better than most traditional queue based message broker
    • 3
      Distributed
    • 3
      Supports MQTT
    • 3
      Supports AMQP
    • 2
      Clear documentation with different scripting language
    • 2
      Better routing system
    • 2
      Inubit Integration
    • 2
      Great ui
    • 2
      High performance
    • 2
      Reliability
    • 2
      Open-source
    • 2
      Runs on Open Telecom Platform
    • 2
      Clusterable
    • 2
      Delayed messages
    • 1
      Supports Streams
    • 1
      Supports STOMP
    • 1
      Supports JMS
    CONS OF RABBITMQ
    • 9
      Too complicated cluster/HA config and management
    • 6
      Needs Erlang runtime. Need ops good with Erlang runtime
    • 5
      Configuration must be done first, not by your code
    • 4
      Slow

    related RabbitMQ posts

    James Cunningham
    Operations Engineer at Sentry · | 18 upvotes · 1.8M views
    Shared insights
    on
    CeleryCeleryRabbitMQRabbitMQ
    at

    As Sentry runs throughout the day, there are about 50 different offline tasks that we execute—anything from “process this event, pretty please” to “send all of these cool people some emails.” There are some that we execute once a day and some that execute thousands per second.

    Managing this variety requires a reliably high-throughput message-passing technology. We use Celery's RabbitMQ implementation, and we stumbled upon a great feature called Federation that allows us to partition our task queue across any number of RabbitMQ servers and gives us the confidence that, if any single server gets backlogged, others will pitch in and distribute some of the backlogged tasks to their consumers.

    #MessageQueue

    See more

    Around the time of their Series A, Pinterest’s stack included Python and Django, with Tornado and Node.js as web servers. Memcached / Membase and Redis handled caching, with RabbitMQ handling queueing. Nginx, HAproxy and Varnish managed static-delivery and load-balancing, with persistent data storage handled by MySQL.

    See more
    Mosquitto logo

    Mosquitto

    139
    14
    An open source message broker that implements the MQTT protocol
    139
    14
    PROS OF MOSQUITTO
    • 10
      Simple and light
    • 4
      Performance
    CONS OF MOSQUITTO
      Be the first to leave a con

      related Mosquitto posts

      A Nielsen
      Fullstack Dev at ADTELA · | 2 upvotes · 214.3K views

      Hi Marc,

      For the com part, depending of more details not provided, i'd use SSE, OR i'd run either Mosquitto or RabbitMQ running on Amazon EC2 instances and leverage MQTT or amqp 's subscribe/publish features with my users running mqtt or amqp clients (tcp or websockets) somehow. (publisher too.. you don't say how and who gets to update the document(s).

      I find "a ton of end users", depending on how you define a ton (1k users ;) ?) and how frequent document updates are, that can mean a ton of ressources, can't cut it at some point, even using SSE

      how many, how big, how persistant do the document(s) have to be ? Db-wise,can't say for lack of details and context, yeah could also be Redis, any RDBMS or nosql or even static json files stored on an Amazon S3 bucket .. anything really

      Good luck!

      See more
      NGINX logo

      NGINX

      113.4K
      5.5K
      A high performance free open source web server powering busiest sites on the Internet.
      113.4K
      5.5K
      PROS OF NGINX
      • 1.4K
        High-performance http server
      • 894
        Performance
      • 730
        Easy to configure
      • 607
        Open source
      • 530
        Load balancer
      • 289
        Free
      • 288
        Scalability
      • 226
        Web server
      • 175
        Simplicity
      • 136
        Easy setup
      • 30
        Content caching
      • 21
        Web Accelerator
      • 15
        Capability
      • 14
        Fast
      • 12
        High-latency
      • 12
        Predictability
      • 8
        Reverse Proxy
      • 7
        Supports http/2
      • 7
        The best of them
      • 5
        Great Community
      • 5
        Lots of Modules
      • 5
        Enterprise version
      • 4
        High perfomance proxy server
      • 3
        Embedded Lua scripting
      • 3
        Streaming media delivery
      • 3
        Streaming media
      • 3
        Reversy Proxy
      • 2
        Blash
      • 2
        GRPC-Web
      • 2
        Lightweight
      • 2
        Fast and easy to set up
      • 2
        Slim
      • 2
        saltstack
      • 1
        Virtual hosting
      • 1
        Narrow focus. Easy to configure. Fast
      • 1
        Along with Redis Cache its the Most superior
      • 1
        Ingress controller
      CONS OF NGINX
      • 10
        Advanced features require subscription

      related NGINX posts

      Simon Reymann
      Senior Fullstack Developer at QUANTUSflow Software GmbH · | 30 upvotes · 11.2M views

      Our whole DevOps stack consists of the following tools:

      • GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
      • Respectively Git as revision control system
      • SourceTree as Git GUI
      • Visual Studio Code as IDE
      • CircleCI for continuous integration (automatize development process)
      • Prettier / TSLint / ESLint as code linter
      • SonarQube as quality gate
      • Docker as container management (incl. Docker Compose for multi-container application management)
      • VirtualBox for operating system simulation tests
      • Kubernetes as cluster management for docker containers
      • Heroku for deploying in test environments
      • nginx as web server (preferably used as facade server in production environment)
      • SSLMate (using OpenSSL) for certificate management
      • Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
      • PostgreSQL as preferred database system
      • Redis as preferred in-memory database/store (great for caching)

      The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:

      • Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
      • Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
      • Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
      • Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
      • Scalability: All-in-one framework for distributed systems.
      • Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
      See more
      John-Daniel Trask
      Co-founder & CEO at Raygun · | 19 upvotes · 290.8K views

      We chose AWS because, at the time, it was really the only cloud provider to choose from.

      We tend to use their basic building blocks (EC2, ELB, Amazon S3, Amazon RDS) rather than vendor specific components like databases and queuing. We deliberately decided to do this to ensure we could provide multi-cloud support or potentially move to another cloud provider if the offering was better for our customers.

      We’ve utilized c3.large nodes for both the Node.js deployment and then for the .NET Core deployment. Both sit as backends behind an nginx instance and are managed using scaling groups in Amazon EC2 sitting behind a standard AWS Elastic Load Balancing (ELB).

      While we’re satisfied with AWS, we do review our decision each year and have looked at Azure and Google Cloud offerings.

      #CloudHosting #WebServers #CloudStorage #LoadBalancerReverseProxy

      See more
      Apache HTTP Server logo

      Apache HTTP Server

      64.4K
      1.4K
      Open-source HTTP server for modern operating systems including UNIX and Windows
      64.4K
      1.4K
      PROS OF APACHE HTTP SERVER
      • 479
        Web server
      • 305
        Most widely-used web server
      • 217
        Virtual hosting
      • 148
        Fast
      • 138
        Ssl support
      • 44
        Since 1996
      • 28
        Asynchronous
      • 5
        Robust
      • 4
        Proven over many years
      • 2
        Mature
      • 2
        Perfomance
      • 1
        Perfect Support
      • 0
        Many available modules
      • 0
        Many available modules
      CONS OF APACHE HTTP SERVER
      • 4
        Hard to set up

      related Apache HTTP Server posts

      Nick Rockwell
      SVP, Engineering at Fastly · | 46 upvotes · 4.1M views

      When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

      So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

      React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

      Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

      See more
      Tim Abbott
      Shared insights
      on
      NGINXNGINXApache HTTP ServerApache HTTP Server
      at

      We've been happy with nginx as part of our stack. As an open source web application that folks install on-premise, the configuration system for the webserver is pretty important to us. I have a few complaints (e.g. the configuration syntax for conditionals is a pain), but overall we've found it pretty easy to build a configurable set of options (see link) for how to run Zulip on nginx, both directly and with a remote reverse proxy in front of it, with a minimum of code duplication.

      Certainly I've been a lot happier with it than I was working with Apache HTTP Server in past projects.

      See more