在考虑SOA (面向服务的体系结构)时,主要问题似乎是跨多个主机分配服务负载,然后管理这些主机(使主机脱机或添加新主机)
当一个服务与另一个服务通信时,它不需要知道任何主机信息(在应用程序级别)。相反,SOA环境应该能够根据主机的当前负载特征将服务请求路由到特定的主机(因此,它必须知道服务在其上运行的所有主机及其相对负载)。
是否有任何现有的开放协议可供服务向SOA环境报告它们的存在和负载。
发布于 2010-09-14 03:12:36
在读了很多之后,我真正想要的概念是Enterprise Service Bus 。
尽管它没有明确地定义一个明确的协议,但它定义了一种允许解决我上面提到的问题的体系结构风格。
发布于 2010-08-28 15:10:37
SOA是一组高级软件体系结构指南。它不是一个技术标准或建议,也与负载平衡等技术实现细节无关。
负载均衡基于寻址,寻址依赖于服务访问技术。以“SOA方式”构建的系统可能使用不同的服务访问技术,如SOAP (over HTTP,JMS等)、REST、基于JMS的异步XML消息等。
使用SOAP,服务使用者可以查找UDDI注册表来定位服务提供者。一些最新的UDDI注册中心软件提供了简单的(例如循环)负载平衡。另一个SOAP想法是使用WS-Addressing,但它并不是真正用于负载平衡。
我认为目前负载均衡的最佳位置是底层的网络传输层。使用HTTP传输,您可以选择硬件或软件(例如Apache HTTPD模块)负载均衡器,这些均衡器可以根据响应时间和超时来调整分布。使用JMS传输,最流行的JMS服务器提供某种形式的负载平衡。其他协议-如CORBA或Rendezvous -通常需要自定义解决方案。
您还可以利用ESB软件,例如Oracle Service Bus或TIBCO AMX Service Bus。使用ESB,您可以轻松地为服务实例创建负载平衡代理。可以使用一些逻辑来增强代理,例如查找数据库表以获得指导。
正如您所看到的,对于服务负载平衡,没有万能的解决方案。最佳解决方案将基于实际的实现架构和供应商的建议。
https://stackoverflow.com/questions/3582074
复制相似问题