Fcopy: 基于Coke实现内网大文件分发

在工作中,我曾与小伙伴讨论过这样一个实际问题:数据制作流程产生了一份需要上线的文件,而线上有数十台甚至上百台机器,有什么朴素的办法以尽可能快的速度将文件分发到指定的机器上吗?根据作者已有的知识,分享一个内网大文件分发的想法。本文未讨论组播/广播等方法,因为作者还不会😅。 定义内网、大文件、朴素 本文中提到的内网为网络延迟基本在毫秒级、基本不丢包、传输基本不出错的网络环境。本文提到的朴素办法可以认为 …

Coke(八):与C++ Workflow灵活地交互

迄今为止,Coke通过七篇文章愉快地讨论了所有的基础组件,熟悉C++ Workflow的小伙伴可以很清楚地看出这些组件与Workflow的基础任务一一对应,通过自由地组合这些基础组件,便可以实现各种绚丽多彩的复杂任务了。这时候就有骑电动车的读者要问了:“你这哪儿够十五斤哪?你这实现有问题呀”。 没错,与Workflow相比,Coke仅实现了一小部分功能,目前的文章中尚未涉及域名解析、服务治理、自定 …

Coke(七):使用协程实现文件读写

在C++ Workflow中有五种基础任务:通讯、计算、文件IO、定时器、计数器,在coke项目中也分别对应着一组基础组件。其中计数器通常用来实现功能更复杂的复合组件,coke中暂时不会有一个通用的计数器基础组件,因此本文要介绍的文件IO应当是基础组件中的最后一个了。 与C++ Workflow一样,coke提供了一组类似于pread、pwrite的文件IO接口,具体如下 相比于其他异步任务,作者 …

Coke(六):有趣的定时器任务

在C++ Workflow中有五种基础任务:通讯、计算、文件IO、定时器、计数器,在coke项目中也分别对应着一组基础组件。在前面的文章中,我们已经分享过通讯任务(以HTTP为例)、通过coke::go发起计算任务,本文主要分享一下定时器任务的使用方法。细心的读者心想:我在前面的文章看到好几次coke::sleep了,作者又来水文章了。没错,定时器任务如此简单直接,现在再不分享,以后拿出来说更显得 …

Coke(五):协程任务的同步/异步等待

在前几篇文章中,多次用到了协程任务上的同步等待和异步等待功能,本文将对这部分内容做进一步的介绍。首先来看一个简单的例子 在这个例子中,main是我们经常会见到的C++函数,而hello则是一个协程,在C++协程中,使用co_await来实现对可等待体的异步等待。在hello协程中,先展示了如何使用co_await异步等待prepare协程并获取其返回值,然后再输出Hello world。 coke …