我正在设计一个Perl中的多层应用程序,我想知道可用于我的各种IPC机制的优缺点。我正在考虑处理中等大小的数据,通常是几十千字节,但高达几兆字节,并且负载非常轻,最多每分钟有几百个请求。在Perl中适用于中等数据的最佳IPC机制是什么?
我的主要担忧是可维护性和性能(按此顺序)。我不认为我需要扩展到多个服务器,或者从我们的主平台(RHEL)移植,但我认为这是需要考虑的问题。
我能想到的下列选项:
- 临时文件 - 简单化,大概在速度和存储需求方面最坏的选择
- UNIX域套接字 - 不便于携带,不能扩展
- 互联网插座 - 便携式,可扩展
- 管道 - (?)便携式,不能扩展
Consid由于可扩展性和可移植性不是我的主要关注点,我需要了解更多。什么是最佳选择,为什么?如果您需要更多信息,请发表评论。
编辑:我会尽力给予响应更详细地ysth's questions(警告,文字的墙壁如下):
- 是读/写器在一一对一的关系,还是更复杂的东西?
- 如果读者不在那里或者忙碌,你想要发生什么?
- 反之亦然?
- 你对你的期望用法有什么其他信息?
在这一点上,我正在考虑采用三层方法,但我不确定每层中会有多少个进程。我想,我需要向左侧少向右多个进程,但也许我应该有一刀切同一个号码:
.---------. .----------. .-------. | Request | -----> | Business | -----> | Data | | Manager | <----- | Logic | <----- | Layer | `---------' `----------' `-------'
这些名字仍然是通用的,可能不会使其进入以这些形式实施。
请求管理器负责监听来自不同接口(例如Web请求和CLI(响应时间很重要)和电子邮件(响应时间不太重要))的请求。它执行日志记录并管理对请求的响应(以适合于请求类型的格式呈现)。
它发送数据有关请求到执行日志记录业务逻辑,取决于业务规则授权等
业务逻辑(如果需要),然后从数据层请求数据,它可以与我们团队控制之外的内部MySQL数据库或其他一些数据源(例如我们组织的主LDAP服务器或DB2员工信息数据库等)进行交谈(最常见)。这主要是一个简单的包装器,它以统一的方式格式化数据,以便在业务逻辑中更轻松地处理数据。
然后信息流回请求管理器进行演示。
如果,当数据流向正确,请读者忙碌,为交互请求,我想简单地等待合适的时间段,并返回超时错误,如果我没有得到在访问时间量(例如“稍后再试”)。对于非交互式请求(例如电子邮件),轮询系统可以简单地退出并再次尝试下一次调用(可能每1-3分钟一次)。
当数据在另一个方向上流动时,不应该有任何等待的情况。如果其中一个进程在尝试返回到左侧时已经死亡,我所能做的就是登录并退出。
无论如何,这是相当冗长,因为我仍然在早期的设计,我可能还是有一些糊涂的想法在里面。我提到的一些可能与的IPC系统使用的问题相关。我愿意接受关于设计的其他建议,但我试图将问题限制在范围之内(例如,也许我应该考虑折叠到两层,这对IPC来说更简单)。你怎么看?
非常感谢!我是ho ping来获得一些有用的Perl资源。 – 2009-01-11 01:22:44