[Erlang开发之路]回顾总结四、数据存储与共享

2019-07-29  本文已影响0人  循环不计次

一、方法

数据共享的方法如下:

二、作用域

三、原理

四、各自的特性(优缺点)

五、应用场景

1、在某个进程中频繁访问大块的数据(单进程)
进程字典>ets>mnesia(ets+dets)

2、多个进程共享某个数据(同一节点跨进程)
有两种可用方式:a.消息传递 b.ets
使用消息传递如果是大块数据的话成本太大,消息传递的流程如下:
1) 计算消息的大小,并在接收进程的内存空间中给消息分配内存;
2) 将消息的内容拷贝到接收进程的堆内存中;
3) 最后将消息的地址添加到接收进程的消息队列。
虽然ets也符合也很方便,但是如果是过多进程(成千上万)去访问同一个表会产生阻塞,因为ets有读写锁,他保证每一个操作都是原子性和隔离性的,就好像所有隔离的操作一个接一个严格按照顺序执行。

3、多个节点内的进程共享数据(跨节点)
这个时候我认为mnesia是最好的选择,每个联通的节点上都会启动一套mnesia进程,去管理每个节点上的mnesia并会和其他节点交换数据,保证大家的数据都是一致的

上一篇 下一篇

猜你喜欢

热点阅读