博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zato oracle_将智能API与Python和Zato集成
阅读量:2537 次
发布时间:2019-05-11

本文共 2458 字,大约阅读时间需要 8 分钟。

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发行的,基于的集成平台等软件,该软件可从免费获得,以及一套于 。

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

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

  • 有趣
  • 可重用
  • 原子

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

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

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

答案又是两个问题:

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

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

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

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

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

现在,没有什么有趣的:

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

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

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

这样的服务也可以称为 。

实施IRA服务

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

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

此处满足所有IRA假设:

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

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

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

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

    • 有趣-易于解释
    • 可重复使用-可插入各种生产者或消费者
    • 原子-它只会做一件事并且做得很好
from zato.server.service import Serviceclass 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通知,尽管在它之上还具有和平台自己的 。

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

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

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

要联系Zato项目,可以按 , 或进行放置。

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

翻译自:

zato oracle

转载地址:http://dppzd.baihongyu.com/

你可能感兴趣的文章
两台电脑如何实现共享文件
查看>>
组合模式Composite
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
我的第一篇CBBLOGS博客
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>
form表单序列化后的数据转json对象
查看>>
[PYTHON]一个简单的单元測试框架
查看>>
iOS开发网络篇—XML数据的解析
查看>>
[BZOJ4303]数列
查看>>
数据库TCPIP协议开了,但还是远程连不上
查看>>
一般处理程序在VS2012中打开问题
查看>>
C语言中的++和--
查看>>
thinkphp3.2.3入口文件详解
查看>>
POJ 1141 Brackets Sequence
查看>>
Ubuntu 18.04 root 使用ssh密钥远程登陆
查看>>
linux 单机跨进程通信
查看>>
Servlet和JSP的异同。
查看>>
虚拟机centOs Linux与Windows之间的文件传输
查看>>