Nomad
Dkron
| Nomad | Dkron | |
|---|---|---|
| 113 | 3 | |
| 16,595 | 4,696 | |
| 0.7% | 0.2% | |
| 9.8 | 9.2 | |
| 1 day ago | 10 days ago | |
| Go | Go | |
| GNU General Public License v3.0 or later | GNU Lesser General Public License v3.0 only |
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.
Nomad
- Show HN: Antfly: Distributed, Multimodal Search and Memory and Graphs in Go
-
Lightweight tool for deploying containerised applications across servers
Their license does not allow you to modify it and then offer it as a service to others: https://github.com/hashicorp/nomad/blob/main/LICENSE
You can't really do anything with it except work for Hashicorp for free, or create a fork that nobody is allowed to use unless they self-host it.
-
Terraform, Ansible, Pulumi? The DevOps tooling stack that didn’t burn me out
Nomad by HashiCorp
-
Cracking the Vault: How we found zero-day flaws in HashiCorp Vault
you could mitigate this with mTLS, but then that breaks vault/nomad integration as they don't support mTLS for that, and I was told to pound sand on their issue tracker.
https://github.com/hashicorp/nomad/issues/24970
https://discuss.hashicorp.com/t/how-to-use-mtls-with-nomad-w...
-
IBM Completes Acquisition of HashiCorp
20k+ nodes and 200k+ allocs. To be fair, Kubernetes cannot support this large of a cluster.
Most of my issues with it aren't related to the scale though. I wasn't involved in the operations of the cluster, I was just a user of Nomad trying to run a few thousand stateful allocs. Without custom resources and custom controllers, managing stateful services was a pain in the ass. Critical bugs would also often take years to get fixed. I had lots of fun getting paged in the middle of the night because 2 allocs would suddenly decide they now have the same index (https://github.com/hashicorp/nomad/issues/10727)
-
Dear friend, you have built a Kubernetes
https://github.com/hashicorp/nomad/blob/v1.6.0/website/conte... seems to have existed since before the license rug-pull. However I'm open to there being some miscommunication because https://developer.hashicorp.com/nomad/docs/glossary doesn't mention the word "control" and the word "host" could mean any number of things in this context
- Nomad: Simple, flexible scheduler, orchestrator to deploy and manage containers
-
Faster, Easier Deployments: How We Simplified Our Infrastructure with Nomad in 15 Hours (Goodbye, Kubernetes!)
Nomad: The Oasis in Our Infrastructure Desert
-
Building a highly-available web service without a database
> I should have just used on-disk mode from the start, but only now know better.
Yeah, I saw the recent post about reducing rqlite disk space usage. Using the on-disk sqlite as both the FSM and the Raft snapshot makes a lot of sense here. I'm curious whether you've had concerns about write amplification though? Because we have only the periodic Raft snapshots and the FSM is in-memory, during high write volumes we're only really hammering disk with the Raft logs.
> Do you find it in the field much with Nomad? I've managed to introduce new Raft Entry types very infrequently during rqlite's 10-years of development, only once did someone hit it in the field with rqlite.
My understanding is that rqlite Raft entries are mostly SQL statements (is that right?). Where Nomad is somewhat different (and probably closer to the OP) is that the Raft entries are application-level entries. For entries that are commands like "stop this job"[0] upgrades are simple.
The tricky entries are where the entry is "upsert this large deeply-nested object that I've serialized", like the Job or Node (where the workloads run). The typical bug here is you've added a field way down in the guts of one of these objects that's a pointer to a new struct. When old versions deserialize the message they ignore the new field and that's easy to reason about. But if the leader is still on an old version and the new code deserializes the old object, you need to make sure you're not missing any nil pointer checks. Without sum types enforced at compile time (i.e. Option/Maybe), we have to catch all these via code review and a lot of tedious upgrade testing.
> it requires discipline on the part of the end-users too.
Oh for sure. Nomad runs into some commercial realities here around how much discipline we can demand from end-users. =)
[0] https://github.com/hashicorp/nomad/blob/v1.8.2/nomad/fsm.go#...
- We migrated onto K8s in less than 12 months
Dkron
-
How to do distributed cronjobs with worker queues?
Works great. Hope this helps. (For easiness GH here).
-
Distributed job scheduling with Go?
I'am also familiar to hangfire, used in the past as distributed job scheduler for Owin microservices in C# too. Btw when we moved towards Golang stack realized that hangfire wasnt really necessary. It was enough standard and idiomatic Go code, learning using Go Routine adding any Cron library and maybe a Redis dependency if persistence is needed. But if you really prefer something hangfire-like, give a try to https://dkron.io/ and its GitHub repo https://github.com/distribworks/dkron , it's pretty similar. They have an open source version but also a pro license, in the same way as hangfire does.
-
Easy Distributed Cron Management
Perhaps https://dkron.io/ can solve your problem? Source at https://github.com/distribworks/dkron.
What are some alternatives?
Cloud Foundry - Deprecated: Cloud Foundry Release
DHT - BitTorrent DHT Protocol && DHT Spider.
k3s - Lightweight Kubernetes
torrent - Full-featured BitTorrent client package and utilities
Rundeck - Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
rpcx - Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱! build for cloud!