本文共 2458 字,大约阅读时间需要 8 分钟。
zato oracle
随着在云驱动的世界中连接的应用程序和API的数量急剧增加,以一种优雅的方式集成它们(在架构的清晰度,运行时性能以及系统所采用的流程的复杂性方面)可以扩展的挑战成为挑战。部分,以及保持集成环境正常运行所需的维护级别。
随着时间的流逝,其应用程序自然增长的组织倾向于陷入难以管理的依赖,无法识别的需求和无法被触摸的隐藏信息流的蜘蛛网,以免看似无关的部分突然停止运行。 这可能发生在每个人身上,实际上在某种程度上是可以预期的。
很自然地认为,一个人可以轻松地在这里和那里管理几个API。
然而,仅仅从对一个系统或另一个系统的几次调用开始就具有一个吸引人的特征,即不可避免地变成一个紧密耦合的参与者网络,这些参与者的进一步使用或发展几乎是不可能的:
在当今始终联系在一起的在线API领域中,这一点变得尤为明显,而在线API的重要性在不断扩大。
为了满足需求并引入订单,您可以基于LGPL发行的,基于的集成平台等软件,该软件可从免费获得,以及一套于 。
Zato促进了将要集成的系统和API的明确分离,并强调在构建可替代点对点通信的集成。
IRA服务是在分布式集群环境中运行的一项功能,其属性为:
实际上,这无非就是将带到了由应用程序和API而不是单个系统程序组成的更高层次的进程中。
在最初提出该哲学的三十年后,不同的设置仍然使原理保持不变-可组合,而不是将所有内容捆绑在一起。
虽然将软件设计为可重用和原子的构建块是可以理解的,但是有趣可能会引发一个明显的问题-有趣意味着什么?
答案又是两个问题:
如果利益相关者恰好是技术人员,那么可以改写第二个问题-您是否可以在一个Tweet中解释服务的目标,并且有一半的技术关注者转推或喜欢它?
通过Unix哲学的观点和命令行工具查看它,这很有趣:
您可以使用ls命令吗? 还是您强烈认为这是 ,需要尽快替换?
在向了解什么目录的人解释mkdir命令的目的时,您会遇到任何问题吗?
现在,没有什么有趣的:
如果所有的shell命令都只以数字表示,每周更改一次且对每个主机都是唯一的选项组合,您是否会满意? 例如,用“ ls -21”代替“ ls -la”,但用“ ls -975”代替“ ls -latrh”? 我知道,一个人会习惯所有的事情,但是您会以宽容的态度真正宽容吗?
您如何不new愧地向Linux的新手解释这种版本的ls的存在?
集成API和系统也是如此-如果您遵循IRA原则,您会问自己同样的问题。 在此之上添加可重用性和原子性,您便获得了一种很好的方法来连接原本不连贯的参与者的方法。
这样的服务也可以称为 。
现在,我们假设有一个使用OpenStack Swift的应用程序来存储有关新客户的信息,并且所有这些信息都需要分发给各方面。 考虑IRA的方法如下:
此处满足所有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群集中的问题。
该代码+只需几次GUI单击就足以在所有感兴趣的各方之间分配Swift通知,尽管在它之上还具有和平台自己的 。
这就是确认IRA原则的IRA服务:
这样的服务现在可以形成更高级别的业务流程,所有这些流程又都是有趣的,可重用的和原子的-该方法可以从最低级别扩展到最高级别。
要联系Zato项目,可以按 , 或进行放置。
强烈鼓励每个人分享他们的想法,想法或代码,以确保灵活性和易用性的方式最好地集成现代API。
翻译自:
zato oracle
转载地址:http://dppzd.baihongyu.com/