目标:
地位:完成
我的名字是Pham Vu Tuan,我是一名来自新加坡的大四本科生。这是我第一次参加谷歌代码夏令营,并为一个开源组织做出贡献。
我有GSoC导师在这个项目中帮助我奥列格·内纳舍夫和苏本万尼亚拉奇.除此之外,我在remote项目中也得到了开发人员的大力支持Devin Nusbaum和杰夫·汤普森.
当前版本的Jenkins Remotin必威国际有限公司g基于TCP协议。如果失败,代理连接和构建也会失败。流量优先级和多代理通信也存在问题,这会影响Jenkins的稳定性和可伸缩性。
该项目旨在开发一个插件,以添加对流行的消息队列/总线技术(Kafka)的支持,作为Jenkins中的容错通信层。必威国际有限公司
插件源代码可以在中找到github.
该插件为社区提供了有用的特性:
除了现有的方法(如JNLP或SSH构建代理插件.
帮助解决Jenkins中主、代理之间TCP协议通信存在的问题。必威国际有限公司
帮助解决Jenkins中的流量优先级和多agent通信问题。必威国际有限公司
Kafka本身不像ActiveMQ或RabbitMQ那样是一个队列,它是一个分布式、复制的提交日志。这有助于消除传统队列系统中的消息传递复杂性。
我们需要支持数据流作为需求,而Kafka在这方面很擅长,这是RabbitMQ所缺乏的。
Kafka据说有更好的可扩展性和来自开发社区的良好支持。
该项目由多个组成部分组成:
Kafka客户端库-新的命令传输实现,生产者和消费者客户端逻辑。
远程处理Kafka插件-使用KafkaGlobalConfiguration、KafkaComputerLauncher和KafkaSecretManager实现插件。
Remoting Kafka Agent -一个自定义的JAR代理,带有Remoting JAR包和自定义的Engine实现,用于与Kafka建立通信通道。代理也被包装成Docker图像在DockerHub。
所有组件都与Docker Compose打包在一起。
下图是当前体系结构的概述:
通过这种设计,master不再使用直接TCP通信与agent通信,所有通信命令都通过Kafka传输。
安装项目作为一组Docker Compose组件:Kafka集群,Jenkins控制器(带有插件)和自定义代理。必威国际有限公司
创建一个带有命令传输实现的PoC,以支持Kafka,其中包括命令调用、RMI、类加载和数据流。
对远程处理和核心进行必要的更改,使其具有可扩展性(如果需要)。
决定卡夫卡是否适合作为最终实施。
支持主代理连接的安全性。
卡夫卡认证/授权(必威国际有限公司詹金斯- 51472,必威国际有限公司詹金斯- 51473).
特工机密(必威国际有限公司詹金斯- 51470).
改进卡夫卡生产者-消费者模型,确保可靠性(必威国际有限公司詹金斯-51942).
发布alpha版本并处理反馈(必威国际有限公司詹金斯-51713).
发布1.0版本的插件(必威国际有限公司詹金斯-52483).
支持使用Jenkins配置作为代码插件远程处理kafka插件(必威国际有限公司必威国际有限公司詹金斯- 51471).
准备就绪的演示设置(必威国际有限公司詹金斯-51711).
插件的基本测试自动化(必威国际有限公司詹金斯-52540).
将插件实现信息添加到远程文档(必威国际有限公司詹金斯- 52514).
Bug修复和清理工作(必威国际有限公司詹金斯-52044,必威国际有限公司詹金斯- 52079,必威国际有限公司詹金斯-52422).
我们已经为这个插件设置了一个准备就绪的演示。你可以按照下面的步骤运行插件的演示指令.演示中的功能:
Docker Compose启动预配置的主实例和代理实例,它们使用Kafka启动器自动连接。
Kafka使用SSL加密。
实例中几乎没有演示作业,因此用户可以在代理上启动作业。
localhost:9000中支持Kakfa Manager,以支持对Kafka群集的监视。
云API实施(必威国际有限公司詹金斯- 51474).
卡夫卡频道的分块功能(必威国际有限公司詹金斯-51709).
在remoting Kafka Agent中停止绑定remoting必威国际有限公司詹金斯-51944).
消费者池,NIO选项(必威国际有限公司詹金斯- 52199).
支持多台Kafka主机实现容错通信(必威国际有限公司詹金斯-52542).
断开与Kafka的连接后,代理恢复将继续运行作业(必威国际有限公司詹金斯-52954).
使Zookeeper配置可选,以支持临时主题创建(必威国际有限公司詹金斯- 52870).