本文整理自:EasyAgent正式开源啦丨开源送“粽”礼

2018年,袋鼠云技术团队决定在技术社区上开源项目,为开源社区贡献力量。

同年FlinkX、FlinkStreamSQL相继上线,经过三年的发展,Star数分别达到2.2k和1.5k,位列Flink生态领域前茅,获得广泛的社区支持。

三年多的时间里,袋鼠云数栈技术团队一直以技术为核心,坚持开源开放、将数字化技术红利回馈社区的理念,不断的为大家分享成果。

在今年4月份的ArchSummit2021年全球架构师峰会上,数栈技术团队为大家分享了《云原生大数据系统架构的实践和思考》,并承诺将陆续开源数栈在云原生方面的实践。

一、EasyAgent是什么

EasyAgent是为远程统一管理主机端Agent生命周期而设计的系统,从2017年上线至今,已累计在金融、政企等生产环境平稳运行超过数千万小时。

在大规模日志收集系统里,通过EasyAgent可以集中管控10000+数量的日志采集器(如elastic filebeat),实现采集器的安装、升级、启停管理和配置更新。

在数栈运维管家EasyManager里,通过EasyAgent可以实现数栈服务的安装、升级、卸载、启停和配置管理。EasyAgent是数栈运维管家的关键组件,是实现数栈自动化部署的基础组件。

二、EasyAgent解决了什么问题

如果说现在“炙手可热”的kubernetes是容器的编排调度者,那么基于EasyAgent则可以实现对传统主机进程(服务)的编排调度。EasyAgent如同部署在各个主机上的Daemonset,以Sidecar的方式管控所纳管进程(服务)的生命周期。

在Linux里,通过service和systemctl可以实现服务(进程)的开机自启和手动启停管理,开源库supervisor也能实现对服务(进程)的守护和手动启停,但是这两者都无法原生支持对服务(进程)的远程调度和管控。

对于系统级服务(可打进OS 镜像)的服务,使用系统原生和supervisor等开源方案基本可以满足需求,但在需要动态对服务进程进行调度(安装、卸载、迁移)、启停、变更配置时,系统原生和supervisor的方案就无法满足了。

EasyAgent就是在这样的需求背景下产生的,它在服务端和网络主机之间打通了一条链路,实现对目标主机服务(进程)的编排和生命周期的管理。

在企业级软件系统交付行业里,交付软件的第一步是部署,如何快速实现自研商业软件的自动化部署和运维,往往代表着一家ToB企业的交付效率和交付成本。

成熟的商业公司选择自研自动化部署和运维工具。EasyAgent是实现数栈云原生部署的基础组件,解决了部署和监控等环节的自动化问题。

三、EasyAgent如何解决上述问题

EasyAgent是为目标主机和上层应用之间搭起一座桥梁。接下来,我们从上层应用和目标主机的角度来说明如何解决上述问题。

1、从上层应用角度

EasyAgent初衷是为远程统一管理主机端服务(进程)生命周期提供一种解决方案,所以我们首先对服务(进程)的生命周期进行了抽象。

参考service和supervisor等,我们把服务(进程)的生命周期抽象为查询、安装、配置、启动、停止、执行、卸载七个过程,对应的我们封装了七个API供上层业务系统调用,上层业务根据业务要求,组织并调用对应的API来满足需求,如自动化部署平台业务视角。

2、从远程主机角度

主机端运行的Sidecar采用Golang语言开发,可同时兼容多种OS和Arch的主机。为了降低对网络策略的要求,EasyAgent采用Push模式,主机端单向注册到server端。

主机端sidecar的部署过程即是主机的接入过程,主机接入之后sidecar与server端建立TCP即可实时响应server端发送过来的管控指令。sidecar和server之间通过gRPC进行通信,主要有三个通信接口,详情请参考:

https://github.com/DTStack/easyagent/blob/master/docs/protoc.md

#syntax = "proto3";

service EasyAgentService {

    rpc registerSidecar (RegisterRequest) returns (RegisterResponse);

    rpc readyForControl (ControlRequest) returns (stream ControlResponse);

    rpc reportEvent (Event) returns (EmptyResponse);

}

上层业务通过install安装的服务,在目标主机上以sidecar的子进程形式存在,sidecar守护并控制服务进程的启停。

同样,上层业务通过exec和config接口可远程实现服务的配置查看和更新。在sidecar端实时采集的服务状态/性能等信息通过接口reportEvent实时同步到server端,server端可选择性把服务状态/性能数据同步到第三方存储,例如Elasticsearch、influxdb等,这样可以实现对服务状态的动态观测。

四、如何体验EasyAgent

EasyAgent开源项目地址:

https://github.com/DTStack/easyagent

如果你想要更好的了解 EasyAgent 项目,前往学习Quick Star(新手教程),三步了解 EasyAgent 使用方法:

https://github.com/DTStack/easyagent/blob/master/docs/quickstart.md

如果你有任何关于扩展 EasyAgent 的奇妙想法,欢迎前往 github 社区通过 Issue 来进行讨论。

数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据,是全域、异构、批流一体的数据同步引擎。大家喜欢的话请给我们点个star!star!star!

github开源项目:https://github.com/DTStack/flinkx

gitee开源项目:https://gitee.com/dtstack_dev_0/flinkx

Agent生命周期管理框架—EasyAgent正式开源啦的更多相关文章

  1. 【开源java游戏框架libgdx专题】-04-接口介绍及生命周期

    在核心项目中包含6大与操作系统交互的接口,每个后端都实现了这6大接口. Application:运行应用程序并通知API的客户端应用程序级别的事件,提供日志记录设施和查询方法,例如,内存使用. Fil ...

  2. ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

    开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...

  3. Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本

    Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本 RC=Release Candidate,含义是"发布候选版",它不是最终 ...

  4. 你还在问android横竖屏切换的生命周期?

    本文原创,转载请注明来自xiaoQLuhttp://www.cnblogs.com/xiaoQLu/p/3324503.html 开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题. ...

  5. Hasor:生命周期

    首先引用Wiki的介绍一下Hasor:     “Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Hasor遵循简单的依赖.单一职责,在开发多模块企业项目中更加有调理.然而Has ...

  6. 重磅消息-Service Fabric 正式开源

    微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的S ...

  7. Netflix正式开源其API网关Zuul 2

    5 月 21 日,Netflix 在其官方博客上宣布正式开源微服务网关组件 Zuul 2.Netflix 公司是微服务界的楷模,他们有大规模生产级微服务的成功应用案例,也开源了相当多的微服务组件(详见 ...

  8. Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  10. Android横竖屏切换生命周期

    转自xiaoQLuhttp://www.cnblogs.com/xiaoQLu/p/3324503.html 开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题.android的前期 ...

随机推荐

  1. js调用本地程序资源-兼容所有浏览器

    在网页上通过JavaScript调用本地程序,兼容IE8/9/10/11.Opera.Chrome.Safari.Firefox等所有浏览器,在做Web开发时经常会遇到需要调用本地的一些exe或者dl ...

  2. 如何避免VMware平台ESXi主机CPU使用率的“坑”?

    https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650636818&idx=1&sn=c43f3a3146092f ...

  3. Proxmox VE安装CentOS 8.3

    相信玩服务器/VPS的对CentOS一定不陌生,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本.因为是免费的,现在很多WEB服务器和VPS都经常使 ...

  4. 掌握FastAPI与Pydantic的跨字段验证技巧

    title: 掌握FastAPI与Pydantic的跨字段验证技巧 date: 2025/04/01 00:32:07 updated: 2025/04/01 00:32:07 author: cmd ...

  5. idea的配置优化

    一.显示工具条 二.设置鼠标悬浮提示 三.显示方法分隔符 四.忽略大小写提示 五.主题设置 如果需要很好看的编码风格,这里有很多主题 http://color-themes.com/?view=ind ...

  6. 基于OpenCV与PyTorch的智能相册分类器全栈实现教程

    引言:为什么需要智能相册分类器? 在数字影像爆炸的时代,每个人的相册都存储着数千张未整理的照片.手动分类不仅耗时,还容易遗漏重要瞬间.本文将手把手教你构建一个基于深度学习的智能相册分类系统,实现: 三 ...

  7. this 和super 关键字的区别

    this关键字 (1) 每个类的每个非静态方法(没有被static修饰)都会隐含一个this关键字,它指向调用这个方法的对象:当在方法中使用本类属性时,都会隐含地使用this关键字,当然也可以明确使用 ...

  8. 理解tomcat中的BIO、NIO、AIO、ARP

    理解tomcat中的BIO.NIO.AIO.ARP tomcat作为springboot中默认的web容器,了解tomcat的运转可以帮助我们更好的去调整tomcat的参数达到更好的性能 前置知识 I ...

  9. Vitepress 建站资源汇总

    整理下使用 Vitepress 搭建博客过程中使用过的一些资源和方案 主要参考站点 Vitepress 官方文档 VitePress快速上手中文教程,这个站点扩展很全,包括静态部署选择,样式美化,第三 ...

  10. php版10大设计模式,软件工程必须掌握的姿势

    作为一个半路出家的php萌新,在看公司老大们的代码时无时无刻不在感叹,老大就是老大,写的代码低耦合.易扩展,我怎么就想不出这写完美的实现方式,最近看了韩大佬的视频后才明白,原来这些都是业界前辈们总结提 ...