来自 防护 2022-06-09 10:30 的文章

ddos怎么防_防血糖高的食物有哪些_超稳定

ddos怎么防_防血糖高的食物有哪些_超稳定

《我们如何做AgileRobert FinkFollowNov》20192017分钟阅读

编者按:这是我们博客系列"我们如何做敏捷"中四篇文章的第一篇。第1部分(本帖)、第2部分、第3部分、第4部分。

我怀疑这些芭蕾舞演员比我的任何团队都更敏捷……?

2001年由一组长期以来一直在反思构建软件的标准方法的开发人员创造,防御CC服务器,术语"敏捷"已成为公司董事会中的一个常见流行词。在我与客户的CTO和其他领导者的谈话中,一个反复出现的主题是:Palantir如何实现敏捷?问题…

关于Palantir FoundryRobert FinkFollowNov 14,2019·7分钟阅读

如果您最近访问过Palantir的网站,您会了解到我们的平台让组织"像软件工程师管理代码一样管理数据"。像Git这样的协作工具在软件工程工具链中扮演着重要角色:Git提交建立代码版本,Git分支将开发人员和功能隔离到他们自己的沙盒中。在这篇博文中,我们将探讨为什么数据集版本控制和沙箱对协作数据工程至关重要,与此完全类似,Git工作流对于软件工程师的重要性。

ddos怎么防_防血糖高的食物有哪些_超稳定

分支(抱歉)。从皮克斯湾拍摄的照片,谢谢!

我们讨论的出发点是我们经常从客户那里得到的一个简单请求:"我们可以将我们的数据集从Palantir Foundry导出到我们现有的data lake或S3 bucket吗?"当然这是可能的,重要的是要理解,这样导出的数据集恰恰缺少使Foundry成为协作数据工程的伟大工具的版本控制和沙箱功能。通过Git的类比,我们将看到(反事实的)这些功能的缺失很容易导致软件工程案例中的软件缺陷,或数据工程案例中的数据不一致。

协作软件工程

今天,任何非平凡的软件代码库都托管在源代码管理系统中,比如Git。简而言之,Git为开发人员提供了一个带有虚拟沙盒的版本化文件系统:不同的Git提交对应于不同版本的代码库(即源代码文件),Git分支允许开发人员在不干扰其他开发人员工作的情况下实现其功能或错误修复,与上面提到的"出口铸造数据集到S3"请求类似,让我们考虑将Git存储库导出到没有Git功能的标准文件系统意味着什么。例如,我们可以运行一个定期脚本(可能由持续集成工作流或Git挂钩触发),检查主分支上的最新提交,然后将其源代码文件复制到其他目录,比如说/home/rfink/git export/

。很明显,这样一个导出的git存储库不能支持分支工作流,这仅仅是因为标准文件系统不支持分支。更微妙的是,当多个用户试图同时修改文件时,导出的存储库会遇到写/写冲突。例如,如果导出脚本的两个实例要执行两个并发导出,即两个不同的提交,那么导出目录可能表示两个代码版本的非确定性组合。因此,就写工作流而言,导出的存储库严格来说是一个单用户环境。

也许最令人惊讶的是,导出的代码目录甚至不能忠实地表示只读工作流的源代码:如果用户试图在导出脚本运行时编译源代码(因此在更新导出的源代码快照时),那么编译器可能会看到多个代码版本的不一致混合。换句话说,导出不是原子的。在最好的情况下,编译器会失败(可能是语法错误),但在更坏的情况下,编译器可能会成功,但由于编译语义不兼容的源代码文件,编译器可能会生成错误的程序(例如,具有蒸发金钱的竞争条件)。

为了安全使用导出的目录,我们需要使用读写锁同步所有访问,特别是防止一个写入程序与一个或多个读写程序并发访问(文件系统通常不提供跨文件和目录的锁定机制,因此,与Git存储库相比,导出的代码目录实际上并不那么有用。因此,标准代码导出机制(例如导出到工件存储库(例如,JCenter)的Java源JAR)存储不可变工件也就不足为奇了:它们被导出和写入一次,以提交散列唯一命名,然后再也不会更改。这是实现读/写锁定的一种方法…

协作数据工程

现在让我们将注意力转向数据工程工作流,并应用我们上面学到的知识。与Git版本代码一样,Foundry versions data:Foundry数据集(以及这些数据集中包含的所有文件)也进行了版本控制,并作为沙箱机制支持分支。这意味着Foundry数据集对于并发访问是安全的:因为每个数据集版本都是不可变的(就像Git提交是不可变的),不同的用户可以在特定的固定版本上读取数据集,而其他用户则更新相同的数据集;该用户执行的更改(例如,云cdn防御cc,添加或删除数据、更改架构等)存储为新版本,因此不会干扰其他用户的读取工作流。不同的用户甚至可以同时写入数据集,如果他们各自写入自己的分支。