2.2.6 字节跳动在 Go 网络库上的实践字节跳动在 Go 网络库上的实践 何晨 字节跳动 基础架构 – 研发 应用层 Netpoll – 面向 RPC 场景的网络库 Go net Netpoll 网络层 RPC 框架 HTTP 框架 KiteX Hertz Netpoll – 性能表现 Environment CPU: 4 cores Memory: 8GB Go: 1.15.4 Netpoll0 码力 | 42 页 | 3.19 MB | 1 年前3
05. OpenKruise镜像预热实践_王思宇、哈啰出行 • Lyft、Bringg、Arkane Systems、Spectro Cloud、Linkedin OpenKruise 能做什么 为什么说人人都需要镜像预热 第二部分 Pod创建过程 用户的期望: • 极致弹性 • 秒级扩容 • 弹出即可用 实际创建过程: create schedule attach/mount volume cni allotate pull start sidecar pull image for app start app Pod的创建过程,能否继续优化? 默认:重建升级 进阶:原地升级 优势: • 节省了调度的耗时,Pod 的位置、资源都不发生 变化 • 节省了分配网络的耗时,Pod 还使用原有的 IP • 节省了分配、挂载远程盘的耗时,Pod 还使用原 有的 PV(且都是已经在 Node 上挂载好的) • 节省了大部分拉取镜像的耗时,因为 经存在了应用的旧镜像,当拉取新版本镜像时只 需要下载少数的几层 layer • 原地升级 Pod 中某个容器时,其他容器保持正 常运行,网络、存储均不受影响 对极致效率的追求 create schedule attach/mount volume cni allotate start sidecar pull image for app start app Pod原地升级,能否进一步优化? in-place update0 码力 | 28 页 | 5.78 MB | 1 年前3
04. GraphQL in Chaos Mesh 2.0 - 李晨曦提供对 Pod 或者具体容器的错误注入, 包括网络、系统 IO、内核以及一些应用层注入 chaos-mesh.org github.com/chaos-mesh Chaos Mesh 是什么 我们的目标 ● 建立一个完全闭环的云原生混沌工程平台 ● 让混沌工程变得更易用 问题与解决方案 集群中的状态 Chaos Mesh 本身的运行和注入的故障会 给各组件以及目标 Pod 带来各种状态。 XXXChaos PodXXXChaos Status Event Target Pods Status Logs Event k8s 不可直接查询的状态 Chaos Mesh 注入的故障给目标 Pod 带来状态不可通过 k8s API 直接查询。 cluster status Target Pods Mounts Processes ipset iptables Pid Command json path 使用样例 状态查询的障碍2 对于不可通过 kubernetes API 直接查询的状态,往往要通过创建 pod/exec 子资源,运行自定义命 令来获取。它存在的主要问题是查询客户端所需权限过高。 pod/exec 使用样例:列出 daemon pod 上正在运行的进程。 状态查询的障碍3 对于所有的状态查询都存在的一大问题是,各级状态之间很难进行关联查询。 人脑关联查询示例:0 码力 | 30 页 | 1.29 MB | 1 年前3
02. Service Mesh落地之后_为sidecar注入灵魂 - 周群力Linkerd 的Buoyant 公司提出 服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服 务网格负责在这些拓扑中实现请求的可靠传递。在实践中,服务网格通常实现为一组轻量 级网络代理,他们与应用程序部署在一起,而对应用程序透明。 Service Mesh 的初衷 5 图片来源: https://new.qq.com/omn/20190806/201908 06A0SM4Q00 Service Mesh vs Runtime 18 低 能力丰富度 Service Mesh Runtime 分布式能力原语合集 定位 具有明确语义的 API 交互方式 通信协议 网络代理 定位 流量拦截 交互方式 私有协议 通信协议 高 能力丰富度 Http/gRPC 标准协议 19 Dapr Dapr 20 • 提供多种分布式能力 • 对接了丰富的基础组件 找上门 B 云也很好,你通过我的服务可以无缝 使用 A 云和 B 云 • 被 C 锁定 POD container App container container Dapr • 缺失 Service Mesh 能力 • 运维成本飙升 • 稳定性有待验证 • 稳定性更难保证 MOSN POD container App container container Dapr0 码力 | 63 页 | 880.85 KB | 1 年前3
Golang大规模云原生应用管理实践成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver rsList, err := dc.getReplicaSetsForDeployment(d) if err != nil { return err } // �������Deployment�Pod podMap, err := dc.getPodMapForDeployment(d, rsList) if err != nil { return err } // rolloutRolling�����Deployment0 码力 | 23 页 | 7.70 MB | 1 年前3
1.6 resource scheduling & container technology for financial service_yujunChina 2015 求解之路的探索 n 他们是否解决了我们的问题? n No ① Condor系统是面向高吞吐率计算计算而设计的,它的主要目的就是利用网络中工作站的空闲时间来为用户服务。 ② Condor采用集中式调度模式,且不能保障用户服务质量。 ③ 最小完成时间算法MCT(Minimum Completion Time)是 Kubernetes 仅仅是实现了一个极其简单的调度器。鼓励开发者编写自己的调度器注册进框架 ② 调度策略分为两大类:Predicates和Priorities,其中Predicates判断是否将pod调度到特定 minion(host)上运行,而Priorities则是在Predicates的计算基础上,通过积分Score方式,决定调 度量。 ③ Predicates包括:PodFit 我们在围绕Container技术正在做一些面向金融行业场景的 严肃而”有趣”的东西 雏形和明天 Gopher China 2015 IaaS (计算资源, 存储资源, 网络资源) Distributed Platform Management Resource Scheduler Service Discovery Scalability Controller0 码力 | 21 页 | 27.20 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路难点攻克 02 主动式内存缓存框架 03 总结 04 问题引入 第一部分 为什么能有极致的性能? 01. 如何优化? 解决了哪些技术难题? 主动式内存缓存 如何优化? 极致的性能 除了网络IO,与Redis有什么区别? 复杂的查询怎么办? 02. 传统的Cache很难实现多维度的查询,无法具备像SQL一样的灵活的查询模式 支持多种维度的查询 提供类似SQL的查询模式 依赖方不可用时,提供有损服务 心得感悟 极致的性能 01. 请求到响应只需要内存中的操作即可完成,因此具备极高的性能 用户请求 请求 内存检索 逻辑处理 快速响应 响应 1000万业务数据,10个pod,4核心16G内存,QPS均值12W 最小的依赖 02. 最小化依赖故障时,对业务服务造成的影响 核心业务数据都缓存在本机内存中 依赖出现故障,我们的服务依然坚挺 框架优势 03.0 码力 | 48 页 | 6.06 MB | 1 年前3
3.云原生边云协同AI框架实践}) jc.jobLister = jobInformer.Lister() jc.jobStoreSynced = jobInformer.Informer().HasSynced // 绑定Pod对应的增删改对应事件的回调函数。 podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: i++ { go wait.Until(c.worker, time.Second, stopCh) } <-stopCh } 先会通过WaitForNamedCacheSync去等 待Pod和LifelongLearningJob资源对象是 否已经同步到Informer中。 如果已经同步,则会启动指定数量的 worker对LifelongLearningJob进行处理。 【9】Controller核心处理逻辑 error will re-enqueue LifelongLearningJob after the backoff period return forget, fmt.Errorf("failed pod(s) detected for lifelonglearningjob key %q", key) } forget = true } return forget, err } syn0 码力 | 37 页 | 2.36 MB | 1 年前3
微服务容灾治理⾃动伸缩的时候,Kubernetes默认会在4 个连续的15秒探测周期探测到CPU使⽤率超标(有0.9-1.1的容忍幅度)时,启动增加pod来应对 系统容量不⾜,但这需要分钟级扩容,且当系统资源不够或者pod数达到最⼤设置时不⽣效。此时, 过载保护可以在Kubernetes未来得及扩容或者集群容量不⾜时保护我们的系统不被打到卡死。 但这⾥有个点需要注意,0 码力 | 13 页 | 1.68 MB | 1 年前3
03. Golang 在隐私计算平台建设中的实践 - 刘敬分释放数据价值 02 隐私计算平台 架构 趣链科技版权所有©2016 – 2021 9 平台体系 • 区块链协同层 数据共享⽬目录,数据确权授 权、追溯审计以及联盟治理理 • 隐私计算⽹网络 多节点通过p2p组⽹网,并基于安 全多⽅方计算、联邦学习、可信执 ⾏行行环境按照数据隐私密级进⾏行行价 值共享 • 业务应⽤用层 基于SDK接⼊入上层业务系统 趣链科技版权所有©2016 doubleEncrypt edDatasetA) 对应 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 趣链科技版权所有©2016 – 2021 15 嵌套调⽤用其他算法 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流0 码力 | 37 页 | 6.20 MB | 1 年前3
共 45 条
- 1
- 2
- 3
- 4
- 5













