返回首页
最新
嗨,HN,
KafScale 是一个与 Kafka 兼容的流处理系统,原生支持 Kubernetes,S3 是数据的真实来源,代理不持有持久状态。它是用 Go 语言编写的,运行在 Kubernetes 上。
在多年操作 Kafka 并遇到相同问题后,我构建了这个系统:代理故障需要数小时才能恢复,分区再平衡会阻塞部署,磁盘容量规划永无止境。
它的工作原理:
- 生产者和消费者使用标准的 Kafka 客户端
- 代理在内存中进行缓冲,并将数据刷新到 S3
- etcd 存储元数据和消费者组状态
- 恢复意味着重启一个 Pod 并从 S3 读取数据
- 可选的 Iceberg 处理器直接从 S3 读取数据段,完全绕过代理,适用于批处理/分析工作负载
你需要放弃的:延迟为 400-500 毫秒(S3 往返时间),不支持事务,没有压缩主题。这并不是一个 100% 的替代方案。
你所获得的:代理是一次性的,扩展仅需增加副本数量,无需磁盘管理,可以直接通过 S3 ACL 访问流数据。
许可证:Apache 2.0
GitHub: [https://github.com/novatechflow/kafscale](https://github.com/novatechflow/kafscale)
一个终端图形用户界面(TUI),利用 tmux 来简化和优化终端标签的管理,使其更加便捷和友好。
他们为什么从去年开始表现得如此(拼命想要自毁)?<p>最新的例子:<p>微软Office更名为“Microsoft 365 Copilot应用”(https://news.ycombinator.com/item?id=46496465)<p>不仅这个更名荒谬,而且页面(office.com)看起来也充满了奇怪的氛围。
我制作了这个工具,以便在手机上使用我的笔记本终端会话,而不需要数据经过服务器。<p>使用命令 tt start -p mypassword → 获取一个 URL(二维码)→ 在浏览器中打开 → 输入密码 → 连接成功。<p>在你的设备和浏览器之间建立直接的 WebRTC 数据通道。<p>信令服务器是一个 Cloudflare Worker,交换约 2KB 的 SDP/ICE 元数据后就不再干预。密码从未传输 - argon2id 在两端本地生成 256 位密钥。所有终端输入输出在到达数据通道之前都经过 NaCl SecretBox 加密。底层使用 DTLS 进行双重加密,但我希望中继在信令期间也看不到任何有用的信息。<p>使用 Go 和 Pion/WebRTC,代码量约 14k 行。浏览器使用 xterm.js 和 WebCrypto 进行 argon2id。默认使用 STUN,TURN 适用于对称 NAT。<p>我的使用案例:在不在办公桌前时,通过手机检查 Claude 代码的运行情况。酒店 WiFi 和不稳定的移动数据。花了一些时间在 TURN 回退、保持连接和断开时的缓冲写入上。作为 PWA,这个工具可以从主屏幕启动,并在应用切换时保持有效。在 3G 网络下表现尚可。<p>权衡:ICE 收集在连接时需要 2-5 秒。浏览器无法发起连接,需在主机上使用 CLI。代码在 24 小时后过期。<p>单一二进制文件,无依赖。支持多会话的守护进程模式。进行了竞争检测测试、断开连接的混沌测试和网络条件模拟。加密和 WebRTC 的代码覆盖率约为 72%。<p><a href="https://github.com/artpar/terminal-tunnel" rel="nofollow">https://github.com/artpar/terminal-tunnel</a><p>附言:默认中继运行在我的 Cloudflare 免费套餐上,因此没有保证。你可以自托管 Worker 或在本地运行 tt relay。
Hi HN,<p>Package repositories don't need to be complicated. They're just static files: metadata indexes and the packages themselves. Yet somehow hosting your own feels like you need dedicated infrastructure and deep knowledge of obscure tooling.<p>repogen is an SSG for package repos. Point it at your .deb/.rpm/.apk files, it generates the static structure, you upload to S3 or any web host. Done. $0.02/month to host packages for your whole team.<p>It supports Debian, RPM, Alpine, Pacman, and Homebrew. Has incremental mode for updating repos without redownloading everything. Handles signing. Very alpha, but it works. Would love to get feedback!
构建Doo是因为我厌倦了为每个API编写200行身份验证的样板代码。
示例(完整API):
```rust
import std::Http::Server;
import std::Database;
struct User {
id: Int @primary @auto,
email: Str @email @unique,
password: Str @hash,
}
fn main() {
let db = Database::postgres()?;
let app = Server::new(":3000");
app.auth("/signup", "/login", User, db);
app.crud("/todos", Todo, db); // Todo = 你定义的任何结构
app.start();
}
```
结果:
- POST /signup 具有电子邮件验证 + 密码哈希(自动来自 @email, @hash)
- POST /login 使用JWT
- 完整的CRUD端点:GET, POST, GET/:id, PUT/:id, DELETE/:id
- 编译为本地二进制文件
状态:Alpha v0.3.0。身份验证、CRUD、验证和Postgres正常工作。正在积极修复bug。
在生产环境中使用之前,你需要看到什么?