1作者: tasn2 个月前
大家好,我是 Tom,很高兴向大家介绍 Diom (<a href="https:&#x2F;&#x2F;diom.com" rel="nofollow">https:&#x2F;&#x2F;diom.com</a>) - 一个后端组件服务器。 Diom 包含了常用的后端基础组件的实现,例如缓存、键值存储、幂等性、限流、队列和流,未来还会增加更多组件。 在构建 Svix 的过程中,我们不得不一次又一次地重新实现每个人都需要重新实现的后端基础组件。我们还一直在构建自定义组件(基于现有的基础设施,如 Redis 和 Postgres)和添加更多专用服务(如 RabbitMQ 和 Kafka)之间权衡,而后者需要我们进行配置、操作、备份和维护。对于我们来说,情况更糟的是,Svix 是开源的,因此额外的基础设施意味着给我们的客户增加了负担。 六个月前,我们最终决定构建 Diom,并专注于开发者体验和易于操作。它是开源的、自包含的,并使用 fjall(一种类似于 RocksDB 的基于 LSM 树的快速存储)来管理自己的存储。它不需要任何外部运行时依赖(不需要 redis/postgres/kafka/etc),并支持作为单节点或基于 Raft 的高可用集群运行。 Diom 的目标是为开发者提供他们需要的后端基础组件,而无需在 Redis、RabbitMQ、Kafka 之上编写自定义代码,甚至根本不需要运行它们。 它目前支持缓存、键值存储、幂等性、限流、队列和流。我们还计划添加身份验证令牌、分布式设置、功能标志和其他常用组件;以及为现有组件添加更多功能。 Diom 更注重易于操作而不是规模,因此它无法达到 Kafka 级别的吞吐量或像 Redis 和 Dragonfly 那样非常高的 QPS。然而,大多数产品和开发者无论如何也不会每秒处理数 TB 的数据和数十亿个事件。也就是说,Diom 仍然可以为它的目标用例实现高性能,因为它实现了更高级别的原语而不是基本操作。此外,由于这些原语与存储位于同一个进程中,因此网络往返次数更少,从而保持了较低的延迟。 它使用 HTTP/2 和 msgpack 作为线上传输协议(在浏览器中运行良好),并提供用于 Python、TypeScript、Rust、Go 和 Java 的 CLI 和 SDK,未来还会增加更多。 我们已经将 Svix 完全移植到 Diom 上,并在我们的一个预发布环境中持续运行测试和模拟工作负载。计划在今年晚些时候正式发布(GA),一旦我们将 Svix 的生产工作负载转移过去。 代码仓库(MIT 许可证):<a href="https:&#x2F;&#x2F;github.com&#x2F;svix&#x2F;diom" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;svix&#x2F;diom</a> 文档:<a href="https:&#x2F;&#x2F;docs.diom.com" rel="nofollow">https:&#x2F;&#x2F;docs.diom.com</a> 在线演示:<a href="https:&#x2F;&#x2F;diom.com&#x2F;playground" rel="nofollow">https:&#x2F;&#x2F;diom.com&#x2F;playground</a> 我很高兴终于分享 Diom,并希望听到大家的想法,以及您希望我们构建哪些其他组件!也希望大家帮忙想想这个东西叫什么。我们目前称之为“组件平台”,但我不喜欢这个名字。
1作者: bizer2 个月前
在过去的几个月里,我一直在尝试用人工智能编写尽可能多的代码。但一旦一个项目达到一定规模,整个代码库就会变得难以阅读,就像一个在沙发底下放了十年的毛线团一样。<p>如果氛围编码真的像宣传的那么好,那么对于人类程序员来说,是否有值得研究的项目呢?