在过去几个月里,我一直在建立一个个人网站目录。<p>如果你在自己的域名上有主页,请提交你的网站,我会链接到你!<p>我注意到在过去一周,HN上对小型网络、独立网络等的热爱非常明显。我认为每个人都应该拥有自己的网站——即使只是为了能够按照自己的方式向机器人提供自己的内容,讲述自己的故事。<p>我怀念人工策划的目录时代,这也是我试图创建一个目录的原因。<p>我接下来的待办事项包括:添加更多网站,比如来自Derek Sivers的NowNowNow页面的公共库中的数千个网站。重新抓取网站以验证最后发布的日期,获取新的截图,并尝试地理定位,如果有“关于”部分分享这些信息的话。改善标签以便于发现。<p>任何建议都非常感谢!
返回首页
最新
大家好,分享我最近找到的替代方案,适用于 Elasticsearch、CloudWatch 等那些需要高额云费用或管理解决方案成本更高的服务。这是一种已知的模式,但可能不够广为人知:将日志写入 S3 作为持久存储,使用 Parquet 格式并通过 DuckDB 快速查询。这已经成为我所有副项目中处理日志的主要方式,我再也不用担心丢失日志,并且可能还可以免费存储。
<p>功能<p>
<pre><code> 格式无关 - 通过可配置字段提取,支持任何 JSON 日志格式
快速 - 每秒处理 28K+ 条目
高效 - 使用 Parquet + Snappy(压缩比 3.7x)
快速查询 - DuckDB 在 56K 日志上查询时间小于 50ms
兼容 S3 - 支持 AWS S3、MinIO、DigitalOcean Spaces、R2 等
分区 - 按日期/级别进行 Hive 风格的分区(无冗余的部分后缀)
自动刷新 - 可配置的自动刷新(默认:90秒)
去重 - 可选去重
</code></pre>
欢迎随时询问有关内部实现的问题。
我曾经认为,定义清晰的接口和服务之间的契约就足以维持模块化。我共享数据库,因为这似乎是最简单的选择。我错了。共享数据库或任何跨越外部组件边界的资源,会形成一种“焊接”连接,违背了任何接口定义。这会造成潜在的故障级联,随时可能发生。
许多工程师希望避免严格定义数据所有权所带来的摩擦。他们寻求一个礼貌的中立区域,以避免冲突。我认为这种做法在智识上是不诚实的。通过避免为了强制执行真正的模块化而必须进行的对抗,你构建的系统注定会在架构变化的那一刻崩溃。
我不得不通过艰难的方式学习到这一点。现在,我在每个组件的数据层强制严格分离。虽然这在前期更困难,但这是构建能够扩展而不至于在自身重压下崩溃的系统的唯一方法。如果你在共享数据库,或者以任何方式让你的领域数据跨越到外部模块,你就不是在构建一个模块化系统,而是在推迟不可避免的崩溃。