基于 mesos 的容器调度框架2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 1/36 基于 mesos 的容器调度框架 Gopher 杭州 meetup 5 August 2017 黄励博(huangnauh) 又拍云 2017/8/3 基于 mesos 的容器调度框架 http://go-talks http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 2/36 What's Upone 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 3/36 Mesos 介绍 Image credit: apache.org (http://mesos.apache.org/) 官方称之为分布式系统内核, 它把数据中心的 CPU、内存、磁盘等抽象成一个资源池 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 4/36 Mesos 调度 各个 Agent0 码力 | 36 页 | 2.49 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台- Erda 02 Erda 架构的思考 03 模块化开发框架 04 开源新时代的挑战 05 ⾯向云原⽣的软件交付 第⼀部分 ⾯向云原⽣的企业软件产品 - 敏捷开发 - 微服务化和容器化 - 交付标准化 - 可观察性 特点: 敏捷的⽬标是提升研发效能 需要⼀个 DevOps 平台来⽀撑敏捷开发的落地 这⾥需要有⼀个标准的交付平台 运⾏环境 业务 数据 业务系统 C 应⽤运⾏在统⼀平台 构建标准的交付环境 交付产物标准化 - 业务配置 - 资源配置 - 依赖配置 - 流⽔线配置 配置即代码 : 实现⼤规模交付的部署过程可被验证 PaaS 平台:资源管理,容器编排,基础监控和告警 APM 监控:应⽤诊断,链路追踪,⽇志分析 微服务治理组件 可靠的业务 贴身护航 基础⽀撑 持续保障系统稳定性 只需很少的运维投⼊即可保证系统稳定性 端点⼀站式 PaaS 慢SQL JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务 数据应⽤ 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL0 码力 | 40 页 | 8.60 MB | 1 年前3
Golang大规模云原生应用管理实践• Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一 场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 5 6 7 Custom resources com/oam-dev/spec • 应用 • 组件1(工作负载) • 运维特征1 • 运维特征2 • … • 组件2 (工作负载) • 运维特征1 • 运维特征2 • … • … 作用域 能力定义 依赖编排 组件版本 服务绑定 OAM应用模型 apiVersion: core.oam.dev/v1alpha2 kind: ApplicationConfiguration metadata: name:0 码力 | 23 页 | 7.70 MB | 1 年前3
Go 构建大型开源分布式数据库技术内幕Machine Learning Libraries ○ Spark Streaming TiDB on K8S TiDB with Kubernetes 1/3 ● Kubernetes 是容器编排的最佳方案 ● 难点 ○ Stateless is Easy, Stateful is Hard ○ Application domain knowledge ○ IO Isolation0 码力 | 44 页 | 649.68 KB | 1 年前3
Golang 微服务在腾讯游戏用户运营领域的探索及实践批量选取用户群 特征 • 离线及实时用户指 标,单用户业务个 性化属性数值 指标 • 短信、Tips、邮 件、站内信通知 触达 • 礼包发放、积分 赠送、体验资格 营销 • 服务编排、运营策略 策略 微服务实践 • CDB + CKV / ETCD 服务注册发现 • CL5 / LVS CAE自动伸缩容 负载均衡 • ID / Token / IP 鉴权 • Atomic 并行执行单元 消息总线 屏蔽本地网络差异 微执行单元 水平伸缩 运营监控 旁路实时上报 自定义告警策略 收敛算法 海量日志查询 DSL加速敏捷 微服务编排 Node API调用 Graph 条件分支 Flow 编排策略 DSL设计 应用落地 • 正职开发核心服务,流程编 排外包 开发外包 • 运营填写表单,活动一键上 线 运营自助 • 策略嵌套、一键复制 流程复用 流程复用 • 自动Mock、分支覆盖 自动测试 • 流程固化,沉淀运营模型 模型沉淀 基准数据 基准数据 总结及展望 总结及展望 服务网关 快速集成 服务编排 流程沉淀 执行单元 并发并行 技术驱动 业务优化 微服务 敏捷迭代0 码力 | 34 页 | 1.22 MB | 1 年前3
如何使用 docker 部署一个 beego 项目帮助你为应用程序创建一个单独的可部署单元。这个单元,也被称为容器,包含该应用 序需要的所有东西。它包括代码(或者二进制文件)、runtime(运行环境)、系统工具盒系统库。 所有必需的资源打包成一个单元将确保无论应用程序部署到哪里都有完全相同的环境。这也有助于维 一个完全相同的开发和生产配置,这在以前是很难追踪的。一旦开始,容器的创建和部署将自动完成。它消除了一大类问题。这些问题主要是由于文件没有 id="相比于虚拟机的优势">相比于虚拟机的优势
容器提供了与虚拟机相似的资源分配和隔离优势。然而,相同之处仅此而已。
一个虚拟机需要它自己的客户操作系统而容器共享主机操作系统的内核。这意味着容器更加轻量 且需要更少的资源。从本质上讲,一个虚拟机是操作系统中的一个操作系统。而另一方面的容器则更 是操作系统中的其它应用程序。基本上,容器需要的资源(内存、磁盘空间等等)比虚拟机少很多, 在开发阶段的优势
在开发中使用 Docker 的优势包括:
- 一个用于所有团队成员的标准开发环境
- 更新的依赖性集中化以及在任何地方都能使用相同的容器
- 在开发和生产中完全相同的环境
- 修复了可能只会出现在生产环境中的潜在问题
Golang 101(Go语言101 中文版) v1.21.aGo类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 必须都为新声明的变 量。 注意,相对于纯赋值语句,目前短声明语句有一个限制:出现在一个短声明左 侧的项必须都为纯标识符。 以后我们将学习到在纯赋值语句的左边可以出现结 构体值的字段,指针的解引用和容器类型值的元素索引项等。 但是这些项不能 出现在一个变量短声明语句的左边。 关于“赋值”这个术语 以后,当“赋值”这个术语被提到的时候,它可以指一个纯赋值、一个短变量声 明或者一个初始值未省略的标准变量声明。 Go语言中有三种基本的流程控制代码块: if-else条件分支代码块; for循环代码块; switch-case多条件分支代码块。 Go中另外还有几种和特定种类的类型相关的流程控制代码块: 容器类型(第18章)相关的for-range循环代码块。 接口类型(第23章)相关的type-switch多条件分支代码块。 通道类型(第21章)相关的select-case多分支代码块。 和很多其它0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGo类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 必须都为新声明的变 量。 注意,相对于纯赋值语句,目前短声明语句有一个限制:出现在一个短声明左 侧的项必须都为纯标识符。 以后我们将学习到在纯赋值语句的左边可以出现 结构体值的字段,指针的解引用和容器类型值的元素索引项等。 但是这些项 不能出现在一个变量短声明语句的左边。 关于“赋值”这个术语 以后,当“赋值”这个术语被提到的时候,它可以指一个纯赋值、一个短变量声 明或者一个初始值未省略的标准变量声明。 Go语言中有三种基本的流程控制代码块: if-else条件分支代码块; for循环代码块; switch-case多条件分支代码块。 Go中另外还有几种和特定种类的类型相关的流程控制代码块: 容器类型(第18章)相关的for-range循环代码块。 接口类型(第23章)相关的type-switch多条件分支代码块。 通道类型(第21章)相关的select-case多分支代码块。 和很多0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGo类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第7章:常量和变量 44 注意,相对于纯赋值语句,目前短声明语句有一个限制:出现在一个短声明左侧的 项必须都为纯标识符。 以后我们将学习到在纯赋值语句的左边可以出现结构体值的 字段,指针的解引用和容器类型值的元素索引项等。 但是这些项不能出现在一个变 量短声明语句的左边。 关于“赋值”这个术语 以后,当“赋值”这个术语被提到的时候,它可以指一个纯赋值、一个短变量声明 或者一个初始值未省略的标准变量声明。 Go语言中有三种基本的流程控制代码块: if-else条件分支代码块; for循环代码块; switch-case多条件分支代码块。 Go中另外还有几种和特定种类的类型相关的流程控制代码块: 容器类型(第18章)相关的for-range循环代码块。 接口类型(第23章)相关的type-switch多条件分支代码块。 通道类型(第21章)相关的select-case多分支代码块。 和很多0 码力 | 591 页 | 21.40 MB | 1 年前3
微服务容灾治理benchmarkCPU-103303600743ns/op 从 benchmark 结果可以看出单个请求的逻辑处理需要3.6msCPU资源(不包括服务端中间件处理 消耗)。对于两核的容器来说,qps上限约为550(2000/3.6)。但是我们是⼀个HTTPserver,肯定 还有接受请求、解析请求、返回结果等开销,实际上是达不到550qps的。 这个模拟CPU的代码本⾝不重要,就不做介绍了。 1场景⼀(不开启过载保护) Timeout:1000 Middlewares: Breaker:false Shedding:false • 服务跑在两核的容器内 • 不开启过载保护 • 超时1s • loops 2 hey -c 200 -z 60m "http://localhost:8888/ping" ◦ loops 是我的⼀个 alias 们怎么检测CPU使⽤率呢? ⾸先,我们要明确需要覆盖的场景,当前⽆外乎虚机和容器两⼤类了。⽽容器⾥⼜分为 cgroup v1 和 cgroup v2 ,所以总的有三类需要处理: • 虚机(不同云⼚商有不同的叫法,⽐如ECS,EC2等) • 容器cgroupv1 • 容器cgroupv2 这⾥有个特别需要关注的点是:容器是否设置了 cpu limit ,如果没设,就只能⽤可以调度的cpu0 码力 | 13 页 | 1.68 MB | 1 年前3
共 29 条
- 1
- 2
- 3













