python开源ESB项目Zato技术分享

来源:互联网 发布:java将map转换成json 编辑:程序博客网 时间:2024/04/19 10:54

官网:https://zato.io

个人感觉这个项目不适合在生产环境使用

安装,配置,稳定性都不好 很容易出现问题

如果非要使用ESB 建议使用java的

简介:

Zato是一个用Python编写的开源ESB和应用服务器。按照设计,它用于构建后端应用程序(即仅是API)和在SOA中整合系统

什么是ESB和SOA?

https://zato.io/docs/intro/esb-soa.html (牛逼的看这个)

http://my.oschina.net/u/618083/blog/196523 (谦虚低调的看这个吧)

http://www.infoq.com/cn/presentations/electricity-supplier-in-the-enterprise-service-bus (视频介绍)

简单来说就是因为多系统相互访问很乱 所以做了这么一个用来管理所有相互访问的系统


警告:

在现在我写这篇博客为止,Zato支持ubuntu12.04LTS和14.04LTS版本 mac和windows下是通过安装虚拟机方式实现。

亲测其他版本确实不可用 我是在12.04LTS下安装成功的



创建项目

Zato如何创建项目请参考官网的part1 和part2

part1有一篇中文的翻译各位有兴趣的可以自己搜索

备注:创建项目需要输入4次密码 前两次postgresql后两次redis redis密码空 回车跳过


web-admin界面简单描述

首先去修改admin密码 具体见update password

打开http://127.0.0.1:8183web界面登录




几个关键点说明

Load-balancer:修改Plait http 0.0.0.0  允许外部服务器访问 不改只允许本级访问

Connections中

Definitions定义配置

Channels:配置对外的接口,队列守护进程

Outgoing:Zato读取的外部接口供内部调用,定义队列


一个异步酒店同步事例项目

1.安装rabbitmq

2.配置rabbitmq


3.在Zato中定义消息队列


4.Zato中定义一个lezyo.py文件 写入消息到消息队列 备注:Zato不会自动创建队列 需要自己在终端创建好消息队列 否则无法写入 并且日志不会报错


5.把刚配置的lezyo.py文件配置到外部可访问


6.通过curl的方式或者py文件测试可用

curl localhost:11223/notice/oe -d '{}'



上面几步完成了外部写入到Zato的消息写入



7.配置一个url在消息队列回调的时候触发 通知另外一个系统有同步信息


8.Zato中定义一个回调函数调用7配置的外部访问地址


9.配置8中写的回调函数到守护进程



到此写入消息到Zato的消息队列 并触发相关调用完成

下面几步是如何开发一个信息由Zato提供给外部读取


10.开发一个对外的酒店信息

这步图片略过 自己配置

11.在Zato中配置10中设置的url


12.在Zato中定义py读取10,11中开放给Zato的接口

备注:参数通过下图11行发送 返回数据参考12行


13.开放接口供外部访问



到此 参考6中的方式 可以提供给外部访问酒店信息



14.将对外开放的接口增加安全验证 (我只看懂了第二个配置 其他的方式欢迎分享)


15.修改接口 增加安全验证


16.外部调用代码事例 在头信息中增加X_ZATO_USER和X_ZATO_PASSWORD





0 0
原创粉丝点击