kube-batch
RabbitMQ
kube-batch | RabbitMQ | |
---|---|---|
3 | 92 | |
1,057 | 11,608 | |
- | 1.0% | |
4.0 | 10.0 | |
12 months ago | 3 days ago | |
Go | Starlark | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kube-batch
-
Volcano vs Yunikorn vs Knative
tldr; Knative Batch Job provider should support the respective coscheduling and kube-batch support. We had developed an in-house one for KubeFlow, from scratch. We had added Apache Arrow support into knative-serving with the respective CloudEvents interop layer, natively (i.e. secure shmem via IPC namespace, instead of message passing on the same host). We use it as a direct replacement for Apache Arrow Ballista, and had planned researching further DataFusion compat layer. Almost any modern ETL is pretty dubious without Apache Arrow.
-
Kubernetes Was Never Designed for Batch Jobs
Another aspect of batch jobs is that we’ll often want to run distributed computations where we split our data into chunks and run a function on each chunk. One popular option is to run Spark, which is built for exactly this use case, on top of Kubernetes. And there are other options for additional software to make running distributed computations on Kubernetes easier.
-
Scaling Kubernetes to 7,500 Nodes
> That said, strain on the kube-scheduler is spiky. A new job may consist of many hundreds of pods all being created at once, then return to a relatively low rate of churn.
Last I checked, the default scheduler places Pods one at a time. It might be advantageous to use a gang/batch scheduler like kube-batch[0], Poseidon[1] or DCM[2].
[0] https://github.com/kubernetes-sigs/kube-batch
[1] https://github.com/kubernetes-sigs/poseidon
[2] https://github.com/vmware/declarative-cluster-management
RabbitMQ
-
Building Llama as a Service (LaaS)
Although they did not make it into production, I experimented with the RabbitMQ message broker, Python (Django, Flask), Kubernetes + minikube, JWT, and NGINX. This was a hobby project, but I intended to learn about microservices along the way.
-
A Developer's Journal: Simplifying the Twelve-Factor App
Messaging/Queueing Systems (Amazon SQS, RabbitMQ, Beanstalkd)
-
FastStream: Python's framework for Efficient Message Queue Handling
Later, we discovered Propan, a library created by Nikita Pastukhov, which solved similar problems but for RabbitMQ. Recognizing the potential for collaboration, we joined forces with Nikita to build a unified library that could work seamlessly with both Kafka and RabbitMQ. And that's how FastStream came to be—a solution born out of the need for simplicity and efficiency in microservices development.
-
The Complete Microservices Guide
Inter-Service Communication: Middleware provides communication channels and protocols that enable microservices to communicate with each other. This can include message brokers like RabbitMQ, Apache Kafka, RPC frameworks like gRPC, or RESTful APIs.
-
Project Structure Review [.Net] [Console]
This is an implementation of pub/sub. The publisher is on a separate project. The message broker is Azure Service Bus. We use NServiceBus for code implementation. I use rabbitMQ broker for local tests. Nothing I can do about the tech stack. This is more of a high level single project structure review 😅
-
The Role of Queues in Building Efficient Distributed Applications
RabbitMQ is a robust and highly configurable open-source message broker that implements the Advanced Message Queuing Protocol (AMQP).
-
Should I chain calls in backend?
When using third-party services, especially within a "transaction", it's often a good idea to use a persistent Message Queue (MQ) system like RabbitMQ. Go through all their tutorials to get a really good understanding of how message queues work and how they can be used to solve your problem.
- Node still seems better than python after all this time for web server speed but..
-
Delayed events pattern, no more crons
The best technical solution to provide the event queues is to use a message-broker technology like RabbitMQ.
- RabbitMQ 3.12.0 Released
What are some alternatives?
volcano - A Cloud Native Batch System (Project under CNCF)
NATS - High-Performance server for NATS.io, the cloud and edge native messaging system.
argo - Workflow Engine for Kubernetes
mosquitto - Eclipse Mosquitto - An open source MQTT broker
mpi-operator - Kubernetes Operator for MPI-based applications (distributed training, HPC, etc.)
MediatR - Simple, unambitious mediator implementation in .NET
kube-scheduler-simulator - The simulator for the Kubernetes scheduler
nsq - A realtime distributed messaging platform
sidekick - High Performance HTTP Sidecar Load Balancer
BeanstalkD - Beanstalk is a simple, fast work queue.
sarus - OCI-compatible engine to deploy Linux containers on HPC environments.
rq - Simple job queues for Python