# openhandx river **Repository Path**: differentman/openhandx-river ## Basic Information - **Project Name**: openhandx river - **Description**: OpenHandx-River是一个OpenHandX-Unreal Web Service标准的ESB(Enterprise Service Bus)企业服务总线产品。ESB本身是构筑企业系统的必要元素,改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。OpenHandx-River提供了一种开放的、基于Unreal的 OpenService,通过简单的服务注册,来完成粗粒度应用(服务)和其他组件之间的互操作,够满足大型异构企业环境的集成需求。OpenHandx-River以一种无缝的非侵入方式提供企业全新的服务接口,并能够在部署环境中支持任何标准。更重要的是,充当“缓冲器”的River(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离, 从而使得不同的应用程序可以同时使用同一服务,不用在应用程序或者数据发生变化时,改动服务代码逻辑。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 20 - **Created**: 2021-03-01 - **Last Updated**: 2021-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openhandx river 1. 前言 - OpenHandx-River是一个OpenHandX-Unreal Web Service标准的ESB(Enterprise Service Bus)企业服务总线产品。ESB本身是构筑企业系统的必要元素,改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。OpenHandx-River提供了一种开放的、基于Unreal的 OpenService,通过简单的服务注册,来完成粗粒度应用(服务)和其他组件之间的互操作,够满足大型异构企业环境的集成需求。OpenHandx-River以一种无缝的非侵入方式提供企业全新的服务接口,并能够在部署环境中支持任何标准。更重要的是,充当“缓冲器”的River(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离, 从而使得不同的应用程序可以同时使用同一服务,不用在应用程序或者数据发生变化时,改动服务代码逻辑。 - OpenHandx-River是将所有基于OpenHandX-Unreal开发项目的Web Service(或相同标准的Web Service)集中起来,统一包装、统一管理、统一入口构成企业服务总线,是打造数据服务为中心企业架构的重要组件。River提供了代理、点对点两种ESB服务模式,同时满足安全和高速访问的需求。在消息传递上River具备发送消息的功能,解决系统间异步的消息和数据传递。此外OpenHandx-River也是OpenHandx-Real和Unreal框架的最佳实现。 2. 主要特性 - 提供代理、点对点两种ESB服务模式 - 异步的消息和数据传递功能 - 支持ESB服务集群,负载均衡 - 支持服务调用出错自动重试 - 完善简洁的服务、用户、权限管理 - 提供集群方式的服务调用监控和内存监控的功能 3. ESB现实意义 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/154603_09015cb4_1878748.jpeg "SOA1.jpg") SOA(Service-Oriented Architecture)服务导向架构把企业系统的元素分解或者打包成一个个面向服务的模块,供外界调用。这种做法解决了企业各个跨系统间的调用、系统间的功能整合、增强了所有系统的综合能力等有重要意义。另外一个层面的意义防止信息孤岛。但是随着企业信息化建设的深入,系统之间的服务往来越来越多就会出现以下状况: ![输入图片说明](https://gitee.com/uploads/images/2018/0417/154624_a6ada24f_1878748.jpeg "SOA2.jpg") 在如此众多的企业系统部署和维护不是一个容易的事。假设有一个相对主要的系统出现故障,备用系统替换故障系统非常困难(所有依赖的系统也需要重新配置),因此依赖的相关系统也会出现故障,以此类推最终导致企业所有系统瘫痪,这是一个很恐怖的后果。 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/154648_75b327d7_1878748.jpeg "esb1.jpg") ESB企业服务总线就是将SOA服务器包装、注册、发布出来供系统间调用,所有系统只有通过ESB才能交互。ESB完成消息转换和消息路由。每个系统无需关心被调用的服务来自何方,系统间的耦合度降低。另外系统间的维护代价大大降低,比如:1、ESB总线上“电子商务”系统需要升级(或者IP和域名发生变化),单纯采用SOA方式需要将所有下游系统做适应性改变,使用ESB只需要在ESB中修改已注册的服务,其下游系统不需任何改变。2、“电子商务”系统出现故障,马上启用“电子商务”备份系统,在有ESB的情况下只需要修改注册服务而已。ESB的优势还有更多。 - ESB另外的作用是为了业务流程平台(Business Process Platform,BPP) 。虽然企业系统SOA服务为业务流程提供了充足的原材料,但是只有ESB才能提供统一和稳定的服务,为业务流程平台的实现流程服务的可配置、个性化,快速响应提供基础。 4. 代理模式 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/154825_41212592_1878748.jpeg "esb2.jpg") 代理模式是指A系统需要访问B的系统服务必须通过River ESB,River ESB充当代理了角色,完成服务转发和信息的传递。这种模式安全性较高,B系统处于企业安全性最高的生产网,并且不直接暴露给外网提供服务。A系统可以处于级别低的办公网,中间可以由River ESB完成代理功能。这样既保证了B系统的安全,又能完成系统间服务的调用,用作安全性要求较高的场合。 5. 点对点模式 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/154849_a9b00070_1878748.jpeg "esb3.jpg") 点对点模式是指A系统通过River ESB拿到B系统的相关信息,然后直接调用B系统的服务,River ESB仅仅充当了服务地址解析的角色。这样做的好处减少了网络和River ESB服务器的开销,因此性能大大提高。这种模式需要A、B系统处于同一网络,能直接互联,主要用作性能要求高的场合。River ESB提供专门的接口来调用,B系统具体部署在何处对于A系统仍然是不透明的,就象代理方式访问River ESB一样。 6. 异步消息服务 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/154909_d0c8909d_1878748.jpeg "esb4.jpg") 通常有这样一种需求,A系统需要给B系统传输消息或数据,B系统由于种种原因忙于别的事情(比如:正在做数据加工汇总等批量)不能立即响应当前服务请求。A系统可以将消息或数据上传到River ESB服务器中,B系统有空的时候再从River ESB服务器取回消息或数据。这样就完成了系统间异步消息的传输。 7. 完善简洁的服务、用户、权限管理 - 服务注册 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/155035_ce033858_1878748.jpeg "manage1.jpg") - 消息设置 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/155049_137e836f_1878748.jpeg "manage2.jpg") - 用户设置 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/155111_4c1c5773_1878748.jpeg "manage4.jpg") - 分组设置 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/160836_701d8fab_1878748.jpeg "manage5.jpg") 8. 支持ESB服务集群,负载均衡 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/155152_1279b48d_1878748.jpeg "esb5.jpg") River ESB支持集群,可以通过添加River ESB服务器得到性能上的线性提升。部署最复杂可分为两级,River ESB使用服务器集群,B系统也使用服务器集群。A系统使用River的接口方法就能完成ESB服务器均衡的调用。River ESB服务器也能均衡调用B系统的服务器。其中任何一台服务器出现故障,所有的服务调用都会转到其他服务器上,保证了River ESB的稳定性。 10.服务监控 - 集群监控-监控每台River ESB服务器的调用次数和服务内存消耗情况 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/155229_d8964e1d_1878748.jpeg "monitor1.jpg") - 服务监控-分别监控每个服务及在每台River ESB服务器的调用情况 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/155236_56bdca75_1878748.jpeg "monitor2.jpg") - 消息监控-分别监控队列及在每台River ESB服务器的分布情况 ![输入图片说明](https://gitee.com/uploads/images/2018/0417/160824_a6629c66_1878748.jpeg "monitor3.jpg")