2010-10-04 60 views
2

我正在研究一个解决方案,可以将大型数据库中的某些数据提供给远程网站。我的第一个想法是简单地制作一些soap web服务来从数据库中获取某些数据。这可能在短短行完成,例如像这样,与Zend_Soap_Server的用户:PHP&SOAP什么是消息代理?

class MyClass 
{ 
    public function getlastname($id) 
    { 
     $dbh = new PDO("oci:dbname=bigdb", "theuser", "thepass"); 

     $stmt = $dbh->prepare("select lastname from person where id = :id"); 

     if ($stmt->execute(array(':id',$id))) 
     { 
     $row = $stmt->fetch(); 
     return $row['lastname']; 
     } 
    } 
} 

$server = new Zend_Soap_Server(null, $options); 
$server->setClass('MyClass'); 
$server->setObject(new MyClass()); 

$server->handle(); 

现在有人告诉我,也看看消息代理/队列。我一直在看一些像apache activeMQ,stomp和zend_queue这样的软件,但是我没有真正清楚它们应该用于什么,以及在这个项目中它们会有用。

我明白我的实现可能会有一些缺点,比如当数据库没有快速响应时数据库缓慢,当数据库有大量来自网站的请求时数据库负载过重,消息代理能够防止这种并发症?

回答

1

消息代理的作用是检查请求并将其分派到正确的服务或从缓存返回响应。

如果您期待大流量,您可能应该考虑使用消息代理。

问候, 阿林

+0

是信息经纪人也有用像SOAP调用我所描述的情况吗?在这种情况下,发件人(网站)期待立即回答。 – Erikl 2010-10-05 08:54:56

+0

我不认为它与同步需要响应的事实有任何关系。经纪人只会从您的服务中获取回应并将其发送给客户。如果缓存是可能的,你可以在代理中实现,也可以添加IP过滤,输入验证,输出过滤器或任何你喜欢的。这是您如何设计应用程序的问题。就我个人而言,我会使用经纪人。 – 2010-10-05 09:14:28

+0

谢谢Alin,我认为你是对的。 – Erikl 2010-10-05 12:03:04