蚂蚁金服网络代理演进之路
Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 再次握手时重复传输数据 • ECDHE-keyshare扩展 将TLS1.3草案中的1-RTT机制通 过扩展的方式提前应用 • ECC-signature扩展 使用高效ECDSA签名算法的同 时,兼容广泛使用的RSA证书 按需握手 • 业务可根据需求灵活选择明文 或密文传输,提升业务效率 TLS扩展安全合规能力持续升级 国密算法 • 拥抱监管 • 安全可控 • 金融科技 AntTLS库 • 基于OpenSSL • 全面拥抱TLS1.3 • 国密优化实现,国密单证书标准支撑 • 支持SGX等可信机制 • 多硬件卡Engine • Mobile,iot设备等多终端支持 • OpenSSL Committer无线移动战役 操作响应慢 操作无响应 Push没消息 Push消息慢 海外消息慢 统一通道:主长连接 + 短连接 § 统一协议:MTLS+MMTP § 统一调度:MobileDC 最优调度 网络探测 连接建立 传输+保持 通道复用 复合建连 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意0 码力 | 46 页 | 19.93 MB | 5 月前3TiDB中文技术文档
lease 主要用在 online schema changes 上面。这个值会影响到实际的 DDL 语句的执行 时间。大多数情况下,用户不需要修改这个值,除非您清晰的了解 TiDB DDL 的内部实现机制 TiDB 服务监听 host 默认: “0.0.0.0” TiDB 服务会监听这个 host 0.0.0.0 默认会监听所有的网卡 address。如果有多块网卡,可以指定对外提供服务的网卡,譬如 局提交时间戳,并以 此确定事务的执行顺序,如果想了解 TiDB 事务模型的实现可以详细阅读以下两篇文章:TiKV 的 MVCC(Multi- Version Concurrency Control)机制,Percolator 和 TiDB 事务算法。 可以通过以下命令设置 session 或者 global 的事务的隔离级别: SET [SESSION | GLOBAL] TRANSACTION 这使得写入操作和读取操作不必互斥,并使读取历史数 据成为可能。 存在超过一定时间并且不再使用的版本会被清理,否则它们将始终占用硬盘空间,并对性能产生负面影响。TiDB 使 用一个垃圾回收 (GC) 机制来清理这些旧数据。 TiDB 会周期性地进行 GC。每个 TiDB Server 启动后都会在后台运行一个 gc_worker,每个集群中会有其中一 个 gc_worker 被选为 leader,leader0 码力 | 444 页 | 4.89 MB | 5 月前3Curve核心组件之mds – 网易数帆
下几个部分: • Topology: 管理集群的 topo 元数据信息。 • Nameserver: 管理文件的元数据信息。 • Copyset: 副本放置策略。 • Heartbeat: 心跳模块。跟chunkserver进行交互,收集chunkserver上的负载信息、 copyset信息等。 • Scheduler: 调度模块。用于自动容错和负载均衡。TOPOLOGY topol 减少复制组数量:如果一个数据节点存在 256K个复制组,复制组的内存资源占用将会非常恐怖;复制组之 间的通信将会非常复杂,例如复制组内Primary给Secondary定期发送心跳进行探活,在256K个复制组的情况 下,心跳的流量将会非常大;而引入CopySet的概念之后,可以以CopySet的粒度进行探活、配置变更,降低 开销。 3. 提高数据可靠性:在数据复制组过度打散的情况下,在发生多个节点同时故障的情况下,数据的可靠性会受 in chunk, length in chunk), Chunkserver 完成后通知; 5. Client通知用户请求完成。HEARTBEAT 心跳用于中心节点和数据节点的数据交互,详细功能如下: • 通过chunkserver的定期心跳,检测chunkserver的在线状态(online, unstable, offline) • 记录chunkserver定期上报的状态信息(磁盘容0 码力 | 23 页 | 1.74 MB | 5 月前3Curve核心组件之chunkserver
互。详细交互流程后面展开。 CopysetNodeManager负责管理 CopysetNode的创建、初始化、删除等 ChunkServer架构心跳模块有两方面的职责: 1、向MDS节点上报心跳,心跳中包括 ChunkServer本身的一些统计信息 2、解析MDS的心跳response中的raft 成员变更信息,向CopysetNode发起变 更 ChunkServer架构ChunkOpRequest模块封装了对 ChunkServer核心模块 新版本ChunkServer性能优化ChunkServer核心模块-注册和心跳 上报心跳 根据心跳下发raft成员变更 ChunkServer注册:chunkserver第一次启动时,需要向mds注册,mds分配并返回 ChunkserverID,token,chunkserver持久化这些信息,并在后续心跳上报时携带这些信息。ChunkServer核心模块-CopysetNode 写请求: 坏盘(CS1对应的盘)后的迁移流程 初始状态,copyset1,copyset2,copyset3的三个副本分别在 CS1,CS3,CS4上,完成迁移后,CS1上的副本迁移到CS2上 ① CS1超时未向MDS上报心跳(默认半小时) ② MDS标记CS1状态为offline ③ MDS的recover scheduler发现copyset1, 2, 3的副本CS1 offline, 生成change peer0 码力 | 29 页 | 1.61 MB | 5 月前3CurveFS Copyset与FS对应关系
1 如何获取inodeid 3.2 copyset fs共用吗? 3.3 copyset个数是否可以动态调整? 4、curvefs的topo信息 5、curvefs mds和metaserver的心跳 6、详细设计 6.1 创建fs 6.2、挂载fs 6.3、创建文件/目录 6.4、open流程 6.5、读写流程 6.6、topology 7、工作评估 7.1 client端 7.2 mds端 mds和metaserver的心跳 curvefs的mds和metaserver之间的心跳类似于curve块设备的心跳。metaserver需要定期通过心跳向mds上报自己的状态。mds一方面根据metaserver上报的状态,进行相应的调度;另一方面根据心跳确认metasever 的存活状态。 这块内容参考的curve。metaserver定时向mds上报心跳,心跳内容参考curve。调度上, ReplicaScheduler: 副本数量调度器。根据当前copyset的副本数生成副本增删任务; RecoverScheduler: 恢复调度器。根据当前copyset副本的存活状态生成迁移任务。 结论:心跳参考curve。目前这些调度器在curvefs第一阶段不用全部实现。所有和均衡相关的,暂时不做。只做和故障处理相关的副本补全恢复的调度。 6、详细设计 6.1 创建fs curvefs管理工具0 码力 | 19 页 | 383.29 KB | 5 月前3Curve核心组件之Client - 网易数帆
T IO流程 复制组所在的chunkserver列表 chunkserver心跳定期上报给MDS 通过MDSClient向MDS获取 复制组的leader信息 复制组之间通过raft维护 通过CliClient向Chunkserver获取 这两种信息client也会进行缓存 上报心跳CLIENT IO流程 子请求处理步骤: 1. 从MDS获取逻辑chunk与物理chunk的0 码力 | 27 页 | 1.57 MB | 5 月前3Raft在Curve存储中的工程实践
snapshot的实现和Curve块存储不同。 • metaserver有两套存储引擎,基于memory和基于rocksdb。 Curve文件系统与Curve块存储的实现区别CURVE的RAFT配置变更 心跳 • 通过心跳维持mds和chunkserver/metaserve的 数据交互 • mds发起配置变更,copyset复制组执行 • 在curve自动容错和负载均衡时,需要进行raft配 置变更。0 码力 | 29 页 | 2.20 MB | 5 月前3curvefs client删除文件和目录功能设计
相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? 方案设计 Trash机制: Session机制: 遗留问题 工作量评估 背景 目前curvefs client moosefs 未对接forget moosefs 实现了在mds上open,因此删除时可以判断文件是否被打开 moosefs使用了两种机制,来实现上述功能,分别是trash机制和reserve机制(最新版本叫sustained),两种机制如下: trash机制: 对于所有TYPE_FILE类型的文件在删除时, ,则不会立即将该文件彻底删除,而是将其类型修改为TYPE_TRASH并且将该节点从 若其trashtime大于0 站。 通过META文件系统来访问trash 通过trash机制,可实现文件的恢复UNDEL 回收站实现了一个timer,定期判断trashtime,执行定期清理回收站 清理时,当文件仍处于打开状态,则还需要进入下sustained/reserve中。 sustained机制/reserve机制 当一个trashtime等于0的TYPE_FILE类型的文件被一个客户端正0 码力 | 15 页 | 325.42 KB | 5 月前3人工智能安全治理框架 1.0
人工智能安全治理原则 秉持共同、综合、合作、可持续的安全观,坚持发展和安全并重,以促 进人工智能创新发展为第一要务,以有效防范化解人工智能安全风险为出发点 和落脚点,构建各方共同参与、技管结合、分工协作的治理机制,压实相关主 体安全责任,打造全过程全要素治理链条,培育安全、可靠、公平、透明的人 工智能技术研发和应用生态,推动人工智能健康发展和规范应用,切实维护国 家主权、安全和发展利益,保障公民、法人和其他组织的合法权益,确保人工 术、 管理相结合的安全治理措施,防范应对不同类型安全风险。围绕人工智能研发 应用生态链,明确模型算法研发者、服务提供者、使用者等相关主体的安全责 任,有机发挥政府监管、行业自律、社会监督等治理机制作用。 1.4 开放合作、共治共享。在全球范围推动人工智能安全治理国际合作, 共享最佳实践,提倡建立开放性平台,通过跨学科、跨领域、跨地区、跨国界 的对话和合作,推动形成具有广泛共识的全球人工智能治理体系。 在不良内容,在模型安全防护 机制不完善的情况下,有可能输出违法有害内容。 (b)混淆事实、误导用户、绕过鉴权的风险。人工智能系统及输出内容 等未经标识,导致用户难以识别交互对象及生成内容来源是否为人工智能系统, 难以鉴别生成内容的真实性,影响用户判断,导致误解。同时,人工智能生成 图片、音频、视频等高仿真内容,可能绕过现有人脸识别、语音识别等身份认 证机制,导致认证鉴权失效。 (c)0 码力 | 20 页 | 3.79 MB | 28 天前3CurveFS rename 接口实现方案
步骤 1 出错,啥事都没发生 步骤 2 出错,等同于创建硬连接出错,恢复机制如下: 将源文件的 nlink 减一 步骤 3 出错,相当于创建了硬链接,但是没有删除源文件,此时源文件和目标文件同时存在,恢复机制如下: 删除目标文件 dentry 将源文件的 nlink 减一 备注: 如果这一步骤出错,并且恢复机制没有执行成功,那么会导致一些问题:© XXX Page 3 of 15 3. 有可能没办法被正常回收 (nlink 始终大于 0),恢复机制如下: 对于这一步出错,没有恢复机制,与 unlink 操作失败一样的处理(因为 dentry 删除了,而 inode 却没被回收,会被当成孤儿节点去处理) 如果采用 chubaofs 的方案,需要考虑以下问题: 以上的恢复进制如果没执行成功怎么办? 客户端存活的情况下,应该多尝试几次,直至成功 但是如果恢复机制尝试多次没成功,或者客户端挂掉、宕机该如何处理? 该如何处理? 步骤 1:忽略 步骤 2:只是给 nlink + 1 了,这个 ,同步骤 4 恢复机制一样,当做孤儿节点来处理 等同于 unlink 操作时删除了 dentry 而 nlink 没减一的情况 步骤 3: ,就会同时存在 src、dst 的 dentry,相当于多了一个硬链接,Linux 和 POSIX 这一步出错 接口中表明这允许一段时间内存在,但是最终还是要原子性,所以这一步出错会导致和本地文件系统不一致的行为:0 码力 | 15 页 | 555.93 KB | 5 月前3
共 37 条
- 1
- 2
- 3
- 4