问题描述

1)    APIM 到Event Hub 写入日志是否有数量限制,比如每秒最大写入数量;

2)    是否可以在同一个APIM配置多个Event Hub,如果可以该APIM写入日志的峰值是否可以是N倍,即和Event Hub数量的倍数;

3)    写入Event Hub 达到峰值时,对APIM的影响有哪些,比如SNAT端口消耗,带宽,后端转发,内存等,对APIM整体影响多大?

4)    如果从APIM写入Event Hub的Message峰值远远大于Event Hub可接受的峰值时,是否会对APIM造成堵塞,APIM是否有限制写入Event hub的限制?

5)    APIM写入Event hub的逻辑/原理;

问题解答

问题一:APIM 到Event Hub 写入日志是否有数量限制,比如每秒最大写入数量

Event Hub 通过 Throughput Units 配置可以接收的消息数,一个吞吐量单元的入口限制为每秒1000个事件。APIM本身作为一个客户端并不会主动限制发送消息的数量,但是实际使用中会受到内存,处理器,网络带宽的影响。[ Ingress: Up to 1 MB per second or 1000 events per second (whichever comes first). https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability#throughput-units ]

问题二:是否可以在同一个APIM配置多个Event Hub,如果可以该APIM写入日志的峰值是否可以是N倍,即和Event Hub数量的倍数

APIM输出日志到Event Hub需要事先通过REST API配置Logger:https://docs.microsoft.com/en-us/rest/api/apimanagement/2020-12-01/logger/create-or-update#loggertype,文档中并未明确指明仅能创建单个logger。我们理解的是该API可以多次调用,并指定不同的连接字符串(connectionString)以创建多个logger指向不同的EventHub。

配置方法详见 --【Azure API 管理】在APIM 中添加 log-to-eventhub 策略,把 Request Body 信息全部记录在Event Hub中 : https://www.cnblogs.com/lulight/p/15630965.html

注:可以通过调整Event Hub的 Throughput Units 来配置Event Hub 可以处理的消息数量。通常情况下,单个EventHub的处理能力已足以满足绝大多数的应用场景。如果通过创建的多个Event Hub并没别处于不同的命名空间下,那么理论上可以通过叠加提升 Event Hub 侧的处理能力上限。更多时候,需要进行压测检查具体的业务场景下性能瓶颈是否存在,并有针对性的调整客户端(APIM)与服务端(EventHub)使两者处理能力匹配。当在测试中需要通过Trace来查看Log-to-eventhub的执行情况,可以参考博文: https://www.cnblogs.com/lulight/p/15746073.html

问题三:写入Event Hub 达到峰值时,对APIM的影响有哪些,比如SNAT端口消耗,带宽,后端转发,内存等,对APIM整体影响多大?

官方文档中描述了APIM在理想状况下的处理能力(Requset per Second)

(Source: https://azure.microsoft.com/en-us/pricing/details/api-management/ )

可以确认的是APIM本身使用独立的公网IP地址,在与EventHub的连接过程中触发SNAT端口耗尽的可能行极小(https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-ip-addresses#ip-addresses-of-api-management-service)。需要注意的是APIM的处理能力会收到多种因素的影响,例如Policy的复杂程度,客户端与APIM以及APIM与后端服务之间的网络连接,并发请求数,请求payload大小等。

PS: 通过AMQP方式连接,使用的端口为5671,5672端口,所以它不会导致APIM 出口IP的SNAT消耗。https://docs.azure.cn/zh-cn/service-bus-messaging/service-bus-amqp-protocol-guide?toc=https%3A%2F%2Fdocs.azure.cn%2Fzh-cn%2Fevent-hubs%2Ftoc.json&bc=https%3A%2F%2Fdocs.azure.cn%2Fzh-cn%2Fbread%2Ftoc.json#amqp-outbound-port-requirements

问题四:如果从APIM写入Event Hub的Message峰值远远大于Event Hub可接受的峰值时,是否会对APIM造成堵塞,APIM是否有限制写入Event hub的限制?

官方文档并未给出具体说明。但根据日志收集的设计理解,logger的写入不会阻塞APIM请求处理的。

问题五:请介绍下APIM写入Event hub的逻辑/原理

官方文档未提供关于APIM内部的代码实现的具体细节。但API Management使用的是C#代码,所以可以参考C#的SDK向Event Hub发送消息。

通过代码及SDK向Event Hub发送消息,可以参考文档:https://docs.microsoft.com/en-us/dotnet/api/overview/azure/Messaging.EventHubs-readme#publish-events-to-an-event-hub

var connectionString = "<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>";
var eventHubName = "<< NAME OF THE EVENT HUB >>"; await using (var producer = new EventHubProducerClient(connectionString, eventHubName))
{
using EventDataBatch eventBatch = await producer.CreateBatchAsync();
eventBatch.TryAdd(new EventData(new BinaryData("First")));
eventBatch.TryAdd(new EventData(new BinaryData("Second"))); await producer.SendAsync(eventBatch);
}

【Azure API 管理】APIM添加Log-to-eventhub的策略后,一些相关APIM与Event Hub的问题的更多相关文章

  1. 【Azure API 管理】在APIM 中添加 log-to-eventhub 策略,把 Request Body 信息全部记录在Event Hub中

    问题描述 根据文档 https://docs.azure.cn/zh-cn/api-management/api-management-howto-log-event-hubs, 可以将Azure A ...

  2. 【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

    问题描述 使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的.在虚拟网络中,启用网络安全组(NSG:Networ ...

  3. 【Azure API 管理】为调用APIM的请求启用Trace -- 调试APIM Policy的利器

    问题描述 在APIM中,通过门户上的 Test 功能,可以非常容易的查看请求的Trace信息,帮助调试 API 对各种Policy,在Inbound,Backend, Outbound部分的耗时问题, ...

  4. 【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

    问题描述 为APIM添加AAD Group时候,等待很长很长的时间,结果添加失败.错误消息为: Write Groups ValidationError :Failed to query Azure ...

  5. 【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败

    问题描述 使用微软API管理服务(Azure API Management),简称APIM. 因为公司策略要求只能内部网络访问,所以启用了VNET集成.集成方式见: (在内部模式下使用 Azure A ...

  6. 【Azure API 管理】从微信小程序访问APIM出现200的空响应的问题中发现CORS的属性[terminate-unmatched-request]功能

    问题描述 使用微信小程序调用APIM(API Management)中的接口,发现POST和PUT请求被拦截,返回的状态码为200,但是无消息内容. 在小程序中的调用JS代码如: 通过浏览器测试得到的 ...

  7. 【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."

    API 管理 (APIM) 是一种为现有后端服务创建一致且现代化的 API 网关的方法. 问题描述 在设置了APIM客户端证书,用户保护后端API,让请求更安全. 但是,最近发现使用客户端证书的API ...

  8. 【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token

    问题描述 在APIM中配置对传入的Token进行预验证,确保传入后端被保护的API的Authorization信息正确有效,可以使用validate-jwt策略.validate-jwt 策略强制要求 ...

  9. 【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求

    问题描述 使用Azure API Management, 想对一些固定的IP地址进行访问次数的限制,如被限制的IP地址一分钟可以访问10次,而不被限制的IP地址则可以无限访问? ChatGPT 解答 ...

  10. 【Azure API 管理】APIM CORS策略设置后,跨域请求成功和失败的Header对比实验

    在文章"从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能"中分析了CORS返回空200的问题后,进一 ...

随机推荐

  1. vue中使用Object.assign导致视图不响应

    可以正常响应的 <template> <div> <ul> <li class="li-item" v-for="(item,i ...

  2. 【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的 *bytes.BytesReader 就 `invalid memory address or nil pointer dereference`

    出错的代码如下: func getEab(ctx context.Context, credentialsJSON string, old *externalAccountKeyResp) (*ext ...

  3. 【小实验】golang的if比较中的string/[]byte转换会被编译器优化

    之前做了实验,[]byte类型使用string()进行转换的时候,会产生拷贝.see: [小测试]golang中使用string()来转换[]byte数组产生了拷贝 不过今天又有了新的认识.请先看下面 ...

  4. Flask四剑客

    目录 Flask四剑客 Flask四剑客 ''' 响应字符串 响应html页面 跳转页面 返回json字符串 ''' from flask import Flask, render_template, ...

  5. # github突破7k star 即时通讯(IM)开源项目OpenIM每周迭代版本发布

    v2.0已经重构完毕,架构更清晰,代码更规范,邀请各位参与OpenIM社区建设有兴趣的同学可以加我私聊. 目前侧正在业务开发,已提供更多功能,包括群管理,阅后即焚,朋友圈,标签下发等. web端体验: ...

  6. 6.1 C/C++ 封装字符串操作

    C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...

  7. tomcat搭建本地文件服务器(windows版本)

    1.下载tomcat 2.配置环境变量 在"我的电脑"(右键)->"属性"->"高级属性设置"->"环境变量&q ...

  8. 从浏览器原理出发聊聊 Chrome 插件

    浏览器架构演进 单进程浏览器时代 单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络.插件.JavaScript 运行环境.渲染引擎和页面等.在 2007 年之前,市面上浏 ...

  9. P10033 题解

    不喜欢特判?不喜欢分讨?不喜欢被卡 corner?不喜欢证明?不喜欢动脑子? 那就看这篇题解! 感性思路 首先感性地感受一下题目宽泛的限制条件题解区各种花式的构造方法就不难想出,符合条件的序列实在很多 ...

  10. 大数据生态组件WEB UI地址汇总

    (1) Hadoop Web UI http://master-1:50070/dfshealth.html#tab-overview (2) YARN应用Web UI http://master-1 ...