workers-chat-demo
krustlet
workers-chat-demo | krustlet | |
---|---|---|
6 | 21 | |
800 | 3,530 | |
2.8% | 0.2% | |
4.2 | 3.1 | |
about 2 months ago | 7 months ago | |
JavaScript | Rust | |
BSD 3-clause "New" or "Revised" License | Apache License 2.0 |
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.
workers-chat-demo
-
asyncio + multiprocessing. Issues with pickling complex python objects.
This idea was also sparked from cloudflares chat room example using something on their platform the call durable objects. But instead of offloading each chat room to a durable object I wanted to try to offload it to a process.
-
When Serverless really shines (and when to avoid it)
If you want to see a code example of a stateful serverless worker, this durable object chat demo is kinda neat: https://github.com/cloudflare/workers-chat-demo
-
Ask HN: What's a global, low throughput, low latency message bus
If you wanted something where you could get pretty far without spending any money, Cloudflare Workers + Durable Objects would be an interesting path. You would have to implement some of the functionality yourself, but there are some examples.
Like this example chat app: https://github.com/cloudflare/workers-chat-demo/blob/master/... It supports private chat rooms, which is somewhat analogous to a pub sub topic.
- OAuth with Cloudflare Workers on a Statically Generated Site
-
Cloudflare’s Pace of Innovation
Durable Objects[0] let you store data on the edge and provide a lot more than a key/value store. This is a primitive you could build arbitrary databases on top of.
The edge chat demo[1] is a working, scalable real-time chat service hosted entirely on the edge using Workers + Durable Objects, even featuring per-user cross-room rate limiting. As written, it can support millions of chat rooms and users, and it's about 500 lines of code.[2]
The benefit here is that it's much easier to build scalable distributed systems on Workers and Durable Objects than on other platforms. The fact that they run on the edge as close to end users as possible is just a bonus.
[0] https://blog.cloudflare.com/introducing-workers-durable-obje...
[1] https://edge-chat-demo.cloudflareworkers.com/
[2] https://github.com/cloudflare/workers-chat-demo/blob/master/...
(Disclosure: I'm the tech lead for Cloudflare Workers.)
-
DoS Attacks against my Online Game
Have you looked into using a serverless pub/sub model, like Cloudflare's Workers KV? The example they give is a simple IRC-like distributed chatroom (https://github.com/cloudflare/workers-chat-demo), but theoretically it may work for games too.
Player state can be stored in a decentralized key-value store that Cloudflare manages. They absorb all the DDoS and handle replication between edge nodes. You don't see any of that. https://www.cloudflare.com/products/workers-kv/
Or maybe it was their Durable Objects product... I forget how that's different from Workers KV: https://developers.cloudflare.com/workers/learning/using-dur...
Then each game client uses a worker to access that KV, and Cloudflare will route that worker to its nearest edge node and retrieve the state from there (which was previously replicated a moment ago, internal to Cloudflare's infrastructure).
https://workers.cloudflare.com/
I don't know if this would result in acceptable latency, but it could help with DDOS at least.
krustlet
-
WASM Instructions
Oh it’s certainly looking like that IMO.
You can run wasm in k8s: https://krustlet.dev/
Docker itself can run wasm: https://wasmlabs.dev/articles/docker-without-containers/
There are a few serverless runtimes based on wasm: https://wasmcloud.com/
A lot of those are powered by wasmtime or WasmEdge.
If you’re wanting to be able to just pull down a random app and run it as wasm, that’s inherently harder with wasm, because you have to recompile, and amazing compiling stuff is always harder than it should be. For example I compiled jq to wasm to other day, so you dont have to worry (as much) about the CVEs that was issued recently. https://github.com/rockwotj/jq-wasi
- The advantage of WASM compared with container runtimes
-
Crafting container images without Dockerfiles
It can, kubevirt is a project for running VMs https://kubevirt.io/ and there have been more esoteric things like WASM (https://github.com/krustlet/krustlet).
- The Python Paradox
-
I Don’t wanna use Docker or kubernetes
Or you can run Krustlet instead of Kubelet. That makes it so you can only run WebAssembly on the cluster - so no Go, no Python, only Rust!
-
Why did the Krustlet project die?
But the project seems to have died: https://github.com/krustlet/krustlet/graphs/contributors
-
Does anybody have a use-case for Scala WASM compilation target?
There are some cloud providers that are starting to offer wasm support. Docker is currently working on wasm https://docs.docker.com/desktop/wasm/ There is also krustlet https://krustlet.dev/ which lets you run wasm in kubernetes
- How I got involved in the Rust community
-
Are V8 isolates the future of computing?
> If one writes Go or Rust, there are much better ways to run them than targeting WASM
wasm has its place, especially for contained workloads that can be wrapped in its strict capability boundaries (think, file-encoding jobs that shouldn't access anything else but said files: https://news.ycombinator.com/item?id=29112713).
> Containers are still the defacto standard.
wasmedge [0], atmo [1], krustlet [2], blueboat [3] and numerous other projects are turning up the heat [4]!
[0] https://github.com/WasmEdge/WasmEdge
[1] https://github.com/suborbital/atmo
[2] https://github.com/krustlet/krustlet
[3] https://github.com/losfair/blueboat
[4] https://news.ycombinator.com/item?id=30155295
- Krustlet: Kubernetes Kubelet in Rust for Running WASM
What are some alternatives?
miniflare - 🔥 Fully-local simulator for Cloudflare Workers. For the latest version, see https://github.com/cloudflare/workers-sdk/tree/main/packages/miniflare.
quilkin - Quilkin is a non-transparent UDP proxy specifically designed for use with large scale multiplayer dedicated game server deployments, to ensure security, access control, telemetry data, metrics and more.
youki - A container runtime written in Rust
Sprocket
yew - Rust / Wasm framework for creating reliable and efficient web applications
e2core - Server for sandboxed third-party plugins, powered by WebAssembly
brython - Brython (Browser Python) is an implementation of Python 3 running in the browser
wrangler-legacy - 🤠 Home to Wrangler v1 (deprecated)
Transcrypt - Python 3.9 to JavaScript compiler - Lean, fast, open! -
awesome-paas - A curated list of PaaS, developer platforms, Self hosted PaaS, Cloud IDEs and ADNs.