Breaking Dependencies: The SOLID Principles0 码力 | 96 页 | 2.14 MB | 1 年前3
CurveFS rename 接口实现方案rename 接口实现方案(已实现,选用方案二) 背景 • 方案调研 • Chubaofs • Juicefs • 方案实现 • 方案一:chubaofs • 方案二:事务方案 • 方案三:利用 KV 自带的分布式事务 • Q&A • 1. 是否需要实现跨文件系统的 rename 操作? • 2. 在多客户端情况下,是否需要加锁来保证其原子性? • 3. rename rename 接口,本文档是对 rename 接口实现的调研及方案设计。 rename 操作,主要操作的是 dentry,如 rename /dir1/file1 /dir2/file2,主要有 2 个步骤:(1)删除 file1 的 dentry,(2)增加 file2 的 dentry(该 dentry 的 inodeid 等同 file1 的 inode id)。关于 rename 接口的实现,主要调研了 dentry,相当于多了一个硬链接,Linux 和 POSIX 接口中表明这允许一段时间内存在,但是最终还是要原子性,所以这一步出错会导致和本地文件系统不一致的行为: 1. Linux 接口定义允许 rename 过程中某一段时间存在这样的硬链接(或者 rename 执行到一半断电也会存在) 2. 而 POSIX 接口中提到了该函数得是原子(不断电的情况下,rename 操作不能被其他操作打断,不存在中间状态)0 码力 | 15 页 | 555.93 KB | 1 年前3
微服务的设计原则与⽣态系统 - 王磊## 微服务的设计原则 与生态系统 王磊 ## 关于我  Ruby Gems 开发实战 curve文件系统元数据proto(代码接口定义,已实现) ## 1、 代码结构和代码目录 curve文件系统是相对于curve块设备比较独立的一块,在当前curve项目的目录下,增加一个一级目录curvefs,curvefs下有自己独立的proto\src\test。  4. } 5. 6. // 我们需要一个比较函数来比较值的大小以了解顺序 7. // 负数表示小于,0表示等于,正数表示大于 我们将这类函数称为方法 ## 接口 Trait ## • 我们通过接口定义一系列方法的实现需求 1. trait Compare { 2. compare(Self, Self) -> Int // Self代表实现该接口的类型 3. } 4. trait Default { 5. default() -> Self 6. } ## • 月兔中的接口是结构化的 ◦ 无需 无需声明为特定的接口实现方法,类型本身实现方法即可 ## 接口 Trait • 我们可以在泛型的参数上添加接口的要求 ☐ 限制参数的类型: <类型参数> : <接口> ☐ 在函数中使用接口定义的方法: <类型参数>::<方法名> 1. fn make[T: Default]( ) -> Queue[T] { // 类型参数T应当满足Default接口0 码力 | 16 页 | 346.04 KB | 2 年前3
Building a Secure and Maintainable PaaS0 码力 | 20 页 | 2.26 MB | 2 年前3
Government Excerpt0 码力 | 3 页 | 414.99 KB | 1 年前3
Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波为了保证MySQL的高可用,需要在Docker容器分配时如何保障主从不在同一宿主机上。我们通过自研Docker容器调度平台管理所有宿主机和容器,自定义Docker容器的分配算法。实现了MySQL的高密度,隔离化,高可用化部署。 调度规则: 1. 同一复制集群的实例在不同主机上。 2.优先分配CPU、内存、磁盘空间资源最空闲的主机。 3.根据IO需求调度容器创建在不同IO类型的主机。 4. 申请 服务镜像、监控服务端镜像 ## 资源隔离 CPU最大超卖3倍,通过cpu-period配合cpu-quota一起使用,来限制容器的CPU的使用量。比cpuset-cpus绑定CPU的方式灵活。 限制容器内存,且内存不超卖。通过—memory限制内存,同时结合MySQL自身参数控制几个内存大户(比如buffer_pool等),最后配合lxcfs增强隔离性。 IO方面由于我们采用挂载宿主机本 备,还不能做到彻底隔离。所以对于高IO的实例使用的是PCIE-SSD。磁盘空间方面,我们在申请时会预估出一个量,使用超过80%的时候会结合本地磁盘空间评估是否有足够空间扩容,若宿主机剩余空间不足会启动迁移扩容流程 目前使用的host模式,无法隔离网络。但是考虑到10G接入,且单机密度可控的情况下,网络消耗不会过载。另外目前我们已经在线下尝试结合Ovs+DPDK的方案实现网络隔离。 PS:容器虚0 码力 | 32 页 | 7.11 MB | 2 年前3
全球架构师峰会2019北京/大数据/Kubernetes 运行大数据工作负载的探索和实践&mdash0 码力 | 25 页 | 3.84 MB | 2 年前3
01. 邓良驹 编写更安全的Python代码 总结:如何规避代码风险 ## 如何尽量规避风险 1. 默认不相信外部输入,需要进行检查; 2. 内部逻辑也应该做检查,例如购买东西以后余额应该降低而不是升高; 3. 奥卡姆剃刀原则,用能达到目的的最简单的设计、配置,减少缺陷的可能性; 4. 最小权限原则,仅用恰好够用的权限去执行代码,减少越权漏洞; 5. 定时清理缓存数据,以及非业务代码的固有数据,减少入侵风险; 6. 在发布代码前,使用 Bandit 工具检查代码,规避最常见的不安全写法; 工具检查代码,规避最常见的不安全写法; 7. 敏感信息一定加密后使用; 8. 不要将敏感数据驻留在内存中,包括`locals()`、`globals()`可以访问到的; 9. 使用虚拟环境隔离每个项目,对不可信数据和代码在沙盒中执行; 10. 保持操作系统、Python解释器、PyPI包的更新,尤其应关注安全更新; 11. 定期关注Python相关的CVE报告 https://cve.mitre0 码力 | 18 页 | 988.40 KB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













