分布式架构笔录
本系统实现多个disc节点,多个ram节点,disc节点可以去除冗余数据,ram节点则加载所需数据,
底层mnesia数据库全部透明,可以实现各个表的访问.
配置注意事项
{db_nodes,['p02_db_disc_1@192.168.1.145']},
该节点为中心disc节点,所有子节点数据库升级都应遵循中心节点schema一致;
{node_type,disc},
配置为disc节点时,那么该节点所有的数据都存在硬盘,
当然也有缓存副本一份,表的类型disc_copies;
{node_type,remote},
配置为remote节点是,那么该节点加载的所有数据都放在ram中;
{server_sn_db,[%%{1, 1}, %%表示N服的数据写到M服去
%%{2, 2}
%%{3, 3}
%%{4, 4},
%%{5, 5},
%%{6, 6},
%%{7, 7},
%%{8, 8}
{9,9},
{10,10}
]},
{Arg1,Arg2} 参数1代表Sn,参数2代表Dn
数据库升级注意事项
remote节点升级,
直接把本地的schema表删除,如果在线上进行升级,最好是先对disc节点进行升级,处理完了disc节点,则直接把所有的ram节点开启;
disc节点升级
1.新添逻辑服时,若本地有数据,则直接添加表,反之则跳过ok, 注意:若是没有数据,在加入集 群过程中会创建所有的表.此处可能会有冲突;
2.升级过程中, 走常规代码升级即可,无须做特殊处理,升级后表信息同步更新到所有节点mnesia:info().
分布式代码错误注意事项
常见的错误,schema合并错误, 正确的做法是 :如果是第一次加入集群,那么一定不能有schema表,如果存在的话一定要先删除, 先去加入集群,获得一份schema备份,然后进行修改自己的数据,再同步至各个节点 . schema合并的规则与git合并代码的规则一样,任何节点修改schema表数据时,都应该修改自己的数据,这样可以保证合并的规则进行;