发展之势:
随便最几年微服务和Serverless(Lambda)的盛行,把原来一套系统可以按业务,人员或业务架构拆分得更加详细,让开发人员更专注于自己负责微服务或Serverless模块,同时利用DevOps管理流程,这样可以提升业务的快速迭代。虽然微服务或Serverless确实是可以提升业务的持续服务和可靠性,但是业务复杂度,管理难度和管理成本随之提升,如何做好业务故障排查,特别是性能和稳定是很多企业开发及运维团队所关心的,AWS为此提供一项易用且可视化的服务X-Ray,借助 AWS X-Ray,开发人员能够轻松分析其生产行为及具有端到端跟踪功能的分布式应用程序。您可以使用 X-Ray 确定性能瓶颈、边缘情况错误以及其他难于检测的问题。X-Ray 支持各种类型或大小的开发或生产应用程序,从简单的异步事件调用和三层 Web 应用程序到使用微服务架构构建的复杂的分布式应用程序。这让开发人员能够快速找到并解决其应用程序中出现的问题,并改善最终用户对其应用程序的体验。
功能介绍:
X-Ray是可以很好的与AWS近几年特别流行的技术(ECS/Lambda等)集成,尤其是未来有可能成为主流技术的Lambda,它可以提供数据跟踪,数据轨迹采集与性能分析等可视化技术服务。以下我们来介绍现在及未来都比较常用的API化的应用,API化采用基础技术就是Lambda,而优化Lambda和业务代码的工具服务是X-Ray,我们通过一个例子来说明X-Ray如何帮助开发与运维团队提升业务体验。
1)X-Ray对Python for Lambda的请求分析
AWS Lambda 上的 Python – 对 Lambda 函数配置启用 X-Ray 以分析传入请求。添加X-Ray SDK for Python以分析 AWS 开发工具包、HTTP 和 SQL 客户端。
有多个 AWS 服务提供 X-Ray 集成。集成服务提供不同级别的集成,可以包括采样和向传入请求添加标头、运行 X-Ray 守护程序以及自动将跟踪数据发送到 X-Ray。
主动分析 – 采样和分析传入请求。
被动分析 – 分析已经由其他服务采样的请求。
请求跟踪 – 对所有传入请求添加一个跟踪标头,并将其向下游传播。
工具 – 运行 X-Ray 守护程序以从 X-Ray 开发工具包接收分段。
业务例子配置:
1)API化的业务架构图:
使用 AWS X-Ray 检测无服务架构工作流程中的响应瓶颈,将其运行时间提高了70%。
使用 X-Ray 的日志聚合器和可视化视图发现执行时间较长的 lambda ,使用 X-Ray 的明细功能,检查该 lambda 的 CloudWatch 日志。
2)配置X-Ray
在 AWS Lambda 函数上配置 X-Ray 集成
-
打开 AWS Lambda 控制台
-
选择您的函数
-
选择 Configuration,在调试和错误处理下,选择启用活动跟踪
-
切换到 X-Ray 的可视化仪表盘
-
条件筛选
-
问题定位
从上图可以看出: lambda 自身的业务功能较复杂调用频率过高;lambda 读取数据库的延时过高。 - 重写 lambda 并优化数据库后,使用 X-Ray 服务映射来跟踪并验证更新是否得到期望的性能提升
从以上例子可以看出,X-Ray是一个很不错的服务,可以帮助开发及运维团队节约大量的业务排障时间,快速提升业务体验。