Fcopy: 基于Coke实现内网大文件分发
在工作中,我曾与小伙伴讨论过这样一个实际问题:数据制作流程产生了一份需要上线的文件,而线上有数十台甚至上百台机器,有什么朴素的办法以尽可能快的速度将文件分发到指定的机器上吗?根据作者已有的知识,分享一个内网大文件分发的想法。本文未讨论组播/广播等方法,因为作者还不会😅。 定义内网、大文件、朴素 本文中提到的内网为网络延迟基本在毫秒级、基本不丢包、传输基本不出错的网络环境。本文提到的朴素办法可以认为 …
在工作中,我曾与小伙伴讨论过这样一个实际问题:数据制作流程产生了一份需要上线的文件,而线上有数十台甚至上百台机器,有什么朴素的办法以尽可能快的速度将文件分发到指定的机器上吗?根据作者已有的知识,分享一个内网大文件分发的想法。本文未讨论组播/广播等方法,因为作者还不会😅。 定义内网、大文件、朴素 本文中提到的内网为网络延迟基本在毫秒级、基本不丢包、传输基本不出错的网络环境。本文提到的朴素办法可以认为 …
平时使用C++的过程中,关联容器std::map、std::set经常被用到,本文分享几个使用方面的小技巧,虽然举例时均使用std::map,但结论同样适用于std::set。 注意迭代器失效问题 上述代码有什么问题吗?有!在循环中使用erase会导致迭代器失效,使用失效的迭代器再进行诸如++it的操作就会导致错误,一种正确的使用方法如下 在range based for loop中谨慎地指定类型 …
迄今为止,Coke通过七篇文章愉快地讨论了所有的基础组件,熟悉C++ Workflow的小伙伴可以很清楚地看出这些组件与Workflow的基础任务一一对应,通过自由地组合这些基础组件,便可以实现各种绚丽多彩的复杂任务了。这时候就有骑电动车的读者要问了:“你这哪儿够十五斤哪?你这实现有问题呀”。 没错,与Workflow相比,Coke仅实现了一小部分功能,目前的文章中尚未涉及域名解析、服务治理、自定 …
在C++ Workflow中有五种基础任务:通讯、计算、文件IO、定时器、计数器,在coke项目中也分别对应着一组基础组件。其中计数器通常用来实现功能更复杂的复合组件,coke中暂时不会有一个通用的计数器基础组件,因此本文要介绍的文件IO应当是基础组件中的最后一个了。 与C++ Workflow一样,coke提供了一组类似于pread、pwrite的文件IO接口,具体如下 相比于其他异步任务,作者 …
在C++ Workflow中有五种基础任务:通讯、计算、文件IO、定时器、计数器,在coke项目中也分别对应着一组基础组件。在前面的文章中,我们已经分享过通讯任务(以HTTP为例)、通过coke::go发起计算任务,本文主要分享一下定时器任务的使用方法。细心的读者心想:我在前面的文章看到好几次coke::sleep了,作者又来水文章了。没错,定时器任务如此简单直接,现在再不分享,以后拿出来说更显得 …