栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

MIT Distributed Systems 课程笔记2(RPC and threads)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MIT Distributed Systems 课程笔记2(RPC and threads)

RPC and threads

使用go语言来表现线程和RPC

Why use go?
  1. 良好的线程支持
  2. 方便的 RPC
  3. 类型安全
  4. 垃圾回收机制
  5. 编程相对简单
Why use thread?
  1. 表达了并发性,在分布式系统中需要
  2. I/O 并发性
  3. 多核,性能高
  4. 方便
Threading challenges
  1. 共享数据的存贮
  2. 在线程之间共享可变数据的协调
  3. 死锁
网络爬虫实例

目标是获取所有网页,例如提供给索引器

Crawler challenges
  1. 利用 I/O 并发
  2. 获取每个 URL 只获取一次
  3. 需要知道什么时候完成
解决方案
  1. 串行爬虫,执行深度优先通过递归串行调用进行探索,通过引用传递,调用者看到被调用者的更新,一次只获取一页。
  2. ConcurrentMutex 爬虫,为每个页面获取创建一个线程,线程共享“获取”映射,需要使用互斥锁Lock() 和 Unlock(),wait() 等待所有 Add() 被 Done() 平衡,即等待所有子线程完成。
  3. ConcurrentChannel 爬虫,使用Go 通道,通道是一个对象,通道让一个线程将对象发送到另一个线程,注意死锁。master() 创建一个工作程序 goroutine 来获取每个页面, worker() 在一个频道上发送页面的 URL 片段。
远程过程调用 (RPC)
  1. 是分布式系统机器的关键部分
  2. 目标:易于编程的客户端/服务器通信
  3. 隐藏网络协议的细节
  4. 将数据(字符串、数组、映射等)转换为“wire format”
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号