我在节点A上有多个Erlang应用程序,它们正在向节点B发起rpc调用,其中我有Mnesia存储过程(数据库查询函数)和我的Mnesia数据库。现在,偶尔会有150个同时进行的进程向节点B发起数据rpc调用。现在,我有几个问题:
问题1:对于每个远程节点的rpc调用,节点A是否会创建一个全新的(例如TCP/IP或UDP连接或任何它们在传输中使用的内容)连接?还是只有一个连接,所有rpc调用都共享这个连接(因为节点A和节点B已连接[与epmd进程有关])?
问题2:如果我在一个节点上有数据中心应用程序,并且在另一个节点上有集中管理的Mnesia数据库,这些应用程序的表共享相同的模式,可能会被复制、分片、索引等等,哪个选项更好:使用rpc调用从数据节点获取数据到应用程序节点,还是开发一个全新的框架,例如使用TCP/IP(就像Scalaris的故障检测器一样)来解决网络延迟问题?
问题3: 有没有人测试或者基准测试过rpc调用的效率,以便回答以下问题?
(a) Erlang节点可以将最大数量的同时rpc调用推送到另一个节点上而不会崩溃是多少?
(b) 是否有一种方法可以通过系统配置或操作系统设置来增加此数字?(在您的答案中参考Open Solaris for x86)
(c) 除了rpc之外,应用程序是否有其他方式从运行在远程Erlang节点上的Mnesia请求数据? (例如CORBA,REST [需要HTTP端到端],Megaco,SOAP等)
问题1:对于每个远程节点的rpc调用,节点A是否会创建一个全新的(例如TCP/IP或UDP连接或任何它们在传输中使用的内容)连接?还是只有一个连接,所有rpc调用都共享这个连接(因为节点A和节点B已连接[与epmd进程有关])?
问题2:如果我在一个节点上有数据中心应用程序,并且在另一个节点上有集中管理的Mnesia数据库,这些应用程序的表共享相同的模式,可能会被复制、分片、索引等等,哪个选项更好:使用rpc调用从数据节点获取数据到应用程序节点,还是开发一个全新的框架,例如使用TCP/IP(就像Scalaris的故障检测器一样)来解决网络延迟问题?
问题3: 有没有人测试或者基准测试过rpc调用的效率,以便回答以下问题?
(a) Erlang节点可以将最大数量的同时rpc调用推送到另一个节点上而不会崩溃是多少?
(b) 是否有一种方法可以通过系统配置或操作系统设置来增加此数字?(在您的答案中参考Open Solaris for x86)
(c) 除了rpc之外,应用程序是否有其他方式从运行在远程Erlang节点上的Mnesia请求数据? (例如CORBA,REST [需要HTTP端到端],Megaco,SOAP等)