(本文翻译自http://www.paperplanes.de/2013/10/18/the-smallest-distributed-system.html,由@金斌_jinbin 翻译)
Travis CI一开始仅仅是个想法,在当时甚至还有些理想化。在这个项目启动之前,开源社区还没有一个可用的持续集成系统。
随着作为开源协作平台的Github越来越被人认可,Github也非常需要可以持续对贡献代码进行测试的服务,来保证一个开源项目始终处于稳定健康的状态。
Travis CI开始于2011年初,而且很快得到了一些试用客户。到了2011年夏天,我们每天进行700次构建。所有这些构建都是在一台构建服务器上进行的。Travis CI跟Github完美集成,目前Github还是Travis CI的主要平台。
Travis CI在持续集成领域并没有惊天动地的大动作,但它的确重新定义了一些原有的概念,并增加了一些新的想法。其中一个就是你可以在你的测试运行过程中,接近实时的看这个项目的构建日志流。
最重要的一点,Travis CI允许你通过源码里的文件(.travis.yml)来对构建过程进行配置,而不是复杂的用户界面。
Travis CI一开始的架构很简单。通过Web组件可以让项目和它的构建过程可见,同时,只要一个新的commit提交到了项目,Travis CI就可以接收到来自Github的消息,从而触发构建。
另外一个叫做hub的组件,是负责处理新的提交,将他们转化成一次构建,并且处理构建任务运行和结束时产生的结果数据。
这两个组件都是跟PostgreSQL数据库打交道。
第三部分就是用来控制构建任务本身的线程集合,它们可以用来在虚拟机实例上执行一系列的命令。
本质上,hub会显得比其他部分稍微复杂一些。当hub处理构建日志时,它需要与RabbitMQ进行消息传递。日志会以chunks流的形式从控制构建任务的线程中得到。
Hub更新数据库中的日志和构建结果信息,并且hub推送他们到Pusher。通过Pusher,Travis CI可以在构建开始或结束的时候更新用户界面。
这样的架构一直维持到了2012年,当时我们每天进行7000个构建任务。我们欣喜的看到Travis CI在开源社区越来越广泛的使用,并且开始支持11种语言,包括PHP,Python,Perl,Java 和 Erlang。
随着越来越多的使用,Travis CI越来越像是一个开源项目的必备服务了。但是不幸的是,这个系统从一开始构建的时候就没有考虑过监控。
过去,总是来自社区的用户通知我们系统没有正常运行,构建任务遇到异常,或是任务信息没有被处理好。
那可真是令人尴尬。我们的第一个挑战就是给系统增加监控,数据指标和日志,让Travis CI从一个业务爱好的项目转变为一个重要的商业平台。我们准备发布Travis CI的正式生产版本。
被用户告知系统没有正常运行直到今天仍然是我最大的噩梦,我们不得不努力工作建设好数据监控,以使系统能够在出现问题的一开始就及时通知。
如果没有任何数据记录或者良好的日志,我们根本不可能去搞清我们这个小分布式系统到底发生了什么。无论是从哪个方面看,Travis CI都已经是一个分布式系统了。
加入监控指标和日志是一次循序渐进的学习过程,但是最终,它们让我们可以了解这个系统正在做什么,无论是通过图表还是日志。
这对我们而言是一个巨大的提升。可见性对于运行一个分布式系统是非常重要的。
当你写一个系统时,考虑好如何监控它。
做好监控会有助于你的系统更好的在生产环境运行,而不仅仅是通过测试。
关键是,更多的监控不仅仅是让你可以对系统更了解,你也会发现那些你以前未曾想到或见到的问题。系统更高的可见性带来更多的责任感。现在我们需要去面对这样的事实:我们对系统的错误有了更多的了解,所以我们必须更有效的工作来减少这些错误所带来的影响。
相关推荐
在线阅读可以通过提供的网址进行,文档被部署在GitHub Pages上,并利用Travis-CI进行持续集成和CDN加速。离线阅读则需通过克隆文档源码、安装依赖后进行编译。文档的PDF导出功能支持自动生成PDF文件,而技术演示工程...
8. **持续集成/持续部署(CI/CD)**:项目可能使用Jenkins、Travis CI或GitHub Actions等工具实现自动化构建和部署,以保证代码质量和快速迭代。 9. **安全性**:对于用户隐私和数据安全,系统可能实施了身份验证、...
在这个场景中,我们将探讨如何将GitHub与Travis CI集成,以实现一个基于Python项目的自动化CI流程。 1. **GitHub概述** GitHub是一个面向开源及私有软件项目的托管平台,它基于分布式版本控制系统Git。开发者可以...
10. **持续集成/持续部署(CI/CD)**:可能使用GitLab CI/CD、Travis CI或Jenkins实现自动化测试和部署,保证代码质量和项目流程的顺畅。 总的来说,"TeamAmerica"在"流星分布式黑客马拉松2015"中很可能展示了他们对...
7. **持续集成/持续部署(CI/CD)**:为了保证快速迭代和高质量交付,项目可能集成了Jenkins、GitLab CI/CD或Travis CI等工具,实现代码提交自动触发构建和测试,确保每次变更都可靠。 8. **监控与日志**:为了监控...
7. **集成服务器**:配置如Jenkins、Travis CI或GitHub Actions等集成服务器,自动化执行构建、测试和部署任务。 8. **持续反馈**:快速反馈机制对于CI至关重要。一旦构建失败,所有相关人员应立即收到通知,以便...
此外,使用持续集成工具(如Jenkins、Travis CI)可以自动化测试和部署流程。 总结来说,Api-Auditoria项目是一个在分布式系统中实现API审计的工具,采用C#编程语言,涵盖了API设计、安全、监控、日志等多个方面,...
Travis CI 是一款云托管的持续集成服务,广泛应用于GitHub等版本控制系统。它监听仓库的代码提交,当有新的代码推送到仓库时,Travis CI会自动拉取代码、构建项目、运行测试,并将结果报告给开发者。这对于团队协作...
10. **持续集成/持续部署(CI/CD)**:在JavaScript项目中,Jenkins、Travis CI或GitLab CI/CD可以自动化构建、测试和部署流程,这对于保证分布式系统在多环境中的一致性非常有帮助。 通过深入研究这个UC_Sistemas...
同时,采用CI/CD工具(如Jenkins、GitLab CI/CD或Travis CI)自动化构建、测试和部署过程,确保代码质量和快速迭代。 总之,【yun: 分布式云盘项目】是一个涵盖了分布式系统设计、文件存储、数据安全、并发控制、...
8. **版本控制与持续集成**:mqant-master这个文件名可能暗示了项目采用Git进行版本控制,并且可能支持与常见的持续集成工具(如Jenkins、Travis CI等)集成,实现自动化测试和部署。 9. **扩展性**:mqant作为一个...
10. **持续集成与持续部署(CI/CD)**:Jenkins、GitLab CI/CD和Travis CI等工具帮助实现自动化测试、构建和部署,以确保快速迭代和高质量的代码发布。 通过《大型分布式网站架构设计与实践》这本书,读者可以全面...
结合以上信息,我们可以推测`travis-cargo`可能是一个用于集成Travis CI(一个持续集成/持续部署服务)和Apache ZooKeeper的Python库,它可能帮助开发者在云环境中更便捷地管理和协调分布式系统。使用这个库,开发...
- **持续集成**: 如Jenkins或Travis CI,自动化测试和部署流程。 - **日志系统**: 如`log4cpp`或`logging`,用于收集和分析运行时信息。 ### 8. 性能优化 - **负载均衡**: 分布式系统中的节点可以动态调整负载,...
- Travis CI:云基础的CI服务,常用于GitHub项目。 5. **静态代码分析工具**: - SonarQube:用于代码质量管理,发现潜在的代码问题和漏洞。 - ESLint:JavaScript代码风格和错误检查工具。 6. **测试文档和...
SQS 是 AWS 的一个无服务器、完全托管的消息队列服务,用于解耦和扩展分布式系统。在这个应用中,当用户触发某些操作时,比如文件上传,数据会作为消息被添加到 SQS 队列。这样,后台处理程序可以从队列中取出这些...
它与Ruby社区常用的工具如GitHub、Jenkins、Travis CI等可以无缝协作,为整个开发流程带来更高的自动化程度和质量保障。 从提供的`kochiku-master`文件来看,这很可能是Kochiku项目的源码仓库。如果你打算部署和...
5. **持续集成/持续部署(CI/CD)**:为了快速迭代和确保质量,项目可能包含了Jenkins、GitLab CI/CD或Travis CI等工具的配置文件,用于自动化构建和部署流程。 6. **日志和监控**:微服务需要良好的日志记录和监控...
10. **测试与持续集成**:确保代码质量和稳定性,项目可能包含单元测试、集成测试,甚至使用Jenkins或Travis CI等工具实现持续集成,自动化构建和测试过程。 以上就是基于Python分布式爬虫打造搜索引擎涉及的主要...
11. **持续集成/持续部署(CI/CD)**:"baobaodistsys"可能利用Jenkins、GitLab CI/CD或Travis CI等工具实现自动化构建和部署流程,以提高开发效率。 12. **微服务架构**:如果"baobaodistsys"是一个大型项目,它...