12 分•作者: iluzone•3 个月前•原帖
Trifle 是一个开源的时间序列分析库,它聚合嵌套计数器,而不是存储原始事件。所有数据都存储在你已有的数据库中。在过去的10年里,我重建了两次,现在在我的日常工作中,它每天跟踪大约10亿个事件。 Trifle 于2015年开始,最初是我自己的 Rails APM。我接入了 ActiveSupport::Notifications,获得了一些小用户,还有一个较大的用户,他们的抓取应用程序导致了一切崩溃。这激发了核心想法:将计数器聚合到预定义的时间桶中,因此一次写入可以同时增加多个桶的计数。最终,APM 没有获得太多关注而逐渐消失。 后来在2021年,我在日常工作中需要分析工具。与其选择市面上的某个工具,我决定将 Trifle 的想法修订为一个更通用的分析库,借鉴了一些数据仓库的理念。最初使用 Redis,后来转向 Postgres,最终使用了 MongoDB。这就是为什么 Trifle::Stats 提供多个驱动程序,以保持 DSL 的统一性,同时存储层可以根据你的需求进行更改。在我们的案例中(大量写入,少量读取),PG 的读取速度更快,但在大规模写入时速度变慢。 嵌套值是这里的关键。单个调用如下: ```ruby Trifle::Stats.track( key: 'requests::aws::s3_uploads', values: { count: 1, status: { request.response_code => 1 }, size: payload.bytes, duration: { sum: request.duration, count: 1 } } ) ``` 这将为多个时间桶同时构建请求计数、成功率、结果状态码和持续时间。2点的单个桶看起来像这样: ```ruby { count: 14, status: { 200: 12, 500: 2 }, size: 5628341, duration: { sum: 43, count: 14 } } ``` 如果 request.duration 是以秒为单位,那么存储在 duration 下的总和也将以秒为单位。成功率不会被存储,而是通过将200的计数除以请求总数来计算。平均持续时间也是如此:总和除以计数。你可以请求一个指标键、粒度和时间范围,然后会返回每个点的聚合值。准备好用于图表或回答“过去30天的平均响应时间”。 还有一个 Series 包装器,用于在简单调用中聚合和格式化图表的值。由于构建仪表板对其他开发者来说并没有我想象中那么有趣,我构建了 Trifle App——一个带有仪表板、定期摘要和警报的可视化层。它是用 Elixir 编写的,所以我也将库移植到了 Elixir,后来又移植到了 Go 用于命令行界面。这三者是兼容的,可以在一个中写入,在另一个中读取。 今天,我们每天跟踪超过1亿个后台作业的活动,这转化为大约10亿个事件。当你愿意牺牲一些安全性(关闭 MongoDB 的日志记录和写入关注)时,它的运行成本出奇便宜。一个3节点的 Hetzner MongoDB 集群,主节点的利用率为20%,每月大约花费1000美元。 它有其局限性。负载不能包含数万个键。文档变得太大,无法高效更新。需要提前进行一些规划。此外,没有维度。有时你可以嵌套它们(国家——国家数量有限),有时为每个维度使用专用的指标键更好(客户——不断增长)。这会导致跟踪事件的数量激增,因此从1亿个作业中产生10亿个事件。 这些库是 MIT 许可的。该应用程序在 ELv2 下可获取源代码——如果你想要托管服务,可以免费自托管,也可以选择付费云服务。我在业余时间构建这个项目,没有投资者资金来支持这个免费的服务。 如果你对架构、存储模型、我的失败或我为什么还没有放弃这个项目有任何问题,欢迎随时询问。
4 分•作者: dpdave•3 个月前•原帖
作为一名从事隐私和安全工程的工程师,过去九年来,我大概进行了近1000次隐私和安全风险评估。在这项工作中遇到的痛点和烦恼促使我创建了DataParade。问卷调查很糟糕,而在你想要发布之前匆忙进行风险评估也同样令人沮丧。 PARADE代表处理活动风险评估图示环境。其基本理念很简单——一个嵌入了安全和隐私控制以及元数据的数据流图,可以回答安全或隐私风险评估中的所有问题。为什么选择数据流图?因为风险随数据流而动。而且在这种情况下,一幅图确实胜过千言万语。 早期反馈告诉我,没有人想从头开始创建另一个文档。因此,我的首要任务是构建一个代码扫描到图示的管道,允许你使用我们的命令行工具(<a href="https:&#x2F;&#x2F;github.com&#x2F;DataParade-io&#x2F;dataparade-cli" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;DataParade-io&#x2F;dataparade-cli</a>)快速生成图示。 目前这个命令行工具的功能包括: - 将命令行指向一个代码库,它会生成一个dataflow.json文件,你可以将其作为DataParade应用中的起始图示导入。扫描完成后,你将看到一个链接,指向我们的网络应用,你可以在其中进一步操作图示,继续添加安全和隐私属性的注释,并添加更多节点、数据传输和参与者。 - 没有付费墙。我目前只是想对真实代码库进行压力测试,并获取一般反馈;也许在这个过程中识别一些设计合作伙伴。 - 目前支持解析TypeScript、JavaScript、Python和Terraform(Java/Go正在开发中)。 - 扫描在本地运行。默认情况下,生成的图示会上传到工作区,以便你获得一个链接在应用中打开(使用--skip-auto-upload标志可以保持完全本地)。 - .env文件不会被读取。 - 我们不会将大型语言模型(LLM)指向你的代码库并寄希望于此。一个确定性的模式引擎直接从代码中推导出你的数据流图。可选的AI处理会丰富图示,并为每个建议提供证据;或者使用--no-ai-inference标志以仅生成确定性输出,不调用模型。 - 可选的AI增强通过我们的平台运行,因此匿名AI扫描的速率受到限制(以保持在这次压力测试期间的成本合理)。如果达到限制,可以添加--no-ai-inference标志继续进行结构性扫描,或者获取一个工作区密钥。 - 开源,GPL-3.0: <a href="https:&#x2F;&#x2F;github.com&#x2F;DataParade-io&#x2F;dataparade-cli" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;DataParade-io&#x2F;dataparade-cli</a> 我的请求是:我希望能获得关于扫描/图示在各种架构和技术中的反馈… - 你的图示是否缺少某个服务? - 它是否错误地绘制了反向流程? - 它是否在你的单体代码库上卡住了? - 你希望看到支持哪些其他语言/框架? - 还有什么其他建议可以让DataParade变得更出色? 我们看到的技术栈越多,DataParade就会变得越强大。我期待着阅读你们在评论中的反馈(无论好坏)。 提前感谢!
3 分•作者: scrygl•3 个月前•原帖
我之前有一个想法:这些语言模型现在能够写出不错的代码——足以快速原型化它们自己接口的不同工作方式。那么,为什么要单独不断地重新发明轮子呢?将它们结合起来:一个聊天界面,在这个界面中,你只需向模型请求你想要的接口更改。 这就是 Foomchat。你可以请求以某种方式呈现的消息、字体、你自己的主题、侧边栏中的计时器——你描述它,模型就会编码实现,并且实时安装在应用中。也许第一次运行时并不完美——模型仍然会误解某些内容——所以你只需解释你想要的更改,它就会更新功能,完成。 要发布一个功能,首先必须经过审核——功能本质上是任意代码注入,因此确保浏览页面上的所有内容都是安全的至关重要。一旦获得批准,功能就会在目录中公开。卡片上有一个“试用”按钮,可以在本地安装而不保存到你的账户(刷新后就会消失),还有一个安装按钮,可以使其永久生效——从那时起,无论它修改了什么,都是你网站的一部分。 发布的功能具有依赖关系跟踪和版本锁定,因此功能可以扩展其他功能,而不会因为依赖更新而破坏你的功能。 新注册用户可以获得 100 个免费积分,足够让你真正体验一下。你可以使用自己的 API 密钥,或者选择 10 美元和 20 美元的订阅方案以获得更方便的使用体验。 这是一个个人项目。我希望有人能试用它,并希望能找到实际的用途——如果有任何需要批评的地方,我真心希望能听到,以便我能改进它。