Writing Python Bindings for C++ Libraries: Easy-to-use Performance
systems (C++ and Python) ○ Data volume in terabytes ● Program analysis research and functional programming in a past life ● Love performance, software abstractions, and clean APIsWhy Python? ● Writing Writing extensive APIs in Python - low boilerplate ● Familiar for domain experts ● Easy to use ○ Amazing interactive support out of the box (IPython) ○ Jupyter notebooks provide a great research environment CppCon :) Why Python? Why C++?● Why? ○ Avoid reimplementing complex code for Python ○ Performance ○ Back and forth with user’s python code ○ Interoperability with data structures in Python - shared memory0 码力 | 118 页 | 2.18 MB | 5 月前3陌陌Service Mesh架构实践
中心化存活检测 多语言支持 • Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 流量代理机制 PHP服务发布入流量代理 PHP并行调用出流量代理 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 分享主题:字号 分享嘉宾 发布服务数 2000+ 注册实例数 2万+ 全天调用量 3500亿 微服务体系规模 服务量级的增长使得Java应用的服务治理问题 也逐渐暴露出来9/24 问题 /02 借助Service Mesh解决现有架构痛点10/24 架构痛点分析 服务治理能力滞后 非Java应用 Java应用 SDK迭代进度缓慢 SDK推广升级缓慢 实际需预留 600M内存22/24 数据平面兼容原有架构 对接原有系统 • 使用原有系统SDK、私有协议 直连访问 兼容未升级服务 • Proxy Agent支持以原有通信 协议处理请求、发起调用23/24 总结与展望 实践感悟 • Service Mesh通过一种全新的架构理念,系统地解决了微服务领域的关键架构痛点 • 是否应用Service Mesh架构以及如何选择落地方案,需要参考原有架构的实际情况、选择适当的时机0 码力 | 25 页 | 1.25 MB | 5 月前3TiDB中文技术文档
启动时,将一些权限检查的表加载到内存,之后使用缓存的数据来验证权限。系统会周期性的将授权表从数据 库同步到缓存,生效则是由同步的周期决定,目前这个值设定的是5分钟。 修改了授权表,如果需要立即生效,可以手动调用: 连接验证 请求验证 生效时机 TiDB 访问权限管理 - 52 - 本文档使用 书栈(BookStack.CN) 构建 1. flush privileges; 一些使用频率偏低的权限当前版本的实现中还未做检查,比如 有两种 方式可以使用 Prepared 语句: 大多数 MySQL Driver 都支持 Prepared 语句,比如 MySQL Connector/C。这种方式可以通过 Binary 协 议直接调用 Prepared 语句 API。 通过 PREPARE , EXECUTE 以及 DEALLOCATE PREPARE 这三个语句也可以实现 Prepared 语句,这种方式不如 第 odbc、java(jdbc)、 Perl、Python、PHP、Ruby 和 C。 TiDB 兼容 MySQL(5.6、5.7) 的所有连接器和 API,包括: MySQL Connector/C MySQL Connector/C++ MySQL Connector/J MySQL Connector/Net MySQL Connector/ODBC MySQL Connector/Python MySQL C API0 码力 | 444 页 | 4.89 MB | 5 月前3Curve核心组件之Client - 网易数帆
MDSClient:负责与MDS交互,挂卸载卷、获取元数据信息 CLIENT整体架构QEMU: 实现了QEMU block与Client的对接层 向cinder/glance提供了Python API https://github.com/opencurve/curve-qemu-block-driver NBD: 实现了Curve-NBD,与内核NBD模块进行交互 可以作为容器的数据存储 对应关系(包含逻辑池以及复制组信息) 2. 从MDS获取复制组所在的机器列表 3. 从Chunkserver获取复制组leader信息 4. 将请求发往leader节点CLIENT IO线程模型 用户线程 1. 用户调用接口,发起IO请求 2. AioWrite将请求封装成io task并放入任务队列 3. 放入任务队列后,异步请求发起成功,返回用户 IO拆分线程 4. 从任务队列取出任务后进行拆分 5. er 9. 发送写请求给Chunkserver BRPC线程 10.Chunkserver处理完成后返回RPC Response 11.用户请求的所有子请求完成后,调用 IOTracker::Done 12.调用异步请求回调,返回用户CLIENT IO请求重试 IO分发线程将拆分后的子请求通过RPC请求发往指定的Chunkserver上,RPC有可能会失败,一般情况下 处理逻辑是0 码力 | 27 页 | 1.57 MB | 5 月前3Rust 程序设计语言 简体中文版 1.85.0
这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有三个重要的细节需要注 意。 首先,println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println(没有 !)。我们将在第二十章详细讨论宏。现在你只需记住,当看到符号 ! 的时候,就意味着调用 的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。 16/562Rust 程序设计语言 简体中文版 如果你更熟悉动态语言,如 Ruby、Python 或 JavaScript,则可能不习惯将编译和运行分为两 个单独的步骤。Rust 是一种 预编译静态类型(ahead-of-time compiled)语言,这意味着你可 以编译程序,并将可执行文件送给其他人,他们甚至不需要安装 Rust 就可以运行。如果你给 他人一个 .rb、.py 或 .js 文件,他们需要先分别安装 Ruby,Python,JavaScript 如果程序的开头没有使用 use std::io; 引入 io 库,我们仍可以通过把函数调用写成 std::io::stdin 来使用该函数。stdin 函数返回一个 std::io::Stdin 的实例,这是一种代表 终端标准输入句柄的类型。 接下来,代码中的 .read_line(&mut guess) 调用了标准输入句柄上的 read_line 方法,以获 取用户输入。我们还将 &mut guess0 码力 | 562 页 | 3.23 MB | 10 天前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
• LDC • 弹性伸缩 • 蓝绿/容灾/.. Ø金融级网络安全 • 金融级鉴权体系 • 云原生zero trust网络安全趋势 Ø异构语言体系融合 • SOFA/NodeJS/C++/Python/.. • 业务低成本融入服务,运维体系为什么要自研Golang版本ServiceMesh 2 Ø跨团队协作需要考虑技术栈落地成本 ü 参与团队分别使用C,Golang,Java等多种技术栈 copy ü内存使用整体化,降低 scanobject 成本 ü使用 GC 亲和的数据结构 ü适度使用 sync.Pool ü…IO 4 Ø优化 ü尽可能多读,同时减少SetReadDeadline频繁调用,实现见 IOBuffer.ReadOnce ü适度 buffer 写数据,频繁写系统 IO 会造成写效率下降 Ø均衡 ü读写均衡是高吞吐量的保证 ü大量读/写会增加系统时间消耗, runtime0 码力 | 44 页 | 4.51 MB | 5 月前3Service Mesh结合容器云平台的思考和实践
Eureka Server Service 1 Service 2 Ribbon 注册 业务服务 配置中心 启动获取 Monitor Turbine K8S流量 SC流量 同集群调用微服务 Spring Cloud管理平台基于Kubernetes的Spring Cloud实现 Devops: Experience Auto Scaling & Self Healing Resilience Hardware,Storage,Networking Spring Cloud Kubernetes + Spring Cloud 看起来很美背后 • 功能上的重叠 • 服务降级 • 细粒度的鉴权(服务间的调用) • RPC支持 • 跨语言的问题 • …云平台微服务演进之Service Mesh云平台微服务演进之Service Mesh Pilot Envoy • 服务发现 • Envoy生命周期管理 pilot-agent有三种运行模式。根据role.Type变量定义,类型为model.Proxy,定义在context.go文件中,允许的3个取值范围为: i. "sidecar" 默认值,可以在启动pilot-agent,调用proxy命令时覆盖。Sidecar type is used for sidecar proxies in the application containers. ii. "ingress" Ingress0 码力 | 28 页 | 3.09 MB | 5 月前3Service Mesh的实践分享
• 升级困难 • 复杂代码嵌入对客户端进程影响大服务化体系2.0 - Service Mesh雏形 • 物理机、sidecar • Local & Remote,主与备 • 轻量级客户端、本地调用 • Local Proxy负责服务治理与 远程通信 • Remote Proxy负责备份和非 主流流量 JavaApp Local Proxy OSP Server Service Registry 响应(目前还没有生成HTTP sdk) 应用侵入性 侵入性大。复杂客户端会给 应用造成负担,包括资源占 用、依赖冲突等等 侵入性小。SDK只有简单的寻址和序列化/ 反序列化的功能 无侵入性。应用自行调用 运维难度 难度大。客户端的问题会对 应用直接产生影响,耦合太 重 难度小。Sidecar故障可以将流量临时切到 remote proxy解决 难度小。集群通过LVS接入,单 台机故障可以下线 Proxy自动切换流量到Remote proxy,应用无感知,能轻易实 现滚动升级 • 临时排查Local Proxy问题,可立马切走流量而不影响业务代码埋点 vs. Mixer • 性能考虑 • 调用链埋点的影响必须足够小 • 鉴权需要同步进行,调用Mixer代 价大 • Mixer的中央节点问题 • 传统基于日志收集的tracing方 案足够成熟 • 内部实现一套可插拔的鉴权框 架也能接受混合部署 vs. 绑定K8s0 码力 | 30 页 | 4.80 MB | 5 月前3严选 ServiceMesh 实践
控制面:Consul 管理后台5/24 服务治理能力 – 基于严选第一代ServiceMesh(cNginx) 类型 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:基于 Consul √ 调用控制 协议支持:HTTP 1.X/2.X,可扩展至 TCP √ 路由控制:提供简单的路由能力 √ 负载均衡:支持 RR、权重、一致性 Hash l,Galley10/24 功能视角 - 服务治理能力 – 基于Istio+Envoy 类型 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:云外基于 Consul,云内基于 K8s 默认的 ETCD √ 调用控制 协议支持:HTTP 1.X/2.X,GRPC,WebSocket,Dubbo, Thrift √ 路由控制:静态路由、动态路由、流量染色、分流控制等 Service Mesh 的 优势 灰度引流 • 服务间调用灰度引流 • 外域调用灰度引流 • 平滑迁移是 Service Mesh 在混合云架构落地的关键17/24 平滑迁移 • 边缘网关支持跨 LDC 访问 • 兜底路由:云内云外互备 • 访问控制(如白名单能力) • 灰度引流使架构透明化 • 服务间调用灰度引流 • 外域调用灰度引流18/24 API 网关 • 整体基于 Envoy+Pilot0 码力 | 25 页 | 2.07 MB | 5 月前3Curve核心组件之snapshotclone
高可用,克隆任务中断自动拉起继续克隆快照克隆服务器架构 • 基于brpc提供restful API的对外http接口 HttpService: • Serivce层面区分上层请求为同步接口调用,还是异步接口调用, 同步接口调用直接调用Core层接口实现功能,异步接口创建Task, 并交由TaskManager调度。 SnapshotService & CloneService: • 任务管理层负责调度 SnapshotTaskManager & CloneTaskManager: • 快照克隆核心模块,负责向下调用DataStore,MetaStore等底层 模块,实现快照和克隆的具体功能。 SnapshotCore & CloneCore:快照克隆服务器架构 • SnapshotDataStore负责管理快照转储的数据块,通过调用 S3Adaptor(一个封装了s3 client的接口层)与S3交互,存取s3 中的对象。 SnapshotDataStore: • SnapshotCloneMetaStore负责管理快照和克隆任务等元数据, 通过调用etcdclient,与etcd存储交互,存取etcd中的快照和克隆 元数据。 SnapshotCloneMetaStore: • CurveClient封装了Client接口,负责与MDS和ChunkServer交互。 CurveClient:0 码力 | 23 页 | 1.32 MB | 5 月前3
共 147 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15