**SkyWalking** 是一个开源 **APM** 系统,包括针对 **Cloud Native** 体系结构中的分布式系统的监视、跟踪、诊断功能。核心功能如下:
- 服务、服务实例、端点指标分析
- 根本原因分析,在运行时分析代码
- 服务拓扑图分析
- 服务、服务实例和端点依赖性分析
- 检测到慢速服务和端点
- 性能优化
- 分布式跟踪和上下文传播
- 数据库访问指标。检测慢速数据库访问语句(包括 **SQL** 语句)
- 报警
**SkyWalking** 目前是 **Apache** 顶级项目,作为这么优秀的开源项目,它的架构设计理念肯定会有很多值得我们借鉴。
消息中间件选型生态方法论
中间件是为应用提供通用服务和功能的软件。数据管理、应用服务、消息传递、身份验证和 **API** 管理通常都要通过中间件。中间件可以帮助开发人员更有效地构建应用。它就如同是应用、数据与用户之间的纽带。
对于具有多云和容器化环境的企业而言,中间件可以助您大规模、经济高效地开发和运行应用。
中间件是介于操作系统和在其上运行的应用程序之间的软件。中间件实质上充当隐藏转换层,实现了分布式应用程序的通信和数据管理。它有时被称为管道,因为它将两个应用程序连接在一起,使数据和数据库可在“管道”间轻松传递。通过中间件,用户可执行很多请求,例如在 **Web** 浏览器上提交表单,或者允许 **Web** 服务器基于用户的配置文件返回动态网页。
常见的中间件示例包括数据库中间件、应用程序服务器中间件、面向消息的中间件、**Web** 中间件和事务处理监视器。每个程序通常都会提供消息传递服务,让不同的应用程序可使用简单对象访问协议(**SOAP**)、**Web** 服务、表述性状态转移(**REST**)和 **JavaScript** 对象表示法(**JSON**)等消息传递框架进行通信。虽然所有中间件都执行通信功能,但公司选用的类型将取决于要使用的服务以及需要传达的信息类型。这可包括安全身份认证、事务管理、消息队列、应用程序服务器、**Web** 服务器和目录。中间件还可用于实时发生的操作的分布式处理,而不是来回发送数据。
这里我要重点分析的是消息中间件,基于消息的中间件可以说是我们日常开发中经常接触和使用的,这个属于常规技术栈。
消息中间件,那么我在这里也不会一一对比,因为网上对比的文章太多了,现阶段主流的使用频率非常高的就两款,**Kafka**和**RocketMQ**。
简单说明下场景,比较精辟。**Kafka**适用于高吞吐量,然后能够容忍一部分消息丢失,比如日志收集场景,**RocketMQ**使用于高可靠性和一定的吞吐量的业务场景,比如金融支付场景。
中间件选型的方法论其实很简单,就是要从业务场景和中间件功能的匹配度程度以及维护这么一套系统的成本来考虑。从长远的角度就是扩展和成本,从短期角度也是收益和成本。
我们通常从技术的角度,比如高可用、高性能、高并发以及高吞吐量连判断一个消息中间件,但是其实任何一个能够开源出来的中间件,其实都不差,重点是在我们怎么使用,并能够吃透原理,这样才能真正发挥它的价值,我见过好多团队在使用开源的消息中间件的时候经常吐槽,说很烂,很不好用,但是你要想想,如果是你自己写,花半年的时间写出来的消息中间件可能还不如人家的,也有可能到处都是 **bug**,因为你的没有更多的业务场景来验证,开源的消息中间件至少已经被社区的人植入了更多更广泛的业务场景。
选型消息中间件的独门秘籍我这边推荐是:借力打力,解决当下,着眼未来,考虑生态。
如果想了解更多文章详情,请关注作者的原创文章:
SkyWalking 分布式链路追踪:最新 Kafka 通信模型设计
https://gitbook.cn/new/gitchat/activity/5f2d5e65ba074467ee7ac393
往期文章精选:
分布式链路追踪 Skywalking:插件化和模块化架构设计
分布式链路追踪Skywalking Skywalking 存储客户端设计
源码分析-分布式链路追踪:Skywalking存储插件能力-elasticsearch
游侠--架构师玄学之路的独立运营者,也许文章更新频率没有那些团队运营者高,但每篇文章都是作者的心血,欢迎支持原创。
本文分享自微信公众号 - 架构师玄学之路(andy_aty)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。