背景
之前因为要想实现一个基于DHT网络的站,就找了一些代码实现,发现一个前辈写的erlang实现,好奇也看了起来,顺便学了下erlang。
感悟
- erlang 太有趣啦,通过模拟进程创建,看到内存和CPU资源是怎么被吃掉的,給人很直觀的感覺哇~而且erlang同时支持事务和热代码替换,这两项特性碉堡了啊!!!
- erlang的并发编程模式,其实我觉得写起来还是读起来都非常的通俗,上手也不难,但有些约定有点反人类,或者语法有点多,约定俗成的东西还要靠看书来回忆…
- erlang的并发编程模式,有两个关键的地方:server端本身的loop无限循环;提供对外进行调用的rpc接口. 一开始我对rpc的概念是不清楚的,现在可好了,原来它是把客户端发送过来的请求,做了一个转发.
- 那转发给谁呢? 我猜如果是BS架构的话,rpc就转发给对应的server”进程”,然后receive轮询,等待对应的pid返回处理结果,rpc再转发回去
- erlang对网络编程的语言层面的支持非常漂亮,对字节的处理都很舒服,隐藏了很多细节
- erlang三大件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 面向消息的编程范式(函数式编程风格) OTP 行为接口(behaviour interface) gen_server [init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3] application …. …. 行为实现(behaviour implementation) 应用程序的逻辑就堆在这里面 行为容器(behaviour container) 节点式程序模型 程序树 容错 分布式 热切换
|
资料