【多线程实战 五】-通过COW实现一个RPC框架中的路由表

本文介绍了Copy-On-Write(COW)原理,并通过实战展示了如何利用CopyOnWriteArraySet在RPC框架中构建高读取性能、低写入频率的路由表。分析了路由表对性能和一致性的需求,以及为何选择ConcurrentHashMap和CopyOnWriteArraySet作为数据结构。文章最后提醒在Java中使用COW需要注意的性能问题。
摘要由CSDN通过智能技术生成

前言

本篇文章主要介绍 写时复制(COW)相关知识。通过阅读你会有如下收获:

1. 什么是 写时复制的思想?
2. 如何通过CopyOnWriteArraySet来实现一个RPC框架中的路由表 ?
3. Java中使用COW的工具类应该注意哪些问题 ?

  
  

一. 什么是COW

  Copy-on-Write,缩写为COW或者CoW,顾名思义就是写时复制。 Copy-on-Write 更多地体现的是一种延时策略,只有在真正需要复制的时候才复制,而不是提前复制好。
  例如,Unix创建进程的API是fork(),会创建父进程的一个完整副本,如父进程占用1G内存,fork()子进程要复制父进程的整个内存,非常耗时;Linux系统fork()子进程,先不复制,让父子进程共享同一个地址空间;只用在父进程或者子进程需要写入的时候才会复制地址空间,从而使父子进程拥有各自的地址空间。
  除此之外,很多其他领域也都能看到 Copy-on-Write 的身影:Docker 容器镜像的设计是 Copy-on-Write,甚至分布式源码管理系统 Git 背后的设计思想都有 Copy-on-Write

二. 实战

1. 需求

RPC 框架的一个核心任务就是维护服务的路由关系,我们可以把服务的路由关系简化成下图所示的路由表。当服务提供方上线或者下线的时候,就需要更新客户端的这张路由表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值