Erlang/OTP's global module

erlang分布式之节点自动连接相关问题 最近做一个游戏跨服功能。其实对erlang来说,天生支持分布式,理论上不会有太大难题,就是一两个问题比较头疼。        问题大致是这样,当一个节点A被启动起来后,另一个节点B启动,B启动完之后,A、B节点之间忽然就自动连接了,没有ping,没有net_kernel:connect这些操作,但是他们就连接起来了。查找问题,始终得不到解决,后来朋友提醒,erlang只要是向远程节点发送消息,或 阅读详情

     from:http://blog.youkuaiyun.com/cuiweican/archive/2010/07/14/5735476.aspx

    Erlang/OTP's global 模块可用于以原子的形式为Erlang分布式系统中的进程命名,确保同一时刻分布式系统中的每个进程都有唯一的一个名字。

    现在来看看global模块在实际操作中的表现吧,我们在两个一开始并未连接的Erlang结点中注册同一个名字,然后再将这两个结点连接起来,这时,系统将监测到两个节点中有相同的名字,将注销一个节点中的名字注册。

    首先,在两个独立的节点上分别注册名字a(这两个节点分别以erl -sname one and erl -sname two启动), 在one节点进行以下操作,

Eshell V5.6.2  (abort with ^G)
(
one@cuiweican)1> global:register_name(a, self()).
yes
(one@cuiweican)2> global:whereis_name(a).
<0.37.0>

从以上可以看到名字注册成功了(register_name返回值为yes),当使用whereis_name进行查询时,正如我们所期望,该函数返回了self()的值,即进程Shell的Pid。

现在two结点上进行相同的操作。

Eshell V5.6.2  (abort with ^G)
(two@cuiweican)1> global:register_name(a, self()).
yes
(two@cuiweican)2> global:whereis_name(a).
<0.37.0>

同样,名字注册成功了。注意到这两个节点都成功注册了全局名字 a,这是因为这两个节点之间并未有连接。一旦这两节点连接,Erlang/OTP 将自动解决这种冲突,默认情况下,将会注销其中的一个名字注册。

   现在来看看当两个节点连接时,会发生什么吧。我们通过从节点one向节点two ping使两个节点为连接起来。

(one@cuiweican)3> net_adm:ping(two@cuiweican).
pong
(one@cuiweican)4>
=INFO REPORT==== 13-Feb-2009::03:05:22 ===
global: Name conflict terminating {a,<5744.37.0>}

(one@cuiweican)4> global:whereis_name(a).
<0.37.0>
(one@cuiweican)5>

从其中一个节点输出的报告信息来看,其中节点two的名字被注销了。在节点two进行查询名字a时,会发现名字a在节点one中注册。

AUTOSAR AP平台开发避坑指南:基于华为MDC的接口配置与数据通道实战 本文详细解析了AUTOSAR AP平台与华为MDC的协同开发实践,涵盖接口配置、数据通道优化及资源分配策略。通过实战案例展示如何解决传感器接入、通信协议栈优化等常见问题,提升智能驾驶系统性能。特别针对MDC平台特性,提供执行管理、调试调优及安全设计的专业指导,助力开发者高效完成ADAS/AD系统开发。 阅读详情

相关推荐

关于卷积过程中通道数如何变化问题

对卷积操作前后通道数问题进行解释,输出通道数=卷积核的个数。

你好,明天,,的博客 4316

【转】重点介绍erlang的global模块

转自:http://veniceweb.googlecode.com/svn/trunk/public/daily_tech_doc/erlang_global_20091109.txt1. 介绍: 这个全局服务是通过一个global_name_server的process来提供的,这个进程存在于每一个erlang node, 这个全局名字 服务在每个节点启动的时候自动启动. 这个模块在...

weixin_30315723的博客 316

OpenHarmony自定义Launcher

OpenHarmony源码版本:4.0release开发板:DAYU / rk3568DevEco Studio版本:4.0.0.600切换分支为OpenHarmony-4.0-Release,并下载源码。

Abner_Crazy的博客 1630

erlang gen_server start

gen_server start_link start_link(Module, Args, Options) -> Result start_link(ServerName, Module, Args, Options) -> Result Types: ServerName = {local,Name} | {global,GlobalName} | {via,Module,Via

taitoubiyan1的专栏 917

如何理解Apollo模型参考自适应控制MRAC

最近有了解到百度无人驾驶Apollo项目中的横向控制有用到MRAC(Model Reference Adaptive Control),于是便详细研究了一下这个控制方法,在此总结一下心得。 什么是MRAC MRAC控制系统的基本结构图如下所示: 它由两个环路组成,由控制器和受控对象组成内环,这一部分称之为可调系统,由参考模型和自适应机构组成外环。实际上,该系统是在常规的反馈控制回路上再附加一个参考模型和控制器参数的自动调节回路而形成。在该系统中,参考模型的输出或状态相当于给定一个动态性能指标,(通常,参考模

zmhzmhzm的博客 6480

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 392

erlang global:trans/4函数

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34345560的博客 212

LayaNative源码编译

修改好后的LayaNative2.0需要重新编译生成Android和iOS所需要的动态库文件。

末之 1359

Erlang的hidden节点

转载请注明,来自:http://blog.youkuaiyun.com/skyman_2001 Erlang的节点之间的连接默认是transitive,即当节点A连接了节点B,节点B连接了节点C,那么节点A也与节点C互相连接,这样就组成了全连通网络。但有时我们希望连接一个节点而不去连接其他节点(比如某个节点只是用来查看集群的一些信息),这时可以通过指定该节点为hidden节点来实现(在节点启动时指定-hid...

云计算? 438

亿佰特E77模块(STM32WLE5CCU6)LoRa通信实战指南:从配置到应用开发

本文详细介绍了亿佰特E77模块(STM32WLE5CCU6)的LoRa通信实战指南,从硬件配置到应用开发。基于ARM Cortex-M4内核的E77模块集成了LoRa射频前端,具备超低功耗和硬件级抗干扰特性,适用于智能农业、工业现场等场景。文章提供了开发环境搭建、LoRa参数配置、实战通信及性能优化等实用技巧,帮助开发者快速掌握LoRa通信技术。

weixin_29164185的博客 762

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 4010

erlang细节

1.系统定义并使用过的原子after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor 2.各种数据类型的排序number 3.函数的最后一个表达式返回的值即为函数返回的值Instead,

Sunface撩技术 3164

物料分类账-返工工单(自身)差异分摊逻辑

如上图所示,当月入库的全部消耗,而返工消耗的数量为100PCS,所以返工消耗占总消耗的比例为100pcs/(205pcs+100pcs)=0.327868852。备注:红色箭头的物料号为产品自己本身所产生的价差,就是返工工单所承担的差异,而我们要计算的就是这个值,所以计算价差不会包括此项。价差合计就是不包括初始分摊的价差9153.7,剩下的价差合计就是返工工单自身所承担的差异4465.21。每一次返工工单所承担的差异都会按照价差*承担比例去计算承担的差异,知道承担完所有差异。

Yeol827的博客 2494

Erlang模块使用频度列表

Armstrong分析出来的模块使用频度排名 lists (11340) io (7929) file (2974) io_lib (1799) string (949) erlang (808) ets (733) ordsets (655) dict (554) gen_tcp (475) ...

pascal4123的专栏 185

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

erlang 问题随笔

erlang otp是一个开源的软件平台,用于构建高可靠性、高可扩展性、分布式、并发的应用程序。Erlang OTP提供了许多强大的工具和库,使得开发者可以轻松地构建和部署分布式系统,例如,Erlang OTP提供了进程管理、网络通信、故障转移、代码升级等功能,这些功能使得Erlang OTP成为构建高可靠性应用程序的首选语言和平台。

qq_37232457的博客 1483

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

erlang之分布式编程入门

首先给出服务器基本代码: -module(server1). -compile(export_all). loop() -> receive {From,{store,Key,Value}} -> put(Key, {ok, Value}), From ! {server1,true}, loop(); {From,{ge,Key}} -> ...

fbher的博客 472

STM32嵌入式C++工程化实战:GDB调试、外设封装与通信排查

嵌入式C++开发是在资源受限环境下,将C++语言特性与硬件寄存器操作、中断管理、链接脚本适配相结合的系统工程。其原理在于通过extern "C"边界控制、.init_array段构造、-fno-exceptions等编译选项,实现零开销抽象与确定性运行时行为。技术价值在于提升代码可复用性与可维护性,同时避免名字修饰、堆栈溢出、Bus-Off等典型陷阱。在STM32裸机开发、外设驱动封装、CAN与串口通信稳定性排查等场景中,工程化C++骨架能显著降低调试成本。本文围绕GDB调试环境搭建、GPIO/USART类

weixin_30399155的博客 439

停止gen_server服务器

一个gen_server服务器在运行周期里面保持了一系列运行状态,erlang根据运行状态来决定是否停止该服务,今天说的是常规方法停服务的方法,至于由异常引起的服务停止,又要分为我们有没有提前做过trap_exit处理,改日再说。 先看一个简单的服务器,什么也不处理,只是启动起来。 -module(lab).-author('1628025718@qq.c...

weixin_33810302的博客 239

基于 Erlang/OTP 搭建TCP服务器

这两天在研究 erlang 如何构建 TCP 服务器,看到一篇文章,基于Erlang OTP构建一个TCP服务器,里面讲述了两种混合型Socket的实现方法,着实让人欢欣鼓舞。对比老外写的Building a Non-blocking TCP server using OTP principles,作者写的那个有点简单。本文将结合这两篇文章,继续讨论Erlang/OTP 构建TCP服务器的具体...

ve12345的博客 629

ejabberd 集群配置中的"-sname"问题

   在ejabberd集群配置中有这么一项:在/etc/ejabberd/ejabberdctl.cfg下有个ERLANG_NODE,默认是ERLANG_NODE=ejabber,如果将其改成ERLANG_NODE=name@ip (如ERLANG_NODE=ejabberd@192.168.0.1),假设现在有2台ejabberd服务器,用jab_simul压力测试工具进行测试,连到单台在线用

累积技术 沉淀经验 2124

Erlang节点short names 和long names

erl node启动方法<br />short name:erl -sname Name erl -sname Name@ShortHost<br />longname:erl -name Name erl -name Name@ShortHosterl -name Name@FullHost<br />说明:Name :: atom() || string() ShortHost :: atom() || string(), 不可含有"."。比如"myhost" FullHost :: [ShortH

zhangxinrun的专栏 2598

erlang---启动参数学习/研究

原文见于%erlang安装目录%/erts-版本号/doc/html/erl.html erlang启动参数有3种:emulator flags, flags 和plain arguments。emulator flags 是以“+”开头的,用来控制模拟器的行为。flags 是以

mochinoname的专栏 8167

解决erl -sname gandalf 运行失败

对于这个问题,我找到了我的出错原因,仅供参考。 注:如果急,在线等,请直接看后面的红色大字。 输入erl -sname gandalf后如图: 通过很多周折(包括使用crashdump_viewer:start()查看崩溃记录,网上查阅资料等等,都是竹篮打水一场空 ????),总归在反复看报错信息之后,终于将目光注意到了这串英文,原来系统早就非常明确的告诉我,问题出在: cookie!!! 解决1:使用 erl -sname gandalf -setcookie a 接着我在《erlang程序设计第二版

qq_37744360的博客 498

erlang笔记: 获取函数名,行号

[{current_function,{M,F,Arity}}]  =  process_info(self(),[current_function]), [{current_location,{M,F,Arity, [{file,FILE},{line,Line}]}}] =   process_info(self(),[current_location]). ?FILE

sdsabc2000的专栏 1535

Linux 进程控制:fork、exit、wait、exec 与手写一个 mini shell

讲清进程控制的四个动作:fork 创建(内核四件事与写时拷贝)、exit/_exit/return 终止与 8 位退出码、wait/waitpid 等待与 status 位图、exec 七接口与唯一系统调用 execve,最后用这些零件拼出一个支持 cd/export/echo 的 mini shell,并解释环境变量两张表与 putenv 浅拷贝坑。附速查表与 14 道自测题。

BIII__的博客 189
上一篇: Erlang开发建议
下一篇: Erlang OTP之terminate 深入分析
jamesjun
博客等级 码龄19年 25粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值