2026/2/20 22:15:21
网站建设
项目流程
最好的建站平台,wordpress tag标签,php网站建设原码,建设银行官方网网址1、什么是rqlite#xff1f;
rqlite是一个用 Go 编写的轻量级、开源、分布式关系数据库#xff0c;存储引擎采用了SQLite。刚开始写这个数据库的时候#xff0c;我只是觉得好玩#xff0c;但后来就非常认真了。
那么#xff0c;在过去的 7 年里#xff0c;我从开源数据库…1、什么是rqliterqlite是一个用 Go 编写的轻量级、开源、分布式关系数据库存储引擎采用了SQLite。刚开始写这个数据库的时候我只是觉得好玩但后来就非常认真了。那么在过去的 7 年里我从开源数据库的开发中学到了什么2、一次只关注一个功能有一次我尝试重写HTTP服务层并替换Raft共识子系统。这两项功能是同时开发的。结果发现工作量太大引发了第二系统效应最终我放弃了这些工作。我努力了好几个星期才意识到这些实现过于庞大。于是我学习到了宝贵的一课变更越小越好一次只关注一个功能。如果需要新的设计和实现时则可以考虑增量式的方法。尽可能保证定期发布并尽快将更改合并到主分支。如果需要大量重写代码由于没有明确的中间可交付成果所以必须警惕这些变更是否符合实际的需求。3、创造力是不稳定且不可预测的大多数重要的功能都是我在周末添加的。工作时间最好保持连续和高强度能在几天内完成如此一来我在编写每一行代码之前都可以在脑海中想象系统最终的样子。有一次我利用一个周末重新设计并重新实现了HTTP API并因此而促成了rqlite 2.0的发布。还有一个周末我修改了Raft日志利用 Protobuf 编码替换掉了JSON。又在接下来的一个周末添加了压缩。然而有时我会连续几个月什么都不做。直到今天仍然是这样。我常常想如果每一天都勤奋地在数据库上工作那么一年的时间我应该能有非常大的进步。4、测试的重要性我相信广泛的测试覆盖率是高质量代码的保证。我收到用户报告说 rqlite 实例已经运行了一年多而无需重新启动。我一直在坚持测试金字塔的理念。你编写的测试用例应该尽可能接近实际代码。不要忽略测试各种失败的情况也不要试图绕过错误。测试不会因为某个神秘的原因而失败失败只是证明了你还没有完全理解自己构建的产品。一定要使用集成测试作为冒烟测试确保数据库确实能够启动而且没有漏掉任何基本的东西。只有在没有其他办法时才需要运行完整的软件实例并运行端到端的测试。而这种情况本身也代表了实现中的一些问题你的软件不够模块化或者接口的正交程度不够。单元测试非常关键。如果单元测试没有完成出色的覆盖率则永远无法保证软件的高质量。5、Go 经受住了时间的考验Go语言给我留下了深刻的印象它一直是我最喜欢的编程语言。7年来我使用Go语言编写了很多程序我仍然非常喜欢它。rqlite的开发中间停顿了几个月当再次打开代码时我发现自己仍然没有忘记Go的使用风格和模式。6、宣传非常艰难我为了挑战自己而编写了一个数据库我只是想试试看我能否创建一个有趣的系统并保证干净的设计和连贯的实现以及高品质我觉得我可以而且事实证明我确实可以这就够了。但是如果有人使用这个系统那么我会特别欣慰。然而宣传非常艰难。这款产品曾多次出现在Hacker News上。我在Meetups也谈到过。而且7年以来我在GitHub 上获得8千个赞。那么这款产品究竟好不好用呢我不知道。我应该关心吗我也不知道。7、编程很治愈编程是我的谋生手段。我非常喜欢这个工作但是编写自己的产品感觉还是不一样。作为团队的一员在编写程序时我们需要在编程风格、解决错误的策略、代码审查和功能优先级等问题上达成一致。作为一个团队构建软件涉及大量编程以外的活动。因此建立自己的项目是一种解放。你可以自由决定编程风格、功能以及修复哪些错误。而且还不用参加会议。这也说明了为什么多个开发人员一起工作的速度会减慢。如果只有一个人一个愿景那么就无需担心设计的连贯性和清晰度了。写在最后7年过去了还有很多工作要做rqlite诞生已经7年了但我还有很多工作要做。我需要改进事务、客户端库、适当的 Kubernetes 支持以及性能等等软件的魅力在于无限的扩展力而且总有可以改进的地方。永远没有尽头。文章来源网络 版权归原作者所有上文内容不用于商业目的如涉及知识产权问题请权利人联系小编我们将立即处理