zato oracle_将智能API与Python和Zato集成

zato oracle

随着在云驱动的世界中连接的应用程序和API的数量急剧增加,以一种优雅的方式集成它们(在架构的清晰度,运行时性能以及系统所采用的流程的复杂性方面)可以扩展的挑战成为挑战。部分,以及保持集成环境正常运行所需的维护级别。

随着时间的流逝,其应用程序自然增长的组织倾向于陷入难以管理的依赖,无法识别的需求和无法被触摸的隐藏信息流的蜘蛛网,以免看似无关的部分突然停止运行。 这可能发生在每个人身上,实际上在某种程度上是可以预期的。

很自然地认为,一个人可以轻松地在这里和那里管理几个API。

It's natural to think that one can easily manage just a couple of APIs here and there .

然而,仅仅从对一个系统或另一个系统的几次调用开始就具有一个吸引人的特征,即不可避免地变成一个紧密耦合的参与者网络,这些参与者的进一步使用或发展几乎是不可能的:

A couple of APIs turns into a closely coupled network of actors

在当今始终联系在一起的在线API领域中,这一点变得尤为明显,而在线API的重要性在不断扩大。

介绍IRA服务

为了满足需求并引入订单,您可以使用基于LGPL发行的,基于PythonZato集成平台等软件,该软件可从GitHub免费获得,以及一套特定OS的软件包

Zato促进了将要集成的系统和API的明确分离,并强调在IRA服务之外构建可替代点对点通信的集成。

IRA服务是在分布式集群环境中运行的一项功能,其属性为:

  • 有趣
  • 可重用
  • 原子

实际上,这无非就是将Unix哲学带到了由应用程序和API而不是单个系统程序组成的更高层次的进程中。

在最初提出该哲学的三十年后,不同的设置仍然使原理保持不变-可组合,而不是将所有内容捆绑在一起。

虽然将软件设计为可重用和原子的构建块是可以理解的,但是有趣可能会引发一个明显的问题-有趣意味着什么?

答案又是两个问题:

  • 在接下来的十年或更长时间里,您是否真的愿意每天自己使用这种服务?
  • 您能否向非技术利益相关者,最终为开发提供资金的人员充分说明该服务的目的,并让他们确认他们可以清楚地了解该服务为方程式带来了什么价值?

如果利益相关者恰好是技术人员,那么可以改写第二个问题-您是否可以在一个Tweet中解释服务的目标,并且有一半的技术关注者转推或喜欢它?

通过Unix哲学的观点和命令行工具查看它,这很有趣:

  • 您可以使用ls命令吗? 还是您强烈认为这是R'lyeh的产物 ,需要尽快替换?

  • 在向了解什么目录的人解释mkdir命令的目的时,您会遇到任何问题吗?

现在,没有什么有趣的:

  • 如果所有的shell命令都只以数字表示,每周更改一次且对每个主机都是唯一的选项组合,您是否会满意? 例如,用“ ls -21”代替“ ls -la”,但用“ ls -975”代替“ ls -latrh”? 我知道,一个人会习惯所有的事情,但是您会以宽容的态度真正宽容吗?

  • 您如何不new愧地向Linux的新手解释这种版本的ls的存在?

集成API和系统也是如此-如果您遵循IRA原则,您会问自己同样的问题。 在此之上添加可重用性和原子性,您便获得了一种很好的方法来连接原本不连贯的参与者的方法。

这样的服务也可以称为微服务

实施IRA服务

现在,我们假设有一个使用OpenStack Swift的应用程序来存储有关新客户的信息,并且所有这些信息都需要分发给各方面。 考虑IRA的方法如下:

  • 让生产者将所有内容存储在Swift容器中
  • 使用Zato的通知定期下载最新数据集
  • 让Zato使用给定的收件人选择的协议将信息分发给预期的收件人

此处满足所有IRA假设:

  • 生产者只生产输出,而不关心真正消耗它的人—如果有更多的接收者随时间推移,则什么都不会真正改变,因为Zato会知道它,而不是生产者

  • 同样,接收者可以方便地假定它们被调用的事实意味着已经准备好新数据。 如果有时间有新的生产者,那很好,他们只会接受Zato的有效载荷。

  • Zato可以在各种格式或协议(例如XML,JSON,SOAP,REST,AMQP或任何其他格式)之间转换信息

  • 因此,通知新客户的服务是:

    • 有趣-易于解释
    • 可重复使用-可插入各种生产者或消费者
    • 原子-它只会做一件事并且做得很好
from zato.server.service import Service

class CreateCustomer(Service):
    def handle(self):

        # Synchronously call REST recipients as defined in Redis
        for conn_name in self.kvdb.conn.smembers('new.customer'):
            conn = self.outgoing.plain_http[conn_name].conn
            conn.send(self.cid, self.request.raw_request)

        # Async notify all pub/sub recipients
        self.pubsub.publish(self.request.raw_request, '/newcust')

这是在实践中使用IRA的另一个示例,因为Zato自己的体系结构允许一个开发服务而无需担心输入来源的细节-上面的大多数代码也可以在不同的上下文中重复使用,代码本身不会改变。

剩下的只是填写几个表格并单击“确定”以将更改传播到整个Zato群集中的问题。

The rest is a matter of filling out forms

Filling out forms

该代码+只需几次GUI单击就足以在所有感兴趣的各方之间分配Swift通知,尽管在它之上还具有命令行界面和平台自己的公共admin API

这就是确认IRA原则的IRA服务:

  • 有趣-罢工可以在多种情况下派上用场
  • 可重用-可在许多情况下使用
  • 原子—做好自己的工作并精益求精

这样的服务现在可以形成更高级别的业务流程,所有这些流程又都是有趣的,可重用的和原子的-该方法可以从最低级别扩展到最高级别。

要联系Zato项目,可以按邮件列表 IRCTwitterLinkedIn组进行放置。

强烈鼓励每个人分享他们的想法,想法或代码,以确保灵活性和易用性的方式最好地集成现代API。

翻译自: https://opensource.com/business/15/5/api-integrations-with-python-and-zato

zato oracle

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值