大型的开源项目,无一不是由大量的商业公司/商业目的推进,不可能由个人凭兴趣在业余时间完成 。虽然SkyWalking在早期的一到两年是个人基于兴趣在推进,但随着社区的壮大和商业价值的体现,开放、包容、具有扩展性的架构是必不可少的特性 。Apache SkyWalking作为Apache顶级项目,基于商业友好的Apache 2.0开源协议,在设计上也充分考虑了定制化及二次开发的可能性 。
SkyWalking根据探针和服务端的不同特性,使用了两种不同的模块化机制 。
Java探针端,Java使用了较为紧凑的实现,主要使用SPI将核心服务隔离成替换状态,用户可以像开发plugin一样,只需将新的服务实现放在plugin目录中,即可实现自动替换 。
后端(OAP Server)使用YML定义的模块化 。SkyWalking将模块化定义为模块(Module)和实现(Provider)两部分 。模块为抽象概念,提供对外服务方法的定义和声明;Provider需要实现这些服务方法,同时声明此实现依赖的其他模块 。值得注意的是,模块本身不声明依赖,依赖由实现(Provider)声明 。这种模式允许用户替换和新增所需的模块,并进行组织 。
轻量化设计
SkyWalking在设计之初就提出了轻量化的设计理念 。APM虽然是运维端的核心系统,但放在整套业务架构下,属于二线支撑系统,不承担系统主要业务功能 。而绝大多数的分析系统要求大数据作为其核心技术,但是技术团队应该都了解,大数据天然具有维护难度大和门槛高的问题 。基于此背景,SkyWalking核心要求能够在非大数据架构下,使用最轻量级的jar包模式,形成强大的分析能力、扩展能力和模块化能力 。
2 SkyWalking的优势
SkyWalking的优势在于它紧跟当前的技术发展趋势,保证同一套APM系统适用于传统架构和云原生架构 。另外,在技术设计理念上,SkyWalking提供了较大的包容性和扩展性,适用于不同的用户场景和定制需求 。
2.1 传统分布式架构与云原生的一致性支持
随着近十年服务化和微服务化的进程,以RPC和HTTP服务为通信技术核心,以注册中心作为服务注册与服务发现的架构,已经成为国内成熟的微服务“传统”架构 。主流技术有Spring Cloud、Apache Dubbo等 。SkyWalking从2015年项目诞生之初,就把这种传统的分布式架构及自动探针作为最为核心的功能 。SkyWalking可以无缝支持已经稳定的分布式服务架构,方便替换传统的监控手段,而无须增加运维团队和开发团队的工作量 。
同时,从2018年起,由google、Lyft和CNCF的Istio与Envoy组成的Service Mesh方案开始流行,提供了在Kubernetes上创新的分布式服务管理、监控和安全管理能力 。SkyWalking项目团队也一直关注这一动向,在Istio 1.0.4发布的同时发布了SkyWalking 6的测试版本,并在3个月后开始发布SkyWalking 6稳定版本 。在6.x版本中,SkyWalking针对Istio和Envoy组成的Service Mesh方案提供了核心适配能力 。用户可以认为Service Mesh构成了SkyWalking的一种新的语言无关的探针形式 。利用SkyWalking的后端OAP平台以及UI,可以对Service Mesh管理中的服务提供同样的依赖拓扑、服务性能指标、告警等能力 。90%以上的配置与使用其他语言探针(如Java探针)时完全一致 。
这也是首个在开源软件中实现语言探针和Service Mesh一致性解决方案的项目 。为不同公司的技术栈提供统一的监控能力,更有利于公司在未来系统架构升级中保持监控系统的一致性 。这个一致性不单单指SkyWalking的使用,更是对于用户在SkyWalking构建的生态系统,如告警平台、AIOps、指标基线计算系统、弹性计算等,保持一致性 。
2.2 易于维护
SkyWalking一直坚持以易于维护为核心需求,不引入过多的技术栈,以免成为一个过于复杂的监控系统 。这其中的深层逻辑在于,监控系统作为二线甚至三线系统,应该利用有限的环境资源,提供尽可能大的监控价值,同时尽可能降低对于运维的要求 。在SkyWalking集群模式下,大量公司每日需要采集超过百亿级别的监控数据及明细,SkyWalking不要求使用复杂的大数据平台,以减少系统的入门难度和维护负担 。同时SkyWalking的构建集群架构比较简单,用户只要针对自己的数据量,对于不同的存储平台(如MySQL、TiDB或Elasticsearch等)具备基本的集群运维能力,就可以轻松监控百亿级的流量系统 。
2.3 高性能
SkyWalking并不会因为追求简单、易于维护而降低对性能的要求 。SkyWalking内置一套针对分布式监控专门设计的可扩展流计算框架(参见第7章),该计算框架针对监控数据特别设计了特定的流程,并利用字节码技术来兼顾扩展性和系统性能 。
推荐阅读
- |什么样的和田玉牌子才算的上顶级?
- 将军峰大元帅,四川洪雅将军乡茶叶农业标准化项目经过验收
- 6个顶级可视化Python库
- 2020年顶级深度学习框架:PyTorch与TensorFlow
- 智能硬件不止树莓派,八款优秀智能硬件开源项目推荐
- Java分布式项目,你使用的哪种注册中心?为啥?
- 开化龙顶茶来源传说,开化龙顶茶特色园项目被列入国家产业试点,开化龙顶茶
- 电池|生姜竟然也能造电池?这一项目可能需要一个“王多鱼”
- 红茶的采制及加工技术,浙江加大工夫红茶科研项目力度
- Apache中.htaccess文件利用的总结与新思路拓展
