22、并发系统构建与容错基础

并发系统构建与容错基础

1. 数据持久化

在构建系统时,数据持久化是一个重要的环节。对于待办事项系统,我们希望在创建待办服务器时从数据库读取数据。为了避免阻塞客户端,我们采用了两阶段初始化的方法。以下是示例代码:

defmodule Todo.Server do
  ...
  def init(name) do
    {:ok, {name, nil}, {:continue, :init}}
  end
  def handle_continue(:init, {name, nil}) do
    todo_list = Todo.Database.get(name) || Todo.List.new()
    {:noreply, {name, todo_list}}
  end
  ...
end

在上述代码中, init/1 函数的执行尽可能简短,待办列表初始化为 nil ,因为它会在 handle_continue/2 中被覆盖。这样,待办服务器在创建时就会从数据库读取数据。我们可以通过以下步骤进行测试:
1. 关闭之前的 shell 会话,开启一个新的会话。
2. 启动缓存:

iex(1)> {:ok, cache} = Todo.Cache.start()
  1. 获取 Bob 的待办列表服务器进程:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值