ApacheSkyWalking适配GaussDB开源开发任务
1 背景介绍
开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/)通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。
开始之前,开发者可以下载 开源for Huawei Wiki(参考:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。
2 需求分析
2.1 项目影响力
1. Apache SkyWalking是一个基于OpenTracing规范的、开源的APM系统,它是专门为微服务架构以及云原生架构而设计的。从 SkyWalking 6.0开始,SkyWalking将自身定义为一个观测性分析平台(Observability Analysis Platform, OAP)。
· 主要功能:
o 分布式追踪(Distributed Tracing):支持端到端的追踪,能够捕获应用程序中的每个请求链路;支持多种编程语言的自动追踪,能够自动记录每个微服务之间的通信细节,构建完整的请求路径。
o 性能指标监控(Performance Metrics Monitoring):可以监控每个微服务的性能指标(响应时间、吞吐量、错误等);支持实时采集和展示性能数据,及时反馈应用健康状态,并且能够通过内置分析引擎对大量监控数据进行聚合和分析。
o 日志分析(Log Analysis):SkyWalking 能够将应用程序的日志与分布式追踪数据进行关联,支持自动收集和存储服务端的日志信息。
o 服务拓扑图(Service Topology):SkyWalking 自动生成分布式系统中各服务间的依赖关系图,展示微服务之间的调用关系,还能动态反映每个服务的健康状态和性能指标。
o 告警(Alarming):SkyWalking 提供了灵活的告警系统,允许用户根据服务的性能指标(如响应时间、错误率、流量等)自定义告警规则,并且支持将告警信息发送到多种渠道。
o 可视化仪表盘(Visualization Dashboard):通过集成 SkyWalking UI,用户可以直观地查看各种监控数据,支持多种图表类型和深入挖掘查看具体的链路追踪信息。
o 跨集群和多云环境支持:SkyWalking 支持跨集群、多数据中心和多云环境的分布式系统监控,并且支持与Istio、Envoy等服务网格集成。
o 插件与扩展能力:SkyWalking 提供丰富的插件体系,允许用户开发和安装自定义插件,扩展其功能,并且支持主流中间件与框架。
· 所属社区:Apache 软件基金会 (Apache Software Foundation, ASF) 社区管理,它最初由吴晟(Sheng Wu)创建,后来贡献给 Apache 社区。
· 源代码地址:https://github.com/apache/skywalking。
· 官网主页:https://skywalking.apache.org/。
· 主要开发语言:Java。
· 用户使用情况:SkyWalking 被许多大型企业和组织使用,特别是在需要监控和优化分布式系统、微服务架构和容器化环境的场景中,特别是在国内的一些一线互联网企业有着广泛的使用。
· 主要商业价值:
o 性能监控与优化:SkyWalking 提供了对应用程序和服务的实时性能监控,通过收集和分析性能数据,企业可以根据实际数据优化系统架构和配置,提高系统的整体性能和稳定性。
o 故障排查与诊断:提供了强大的分布式追踪能力,能够追踪请求在多个服务间的流动,帮助快速定位和诊断故障。通过详细的追踪数据和性能指标,企业可以更准确地进行根因分析,减少故障恢复时间和维护成本。
o 可视化与报告:SkyWalking 提供了多种可视化工具,如仪表板、图表和趋势分析,帮助企业直观地了解系统状态和性能。企业可以生成各种性能报告和分析文档。
o 支持云原生架构:可以帮助企业有效地监控和管理动态的容器化环境,可以与服务网格(如 Istio)集成,提供对服务网格内部的可观察性和管理能力 。
o 成本控制:SkyWalking 可以在本地数据中心、云环境或混合环境中部署,帮助企业根据实际需求和预算进行灵活选择。
o 合规性与安全:SkyWalking 可以帮助企业实现对敏感数据的监控和合规性检查,支持数据保护和隐私政策的实施。
2. 项目数据:Fork 6.5K, Star 23.7K, Contributor 471,最近一次提交:2024-9-19 star历史(https://star-history.com/):
2.2 任务目的和范围
本任务的主要目的是让SkyWalking社区支持GaussDB数据库,帮助拓展GaussDB的影响力,也方便SkyWalking的用户能够使用GaussDB作为后端存储系统。同时,该任务可以为一些项目迁移打下基础,方便用户使用SkyWalking的时候,可以选择GaussDB作为后端存储系统。
3 工作量评估和任务分解
3.1 工作量评估
任务 |
人/天 |
完成GaussDB数据库适配功能开发 |
2 |
完成DEMO设计和代码开发 |
2 |
基于CCE容器完成环境搭建和DEMO部署、验证 |
1 |
输出开发资料和博客 |
1 |
代码推送上游社区和更新社区资料 |
2 |
总计 |
8人天 |
3.2 完成GaussDB数据库适配功能开发
· 了解主要的存储接口包括:
▪ Storage Module Interface:定义了存储的基础操作,如数据插入、查询、删除、更新等。
▪ DAO (Data Access Object):用于抽象具体的数据库操作。
· 研究现有存储实现,通过现有的存储插件 (https://github.com/apache/skywalking/tree/master/oap-server/server-storage-plugin) 来规划GaussDB 插件结构。
· 参考 SkyWalking 中其他存储系统的表结构,基于GaussDB定义存储实体,并针对 GaussDB 的特性进行优化 。实现 Data Access Objects (DAO),主要是以下几类:
· TraceDAO:处理追踪数据的存储和查询。
· MetricDAO:处理性能指标的存储和查询。
· MetadataDAO:处理服务、实例、端点的元数据存储和查询。
· LogDAO:处理日志数据的存储和查询。
· 需要针对GaussDB特性进行优化支持批量写入和高效查询。
· SkyWalking 通常会使用连接池来管理数据库连接。你需要选择并配置适合 GaussDB 的连接池。确保在配置中支持 GaussDB 的连接参数(例如地址、端口、用户、密码等),并提供配置模板。
· 编写一些功能测试,并为GaussDB 存储插件编写详细的配置和使用文档。
参考:
数据存储扩展:
Skywalking IoTDB存储插件设计:
https://blog.csdn.net/weixin_44023810/article/details/120555823
3.3 完成GaussDB演示DEMO设计
参考下面的用例图:
3.4 DEMO开发、部署和验证
参考下面的部署架构:
1. 管理前端--- 演示前端查询任务执行结果
2. 资源服务--- 演示使用SkyWalking监控资源服务,并将监控数据存储在GaussDB。
3. SkyWalking Agent和业务系统绑定在一起,负责收集各种监控数据。
4. SkyWalking oapservice是负责处理监控数据的,比如接受SkyWalking agent的监控数据,并存储在数据库中;接受SkyWalking webapp的前端请求,从数据库查询数据,并返回数据给前端。SkyWalking oapservice通常以集群的形式存在。
5. SkyWalking webapp,前端界面,用于展示数据。
6. SkyWalking的Storage存储后端使用GaussDB。
DEMO验证:
部署SkyWalking后,确保SkyWalking能够成功连接到GaussDB。由于最新版本暂没有提供Agent插件支持。我们采取主动上报数据到 SkyWalking OAP Server,可以使用SkyWalking gRPC协议上报数据:
• 引入SkyWalking 的gRPC协议文件,在pom.xml中引入SkyWalking gRPC的依赖。
• 生成相对应的gRPC客户端代码
• 实现数据上报逻辑,构造我们要上报的数据格式,通过接口将数据发送给OAP Server。
• 验证数据上报结果,首先确认SkyWalking UI页面,确认上报的数据是否已经被接收和展示。然后查看OAP Server的日志,确认是否接收到数据上报的请求,以及是否有处理异常。
• 最后在GaussDB中验证数据完整性与准确性,将服务上报的数据与GaussDB中查询到的数据进行对比,确认是否一致,结合SkyWalking UI中定位某个具体的调用链(Trace),并在GaussDB中查询对应的Trace数据,确认两者的一致性。
根据DEMO设计,完成演示功能开发和部署。要求使用CCE容器(Euler镜像)进行部署。
为了简化用户开发,提供了一个项目脚手架。开发者可以在脚手架基础上,完成DEMO功能开发。可以参考: https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/blob/main/README.md 提供的指导,可以帮助您在华为云开通资源、编译DEMO和基于DEMO做增量代码开发。
3.5 在华为云开发者论坛输出博客
访问华为云开发者论坛(参考:https://bbs.huaweicloud.com/blogs)发表博客,介绍完成这些任务的过程和心得。内容包括不限于如下内容:
·开源for Huawei的背景
·开源软件的功能介绍
·开发适配过程及碰到和解决的问题
·DEMO设计、开发、部署过程
·代码推送开源社区及互动过程
博客打上如下标签:
·开源(必选)
·开发者(必选)
·GaussDB数据库(可选)
·云数据库 GaussDB(可选)
· 鲲鹏(可选)
·昇腾(可选)
·鸿蒙(可选)
·对象存储 OBS(可选)
3.6 代码推送上游社区
将代码合并到SkyWalking官网主干代码;更新SkyWalking官网资料,包括版本说明、开发指南等。
SkyWalking仓库地址: https://github.com/apache/skywalking
4 验收材料
验收细则 |
评分说明 |
是否为验收必选项 |
结果(通过/不通过) |
开发者举证 |
功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发 |
完成GaussDB数据库适配功能开发。举证提供PR链接。 |
是 |
||
代码质量:适配华为三大根技术生态的代码质量经过工具检测达标 |
推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。 |
是 |
||
提供相关文档,比如部署文档、使用文档、配置文档等 |
根据社区要求,完善相关的开发指南和部署指导 |
否 |
||
合入到开源项目主仓:代码推送上游社区 |
代码合并到当前主干分支。举证提供代码仓库链接。 |
是 |
||
Deomo设计&开发:完成功能演示Demo的开发 |
举证提供DEMO仓库地址和DEMO开发提交记录。 |
是 |
||
Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证 |
提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的规格清单。 |
是 |
||
发布博客:发布博客介绍适配心得。 |
提供博客的地址。 |
是 |
||
制作单机版无高危开源镜像。 |
上架云商店。 |
否 |
||
单机版镜像上架时支持模板部署。 |
否 |
|||
制作集群版无高危开源镜像 |
上架云商店。 |
否 |
||
集群版镜像上架时支持模板部署 |
否 |
5 参考资料
1. 开源for Huawei介绍、环境搭建、示例项目、开发和部署指南:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview
- 点赞
- 收藏
- 关注作者
评论(0)