大家早上好
我是erlang的新手,但我正在努力设计我在erlang上的第一个项目尽我所能.这里我需要一些关于erlang内存缓存系统的建议.
在我看来,第一选择是mnesia,但我没有任何经验.它符合我的要求吗?我的表现如何?
另一个选项是memcached - 但我担心性能低于mnesia,因为执行了额外的序列化/反序列化,因为memcached守护进程来自另一个OS进程.
任何建议都有帮助:)
Muz*_*hua 12
是.Mnesia符合您的要求.但是,就像你说的那样,使用它的工具可以深入理解它.我们在a上使用了mnesia,distributed authentication system到目前为止我们没有遇到过任何问题.当mnesia用作缓存时,它比memcached更好,原因之一是"Memcached不能保证你写的东西,你可以随时读取,因为内存交换问题和东西"(请点击这里).
但是,这意味着您的分布式系统将基于Erlang构建.事实上,在你的情况下,mnesia击败了大多数NoSQL缓存解决方案,因为他们的系统是Eventually consistent.只要可以在整个群集中确保网络可用性,Mnesia就是一致的.对于分布式缓存系统,您不希望出现从不同节点读取相同密钥的不同值的情况,因此mnesia的一致性在这里派上用场.
您应该考虑的事情是,可以为分布式系统提供集中式内存缓存.其工作方式如下:您RABBITMQ在每个群集节点上运行并可由AMQP客户端访问服务器.系统通过AMQP接口进行交互.因为缓存是集中式的,所以负责从缓存写入和读取的进程/系统确保了一致性.其他系统只是将一个密钥请求放到AMQP message bus,并且负责缓存的系统接收此消息并使用该值回复它.
我们使用Message bus Architecture using RABBITMQ了最近的系统,该系统涉及与银行系统,ERP系统和公共在线服务的集成.我们建造的东西负责将所有这些融合在一起,我们很高兴我们使用过RABBITMQ.细节很多,但我们所做的是提出一种消息格式和一种系统识别机制.所有系统都必须具有RABBITMQ客户端,用于从消息总线进行写入和读取.然后,您将为Queue每个系统创建一个读取,以便其他系统将其请求写入该队列,其名称在RABBITMQ内,与拥有它的系统相同.然后,您必须加密通过总线传递的消息.最后,您将系统绑定在大距离/跨越状态,但是通过高效的网络,您不会相信RABBITMQ对这些系统的绑定速度有多快.无论如何,RABBITMQ也可以聚集,我应该告诉你它是MnesiaRABBITMQ的功能(它告诉你mnesia有多好).
另一件事是,你应该做一些阅读并编写许多程序,直到你对它感到满意为止.
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |