小编Mik*_*kel的帖子

Android:蓝牙打印

我必须为Android平板电脑开发一款App,要求将文件打印到蓝牙打印机.通过蓝牙打印是我的应用程序最重要的功能之一.不幸的是,关于这个主题的信息并不多,所以我想征求意见.

据我所知,不可能在Android上使用蓝牙打印(使用本机调用),因为Android的BT Stack不实现BPP(基本打印配置文件).做一点研究我发现了以下替代方案:

软件开发工具包/库

  • Sybase-iAnywhere-Blue-SDK-for-Android:支持大量BT配置文件的商业SDK.由一家大公司开发(我猜是很好的支持).我还没有找到很多关于这个的信息.是否有一些关于如何使用此SDK的文档,API或示例?有谁知道如何下载演示版?(上次我试过时链接好像坏了)
  • iPrint SDK:商业SDK.他们网站上的一些例子,但没有别的.
  • Zebralink:仅适用于Zebra打印机(自然).其他制造商也可能为其打印机提供API.

Google Play应用

  • PrinterShare:商业(高级密钥)
  • 蓝牙智能打印:自由轻巧.声称打印到蓝牙打印机.

理想情况下,我不希望被绑定到特定的品牌或打印机型号.现在的问题是:

  • 您认为这是最佳选择?
  • 你知道我错过的其他选择吗?
  • 我可以使用外部应用程序从我的应用程序轻松打印文件吗?
  • 我的文件应该用什么格式才能通过蓝牙打印?(PDF,图像等).
  • 有关打印机制造商和型号的任何建议吗?
  • 您是否有在Android上通过蓝牙打印的真实体验?
  • 是否有计划在不久的将来在Android上实施蓝牙打印?

在此先感谢您的帮助 ;)

android bluetooth

26
推荐指数
1
解决办法
3万
查看次数

用于租户隔离的 API 流量整形/节流策略

我将通过提供一些关于我们正在做什么和我们面临的问题的背景来开始我的问题。

  • 我们目前正在构建一个 SaaS(托管在 Amazon AWS 上),它由位于 API 网关(我们正在使用 Kong)后面的几个微服务组成。
  • 网关处理身份验证(通过具有 API 密钥的消费者)并公开我提到的这些微服务的 API,所有这些都是无状态的(没有会话、cookie 或类似的东西)。
  • 每项服务都使用 ECS 服务(在一台或多台 EC2 机器上运行的每个服务一个或多个 docker 容器)进行部署,并使用 Amazon Application Load Balancer (ALB) 进行负载平衡。
  • 所有租户(客户端)共享相同的环境,即完全相同的机器和资源。鉴于我们的商业模式,我们预计只有少数“大”租户(起初)。
  • 大多数对这些服务的请求在请求期间转化为大量资源使用(主要是 CPU)。处理一个请求所需的时间在 2-10 秒范围内(而不是像传统的“类网络”应用程序那样的毫秒)。这意味着我们每分钟处理的请求相对较少,每个请求都需要一段时间来处理(后台或批处理不是一种选择)。

目前,我们没有限制或限制租户在给定时间段内可以发出的请求数量的策略。考虑到上面的最后两个考虑因素,很容易看出这是一个问题,因为租户提出的请求超出我们的处理能力几乎是微不足道的,从而导致服务质量下降(即使对于其他租户也是如此)共享资源方法)。

我们正在考虑限制/节流或一般准备系统以“隔离”租户的策略,因此一个租户不能通过发出超出我们处理能力的更多请求来降低其他租户的性能:

  • 速率限制:定义租户可以发出的最大请求数/米。如果有更多请求到达,则丢弃它们。Kong 甚至有一个插件。遗憾的是,我们使用“按请求付费”的定价模型,而企业不允许我们使用这种策略,因为我们希望为尽可能多的请求提供服务,以便为它们付费。如果多余的请求需要更多的时间给租户,那很好。
  • 租户隔离:为每个租户创建一个隔离的环境。这个也被丢弃了,因为它使维护变得更加困难并导致资源使用率降低和成本增加。
  • 自动缩放:调出更多机器来吸收爆发。根据我们的经验,Amazon ECS 在这方面做得不是很快,当这些新机器准备好时,可能已经太晚了。
  • 请求“节流”:在 API 网关级别使用 Leaky Bucket 或 Token Bucket 等算法来确保请求以我们可以处理的速度命中服务。

现在,我们倾向于采用选项 4。我们希望以这样一种方式实施请求限制(流量整形),即所有在先前与租户商定的速率(由合同强制执行)内提出的请求都将传递给服务毫不拖延。由于我们事先知道每个租户每分钟将发出多少请求(至少是估计的),因此我们可以相应地调整我们的基础设施(加上安全裕度)。

如果突发到达,多余的请求将被排队(达到限制),然后以固定速率释放(使用漏桶或类似算法)。这将确保租户不会影响其他租户的性能,因为请求将以预定义的速率命中服务。理想情况下,允许的请求率将是“动态的”,这样租户可以使用其他不使用它们的租户的“每分钟请求数”(在安全限制内)。我相信这被称为“动态速率泄漏桶”算法。目标是最大限度地利用资源。

我的问题是:

  • 提议的策略是否可行?您知道此用例的任何其他可行策略吗?
  • 是否有开源、商业或 SaaS 服务可以提供这种流量整形功能?据我所知,Kong 或 Tyk 不支持这样的东西,所以......还有其他 API 网关吗?
  • 如果 Kong 不支持这一点,那么实现我所描述的插件之类的东西有多难?我们必须考虑到它需要一些共享状态(例如使用 Redis),因为我们正在使用多个 Kong 实例(用于负载平衡和高可用性)。

非常感谢你,米克尔。

api trafficshaping throttling rate-limiting

5
推荐指数
1
解决办法
1127
查看次数