开发与运维数据问题之实现商业版和开源版在发送可观测数据方面的差异如何解决

简介: 开发与运维数据问题之实现商业版和开源版在发送可观测数据方面的差异如何解决

问题一:如何实现商业版和开源版在发送可观测数据方面的差异?


如何实现商业版和开源版在发送可观测数据方面的差异?


参考回答:

为了实现商业版和开源版在发送可观测数据方面的差异,定义了开源版的ProfileSender类,并为其提供了虚函数SendToProfileProject用于发送数据。在商业版中,通过ENTERPRISE宏控制实例化EnterpriseProfileSender类,该类继承自ProfileSender并重写SendToProfileProject方法以实现商业版特有的发送逻辑。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627568

问题二:ProfileSender类中的GetInstance方法是如何根据版本返回不同实例的?


ProfileSender类中的GetInstance方法是如何根据版本返回不同实例的?


参考回答:

ProfileSender类中的GetInstance方法通过ENTERPRISE宏来判断当前是商业版还是开源版,并据此返回不同的实例。如果是商业版,则实例化EnterpriseProfileSender类并返回其指针;如果是开源版,则实例化ProfileSender类本身并返回其指针。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627567


问题三:为了分离商业版和开源版代码,进行了哪些代码重组织工作?


为了分离商业版和开源版代码,进行了哪些代码重组织工作?


参考回答:

为了分离商业版和开源版代码,进行了以下重组织工作:将与商业版配置拉取、鉴权、可观测数据发送、特殊指标监控以及非配置级参数管理相关的代码分别从原有的类中剥离出来,形成新的类如EnterpriseConfigProvider、EnterpriseSLSControl、EnterpriseProfileSender、ShennongManager等,并将这些商业版特有的功能代码放在单独的文件中。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627566


问题四:iLogtail新架构应该如何设计?


iLogtail新架构应该如何设计?


参考回答:

虽然知道原有架构不合理,且对发展方向有一个大概的认知,但是新架构究竟如何设计却是一个值得商榷的问题。显然,对于任何领域,没有输入自然就不会有输出。得益于日常对其他主流可观测数据采集器架构的持续调研和学习,笔者对现代可观测流水线的基本理念和设计思想有了一个基本的认知。在设计iLogtail的新架构时,主要采用如下原则:

• 对于可观测流水线的通用概念(如数据类型和流水线定义等),iLogtail要尽量做到和领域内其它竞品保持一致,避免独树一帜给用户迁移带来不便和困惑;

• 对于架构实现,不能简单照搬其他主流可观测数据采集器的架构,而是在吸收其设计思想的前提下,针对iLogtail自身的特点(如双语言实现)进行原创设计,适合自己的才是最好的。

• 对于iLogtail的自身优势(如C++的高性能和配置热加载),在完整保留的同时,还需要将原本阻止优势发挥的限制尽可能地去除,使得自身优势能够在更多的场景中发挥作用,提升产品的核心竞争力。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627565


问题五:iLogtail确定好新架构后,如何分阶段来完成架构升级?


iLogtail确定好新架构后,如何分阶段来完成架构升级?


参考回答:

新架构与原有架构的区别较大,升级涉及到的模块众多,工作量大。显然,一口气完成架构升级是不可行的,必须分阶段分模块进行,在CI的配合下确保每一个模块的重构都是符合预期的。那怎么分阶段呢?这里就走过一些弯路,因为从架构设计的角度,我们会习惯性地从外往里进行思考(即按照上文实践一节从后往前的顺序),但这会陷入一个层层依赖的问题。例如,在重构配置管理模块的时候,会依赖Pipeline类和PipelineManager类。为此,需要优先重构这两个类。但是重构这两个类的时候,又会依赖各种插件类的实现。按照这个顺序进行下去,最终的依赖便是PipelineEvent类。显然,按照这个顺序进行下去,相当于一口气完成架构升级,因此根本不可行。正确的做法是由里向外进行重构,先重构PipelineEvent类,再重构插件类,以此类推最后重构Application类,即按照上文介绍的顺序。借助这个顺序,就可以将整个架构升级过程分成至少6个大阶段,每个阶段都可以单独CI而不会影响既有功能的正常工作。但是,想要正确执行这种顺序,就必须要求对目标架构有一个完整清晰的认知和详细的设计。如果对目标架构的认识只停留在粗框架的层面,那必然无法准确得到各个模块的依赖关系,从而得到并非完全正确的阶段划分,最终影响实际重构的进度和效率。任何时候,想清楚了再做永远是事半功倍的基本前提,对于架构升级来说尤甚。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627564

目录
相关文章
|
7天前
|
运维 Prometheus 监控
别再盲选了!开源运维工具选型这事儿,咱得说人话
别再盲选了!开源运维工具选型这事儿,咱得说人话
48 7
|
存储 JSON 运维
破解异构日志清洗五大难题,全面提升运维数据可观测性
新能源汽车行业车端、手机端和云端每天都会产生大量格式多样、结构复杂的日志数据,给数据处理和分析带来了很大挑战。文章中介绍了日志数据分析五大挑战和SLS应对这些挑战的解决方案!
|
27天前
|
人工智能 运维 安全
基于合合信息开源智能终端工具—Chaterm的实战指南【当运维遇上AI,一场效率革命正在发生】
在云计算和多平台运维日益复杂的今天,传统命令行工具正面临前所未有的挑战。工程师不仅要记忆成百上千条操作命令,还需在不同平台之间切换终端、脚本、权限和语法,操作效率与安全性常常难以兼顾。尤其在多云环境、远程办公、跨部门协作频繁的背景下,这些“低效、碎片化、易出错”的传统运维方式,已经严重阻碍了 IT 团队的创新能力和响应速度。 而就在这时,一款由合合信息推出的新型智能终端工具——Chaterm,正在悄然颠覆这一现状。它不仅是一款跨平台终端工具,更是业内率先引入 AI Agent 能力 的“会思考”的云资源管理助手。
105 6
|
5天前
|
SQL 运维 自然语言处理
Dataphin智能化重磅升级!编码难题一扫光,开发运维更高效!
Dataphin重磅推出三大核心智能化能力:智能代码助手提升SQL开发效率;智能运维助手实现移动化任务管理;智能分析通过自然语言生成SQL,助力数据价值释放。未来将持续开放智能ETL、安全助手等能力,助力企业构建高效、稳定的数据资产体系。
100 0
|
1月前
|
人工智能 OLAP 数据处理
解锁数仓内AI流水线,AnalyticDB Ray基于多模ETL+ML提效开发与运维
AnalyticDB Ray 是AnalyticDB MySQL 推出的全托管Ray服务,基于开源 Ray 的丰富生态,经过多模态处理、具身智能、搜索推荐、金融风控等场景的锤炼,对Ray内核和服务能力进行了全栈增强。
|
3月前
|
人工智能 运维 关系型数据库
|
4月前
|
人工智能 运维 安全
AI大模型运维开发探索第四篇:智能体分阶段演进路线
本文探讨了智能体工程的演进历程,从最初的思维链(智能体1.0)到实例化智能体(智能体2.0),再到结构化智能体(智能体3.0),最终展望了自演进智能体(智能体4.0)。文章详细分析了各阶段遇到的问题及解决策略,如工具调用可靠性、推理能力提升等,并引入了大模型中间件的概念以优化业务平台与工具间的协调。此外,文中还提到了RunnableHub开源项目,为读者提供了实际落地的参考方案。通过不断迭代,智能体逐渐具备更强的适应性和解决问题的能力,展现了未来AI发展的潜力。
|
12天前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
14天前
|
运维 监控 数据可视化
你以为运维只管系统稳定?不,数据玩得好还能指导老板赚钱!
你以为运维只管系统稳定?不,数据玩得好还能指导老板赚钱!
44 4
|
2月前
|
运维 监控 数据可视化
斩获6.1 star,再见Crontab!这款开源定时任务管理系统让运维更高效
Gocron是一款基于Go语言的轻量级定时任务调度系统,替代传统Linux Crontab。它提供可视化Web界面管理,支持秒级调度、任务依赖配置与多节点执行。核心功能包括:1) 可视化管理;2) 精确调度规则;3) 全链路任务控制;4) 多类型任务支持;5) 完善监控通知。适用于自动化运维、系统监控、数据处理及业务自动化等场景。通过三步快速上手:一键部署、添加任务节点、创建定时任务。相比Crontab和Celery,Gocron更直观高效,适合个人与企业使用。项目地址:https://github.com/ouqiang/gocron。
227 8

热门文章

最新文章