All Projects → hemerajs → Hemera

hemerajs / Hemera

Licence: mit
🔬 Writing reliable & fault-tolerant microservices in Node.js https://hemerajs.github.io/hemera/

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Hemera

Liftbridge
Lightweight, fault-tolerant message streams.
Stars: ✭ 2,175 (+181.37%)
Mutual labels:  cloud-native, pubsub, nats, distributed-systems
Go Zero
go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
Stars: ✭ 13,156 (+1601.94%)
Mutual labels:  microservice, rpc, cloud-native
Remit
RabbitMQ-backed microservices supporting RPC, pubsub, automatic service discovery and scaling with no code changes.
Stars: ✭ 24 (-96.9%)
Mutual labels:  microservice, rpc, micro
Motan Openresty
A cross-language RPC framework for rapid development of high performance distributed services based on OpenResty.
Stars: ✭ 117 (-84.86%)
Mutual labels:  microservice, rpc, cloud-native
Jupiter
Jupiter是一款性能非常不错的, 轻量级的分布式服务框架
Stars: ✭ 1,372 (+77.49%)
Mutual labels:  microservice, rpc, distributed-systems
Go Chassis
a microservice framework for rapid development of micro services in Go with rich eco-system
Stars: ✭ 2,428 (+214.1%)
Mutual labels:  microservice, cloud-native, distributed-systems
Getty
a netty like asynchronous network I/O library based on tcp/udp/websocket; a bidirectional RPC framework based on JSON/Protobuf; a microservice framework based on zookeeper/etcd
Stars: ✭ 532 (-31.18%)
Mutual labels:  microservice, rpc, micro
Micro
Micro is a distributed cloud operating system
Stars: ✭ 10,778 (+1294.31%)
Mutual labels:  cloud-native, micro, distributed-systems
Go Os
Stars: ✭ 185 (-76.07%)
Mutual labels:  microservice, rpc, micro
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (-80.98%)
Mutual labels:  microservice, rpc, nats
Go Grpc
A simpler grpc framework
Stars: ✭ 133 (-82.79%)
Mutual labels:  microservice, micro, distributed-systems
backk
Backk - Node.js framework for creating security-first cloud-native microservices for Kubernetes in Typescript
Stars: ✭ 14 (-98.19%)
Mutual labels:  microservice, rpc, cloud-native
liftbridge-api
Protobuf definitions for the Liftbridge gRPC API. https://github.com/liftbridge-io/liftbridge
Stars: ✭ 15 (-98.06%)
Mutual labels:  pubsub, nats, cloud-native
Go Micro
A pluggable Go framework for distributed systems development
Stars: ✭ 17,350 (+2144.5%)
Mutual labels:  rpc, micro, distributed-systems
Nats.py
Python3 client for NATS.io
Stars: ✭ 384 (-50.32%)
Mutual labels:  cloud-native, nats
Nats.net
The official C# Client for NATS
Stars: ✭ 378 (-51.1%)
Mutual labels:  pubsub, nats
Microservices Recipes A Free Gitbook
“If you are working in an organization that places lots of restrictions on how developers can do their work, then microservices may not be for you.” ― Sam Newman
Stars: ✭ 393 (-49.16%)
Mutual labels:  microservice, cloud-native
Hydra
后端一站式微服务框架,提供API、web、websocket,RPC、任务调度、消息消费服务器
Stars: ✭ 407 (-47.35%)
Mutual labels:  microservice, rpc
Midway Faas
🔱 A simple and lightweight serverless framework
Stars: ✭ 363 (-53.04%)
Mutual labels:  microservice, cloud-native
Cloud Native Starter
Cloud Native Starter for Java/Jakarta EE based Microservices on Kubernetes and Istio
Stars: ✭ 402 (-47.99%)
Mutual labels:  microservice, cloud-native

Hemera

License MIT Build Status Build Status Coverage Status Gitter JavaScript Style Guide Known Vulnerabilities lerna

A Node.js microservices toolkit for the NATS messaging system
Run on repl.it

📓 Getting Started

Hemera (/ˈhɛmərə/; Ancient Greek: Ἡμέρα [hɛːméra] "day") is a small wrapper around the official NATS driver. NATS is a simple, fast and reliable solution for the internal communication of a distributed system. It chooses simplicity and reliability over guaranteed delivery. We want to provide a toolkit to develop micro services in an easy and powerful way. We provide a pattern matching RPC style. You don't have to worry about the transport. NATS is powerful.

With Hemera you have the best of both worlds. Efficient pattern matching to have the most flexibility in defining your RPC's. It doesn't matter where your server or client lives. You can start as many services you want on different hosts to ensure maximal availability. The only dependency you have is a single binary of ~10MB. Mind your own business NATS will do the rest for you:

The key features of NATS in combination with Hemera are:

  • Lightweight: The Hemera core is small as possible and provide an extensive plugin system.
  • Location transparency: A service may be instantiated in different locations at different times. An application interacting with an service and does not know the service physical location.
  • Service Discovery: You don't need a service discovery all subscriptions are managed by NATS.
  • Load Balancing: Requests are load balanced (random) by NATS mechanism of "queue groups".
  • Packages: We provide reliable and modern plugins to the community.
  • High performant: NATS is able to handle million of requests per second.
  • Scalability: Filtering on the subject name enables services to divide work (perhaps with locality).
  • Fault tolerance: Auto-heals when new services are added. Configure cluster mode to be more reliable.
  • Auto-pruning: NATS automatically handles a slow consumer and cut it off.
  • Pattern driven: Define RPC's in JSON and use the flexibility of pattern-matching.
  • Request & Reply: By default point-to-point involves the fastest or first to respond.
  • Publish & Subscribe: Hemera supports all features of NATS. This includes wildcards in subjects and normal publish and fanout mechanism.
  • Tracing: Builtin tracing capabilities but we also provide plugin for Jaeger.
  • Monitoring: NATS server can be monitored by cli or a dashboard.
  • Payload validation: Create your own validator or use existing plugins e.g hemera-joi or hemera-ajv.
  • Serialization: Use custom serializer e.g hemera-mgspack.
  • Metadata: Transfer metadata across services or attach contextual data to tracing systems.
  • Dependencies: NATS is a single binary of ~10MB and can be deployed in seconds.
  • Typescript: We provide typings.

Built in protection

  • Process policy: Will exit the process when the policy (memory, event loop) could not be fullfilled (Option: heavy).
  • Message loop detection: Will return an error if you call a route recursively (Option: maxRecursion).
  • Safe default JSON serializer: Provides a deterministic version and will also gracefully handle circular structures.

Who's using Hemera?

appcom-interactive amerbank savicontrols mercado unico
appcom interactive amerbank savicontrols mercado unico

Get Involved

  • Contributing: Pull requests are welcome!
    • Read CONTRIBUTING.md and check out our help-wanted issues
    • Submit github issues for any feature enhancements, bugs or documentation problems
  • Support: Join our gitter chat to ask questions to get support from the maintainers and other Hemera developers
  • Discuss: Tweet using the #HemeraJs hashtag

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Supported Node Versions

Support policy for Nodejs versions follows Nodejs release support. We will support and build hemera on even Nodejs versions that are current or in maintenance.

Professional services

Hemera is free for any use (MIT license). If you are in production don't miss the professional support service. For courses and training send me an email to [email protected] or contact me private on Gitter

Sponsorship

Development of the hemera core module generously supported by contributions from individuals and corporations. If you are benefiting from hemera and would like to help keep the project financially sustainable, please visit Dustin Deus Patreon page, his Paypal Me or contact him via email.

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].