首页 > 编程知识 正文

api网关改造(zuul分布式怎么联调)

时间:2023-05-04 19:17:50 阅读:103745 作者:2904

如今,企业中的API服务越来越多,对业务应用的管理质量要求也在提高。因此,在当前敏捷开发和持续交付的行业趋势下,如何快速发现和定位服务故障成为企业不能忽视的重要环节。

通过分布式跟踪和日志服务(DTLS)与API网关的结合,品云形成了以请求为维度的分布式跟踪信息机制,使开发人员和维护人员能够快速发现、定位和响应API服务的潜在和存在的问题,从而提高企业的服务质量。

本期大咖 林家乐

高级Java软件工程师平云致力于云应用的中间件开发。目前,BingoPaaS团队主要负责Pino Cloud API网关及其周边配套软件的研发项目,包括网关控制台、网关运行时、分布式跟踪和日志记录等。

00-1010在传统模式的API开发和运行过程中,开发和运行人员会在一定程度上遇到以下两个问题。

重复埋藏点

埋藏点意味着开发人员正在向一个不稳定和关键的代码点添加调试信息,这些“点”通常在外部系统中。

在分布式环境中,一个API接口的业务流程往往会执行很多远程调用和大量的SQL语句,而这些调用往往是关键性的、不稳定的。为了确保在线问题能够被定位,开发人员需要将这些点埋在各处,最后输出到日志文件中。联系平奥云的小孤独信封(ID:pingoyunzm)了解更多。

在海里捞针

当应用程序接口应用失败时(尤其是在生产环境中),传统的问题定位模式基本上是通过查看日志文件。但是,在庞大的日志文件面前,如何找到用户的“当时出错的请求”或者“那堆出错的请求的所有信息”成为了一件很有挑战性的事情,其根源在于:

日志文件太大;日志中的请求信息是穿插时间的,不是按请求划分的;开发人员缺乏关于埋点的信息;在这些条件下,往往只是找到问题信息就要花费大量的时间;如果你不提前埋葬它,你甚至可能无法找到问题的原因。联系平奥云的小孤独信封(ID:pingoyunzm)了解更多。

两大困局

围绕以上两个问题,根据平奥云多年项目经验中对企业需求的理解,我们的解决方案是通过分布式跟踪和日志服务的网关,为企业提供以API和request为维度的可视化分布式调用跟踪。

企业中的各个信息供应商可以通过接入网关轻松获取分布式跟踪能力,帮助企业进行信息运维;企业管理者还可以通过网关查看各种API信息视图,获取有价值的决策参考数据。

通话记录

API访问DTLS时,通过网关控制台的调用日志,每次都能清晰地看到请求信息,还包括所有的HTTP外部调用、JDBC执行、请求的程序日志信息等。同时,它具有多种维度的过滤能力。

通过这个界面,研发;d人员和运维人员可以轻松定位问题,包括:

哪个用户叫的?什么外部系统被称为?花了多长时间?你执行过哪些SQL?花了多长时间?每个节点的API输出什么程序日志?……参观趋势

访问趋势视图可以提供具有时间维度的图形数据,企业可以轻松看到各个API在不同时间段的使用情况。联系平奥云的小孤独信封(ID:pingoyunzm)了解更多。

误差统计

通过这个视图,您可以轻松地看到API错误的数量,并发现潜在的问题。

三种视图

93f2d851c58f?from=pc">

分布式跟踪与日志服务(DTLS)架构示意图

从上图可以看到,DTLS 的核心组件 Agent 嵌入到了网关运行时与后端应用中。通过 javaagent 技术,Agent 可以无缝嵌入到已有的应用中,负责日志生成、日志采集、日志推送等阶段,而当日志推送到日志数据库后,网关控制台便会通过查询日志数据库来获得以请求为维度的跟踪日志与程序日志。联系品高云家的小怕孤单的信封(ID:pingaoyunzzm)了解更多。

日志生成

Agent 在应用加载类时,能够动态修改类的字码节,从而在关键方法中植入跟踪的埋点代码,形成 Google Dapper 规范的跟踪日志并输出到日志文件。

目前支持的跟踪类型包括:

HTTP 接收:在 Servlet 的 service 方法 与 Filter 的 doFilter 方法中植入埋点代码跟踪请求的接到与响应信息。HTTP 发送:在 Socket 的读写方法中植入埋点代码,由于 Socket 的数据是二进制数据,所以还需要进行数据解析,如果判断的结果是 HTTP 外调,则会跟踪请求与响应信息。JDBC:拦截 JDBC 的 Connection、Statement、PreparedStatement 这几个接口的实现类,关在执行 SQL 的关键方法中植入跟踪代码,记录 SQL 的语句、执行时间、返回结果等。Logback:拦截 Logback 的日志输出方法,记录其内容。

通过以上三种类型的拦截,最后会形成两大类日志:

跟踪日志:主要包含 Servlet、Filter 处理、与 SQL 这种外部调用的接收与发送时间以及其中的内容与结果,通过记录这些信息最后形成调用日志。程序日志:通过拦截 Servlet 与 Filter 处理请求时由 Logback 产生的程序日志,最终将这些日志与上一步的跟踪日志结合起来,最终形成以请求为维度的程序日志。

目前,Agent 的拦截支持 JDK6、JDK7、JDK8。

日志采集

Agent 程序包内嵌了 Filebeat 采集程序,随 Agent 启动与关闭,实时对 Agent 产生的日志进行解析,最后根据不同的日志类型推送到相应的索引库中。联系品高云家的小怕孤单的信封(ID:pingaoyunzzm)了解更多。

日志推送

日志数据入库时,首先会经过品高云的 ES 插件 IdxRouter 对需要入库的日志数据进行索引路由。IdxRouter 支持可配置的的路由策略,通过表达式定义的方式,以日志数据内容为依据,最后将日志写到不同的索引库中。

网关通过 IdxRouter 将日志数据作应用级别的隔离,保障了企业内各 IT 供应商的数据安全。

示例如下:

idxrouter.routers:

# 路由器的名称

dtls:

actions:

# 这里指定什么 action 需要路由,不设置则表示全部路由

- "indices:data/write/index"

- "indices:data/write/update"

# 要匹配的索引(正式表达式)

from: "^(trace-log|prog-log|op-log).*$"

# 把匹配的索引重命名为新的索引名,目前支持变量

# - index 当前的索引名称

# - username 当前登录的用户名

# - date:[format] 日期,并支持定义日期变量的格式

to: "{{index}}-{{doc:log_account,username}}-{{date:yyyyMM}}"

日志查询

通过连接日志数据库,网关可以为终端用户提供多种维度的、以请求为基础的跟踪与日志信息,让用户能清晰的知道这次请求的过程。


总结

随着企业信息化程度越来越发达,品高云分布式跟踪与日志服务将致力于帮助用户在难以计数的 API 面前实现清晰、可视的统筹管理,深度发掘API的价值,进而提高企业的整体服务质量,在激烈的市场竞争中立于不败之地。


关于 BingoPaaS

品高云应用支撑平台(BingoPaaS)是结合了云计算和移动互联等技术的企业级应用全生命周期构建和交付平台,为企业应用的移动化、微服务化和容器化提供全方位的基础服务、开发运维工具和集成管理。

基于 BingoPaaS,企业能够从传统相互孤立、周期过长的应用交付形态升级为快速适应业务变化、开放共享的新一代交付模式,有效地缩短实施周期、降低实施成本和改进用户体验等,从而为企业应用整体上云提供有力支撑。


联系我们

如想了解更多品高云解决方案或索取产品文档,请联系品高云家的客服小怕孤单的信封!添加她为好友,任何需求一键直达。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。