Go在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 程序开发的需求 • Golang特性 • Go开发mysql中间件 • 整体方案 • 分表路由 • 故障切换 • 平滑扩容 • 系统运维 3 程序开发的需求 • 语言特性精炼,容易入门 • 开发效率高,代码逻辑清晰 • 运行性能强,节省机器资源 • 部署维护方便 • 生态圈完善 4 Golang特性 • Go语法简练;没有学习压力 • 开发效率高;语言描述能力接近于脚本语言0 码力 | 17 页 | 4.02 MB | 1 年前3go web 框架 严清
服务就是操作 HTTP,实⽤用语法糖极⼤大提升开发⼈人员的幸福指数 Middleware 模式及其控制 Express、koa、toa、Gear、Echo、Gin、Iris… ⼤大家都选择了了中间件模式 app := gear.New() app.Set(gear.SetLogger, log.New(gear.DefaultFilterWriter(), "", log.LstdFlags)) Pagination) app.UseHandler(initRouterV1(mongoService, zipkinService, authService)) gRPC ⽣生态也玩起了了中间件模式。。。 import "github.com/grpc-ecosystem/go-grpc-middleware" myServer := grpc.NewServer( grpc )), ) Middleware 模式及其控制 • 简单标准的接⼝口,通过插拔式组合能⼒力力构建复杂应⽤用 • 专注于单⼀一功能的实现,逻辑解耦,精益求精 Gear 定义了了两种形式中间件: // Middleware defines a function to process as middleware. type Middleware func(ctx *Context) error0 码力 | 23 页 | 333.12 KB | 1 年前31.2 基于 Golang 构建高可扩展的云原生 PaaS 平台
数据集成 数据开发 数据资产 数据服务 数据应⽤ 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL Redis Kafka ES MQ Minio 中间件 通⽤服务 ⾃定义服务 服务市场 Kubernetes Rancher Openshift 私有云 公共 物理机 虚拟机 微服务治理平台 DevOps 平台 边缘监控 边缘站点管理 version: 5.7.23 create_dbs: trade_db erda.yml 定义 - 定义了⼀组服务如何被部署 - 定义了服务之间的依赖 - 定义了服务和中间件的依赖 云原⽣微服务治理 - 兼容 Spring Cloud & Dubbo, 应⽤⽆需改动代码即可接⼊ - 托管的微服务引擎,降低⽤户 运维压⼒ - 可选云服务作为服务引擎 系统监控 开源新时代的挑战 第五部分 打造围绕开源的开发流程 - GitFlow or Github Flow - 基于 pr 的持续集成 - 打破需求、开发和测试的边界 简化平台的上⼿难度 - 解耦对中间件的强依赖 - 平台应⽤可独⽴安装和部署 - 像搭积⽊⼀样拼装系统 云端和本地⼀致的开发体验 - 本地⽆需启动完整的环境 - 借助IDE插件实现云端服务连接 - 本地和云端服务可交互 微信公众号0 码力 | 40 页 | 8.60 MB | 1 年前302. Service Mesh落地之后_为sidecar注入灵魂 - 周群力
Multi Runtime: 所有中间件下沉: 业务逻辑和基础设施分离 多语言治理 同一套代码移植到不同组件 • Runtime API:真正的供应商解绑 • WebAssembly in sidecar:让业务逻辑跑在 sidecar 里 • Service Mesh : 通信中间件下沉,sidecar 实现组织架构上 的解耦 • Multi Runtime: 所有中间件下沉: 业务逻辑和基础设施分离0 码力 | 63 页 | 880.85 KB | 1 年前3微服务容灾治理
CPU密集型还是IO密集型服务,go-zero都能很好的保护服务在如下场景不被拖垮或卡死: • 远超服务容量的突发⼤流量 • CPU打满 • 上下游故障或者超时 • MySQL、MongoDB、Redis等中间件故障或者超负载(典型的是CPU飙⾼) 如图,我们从三个⽅⾯来保护系统的稳定性: • 服务端⾃适应过载保护 • 服务端⾃适应熔断 • 客⼾端⾃适应熔断 当然,我们还有⾃动适配后端服务能 benchmarkCPU-103303600743ns/op 从 benchmark 结果可以看出单个请求的逻辑处理需要3.6msCPU资源(不包括服务端中间件处理 消耗)。对于两核的容器来说,qps上限约为550(2000/3.6)。但是我们是⼀个HTTPserver,肯定 还有接受请求、解析请求、返回结果等开销,实际上是达不到550qps的。 动扩容默认CPU阈值是80%,当你在设置这两个参数的时候,不要让HPA的CPU阈值⼤于go-zero 的过载保护CPU阈值,否则可能会抑制HPA的⽣效。 当然整个系统并不是链路上所有服务和中间件都可以⾃动或及时扩容的,这⾥就牵出另⼀个稳定性能 ⼒-⾃适应熔断了。有了⾃适应过载保护和⾃适应熔断的双重加持,流量再⼤(上限是所有CPU都⽤ 在降载熔断等能⼒上),服务也不会挂。后续⽂章0 码力 | 13 页 | 1.68 MB | 1 年前3Golang 微服务在腾讯游戏用户运营领域的探索及实践
业务混合部署 面向需求实现 效率质量之痛 流程 敏捷 隔离 性能 安全 监控 中间件技术选型 团队背景 内部生态 业务发展 开发成本 运营成本 Golang CSP并发 多核友好 自动GC 语法简洁 开源库多 CGO集 成 快速交付 内核稳定 生态趋势 数据中间件——指标服务 Golang 高性能 高可用 扩展性 安全性 可运营性 业务发展驱动技术演进0 码力 | 34 页 | 1.22 MB | 1 年前3云原生go-zero微服务框架设计思考
不允许不过期的缓存 ● 分布式缓存,易伸缩 ● 自动生成,自带统计 缓存的最佳实践 ● 协议选择 - gRPC ● 服务发现方式 - etcd ● 负载均衡 - p2c ewma ● 支持自定义中间件 service2 etcd service1 注册上报 watch发现 rpc call rpc服务层 - zRPC Power of Two Choices ● 默认算法 ● 当前请求数 io/2016/03/16/beyond-round- robin-load-balancing-for-latency/ ● 流控 ● 请求鉴权 ● 请求参数校验 ● 业务聚合 ● 支持自定义中间件 api gateway层 ● Google SRE算法 ● 放弃了Netflix Hystrix算法 ● 基于滑动窗口(10秒/40窗口) ● 支持自定义触发条件 ● 支持自定义fallback0 码力 | 29 页 | 5.70 MB | 9 月前3Golang大规模云原生应用管理实践
Golang⼤规模云原⽣应⽤管理实践 刘洋(炎寻) 关于我 • 毕业于中国科学技术大学,定居杭州 • 就职于阿里云-云原生应用平台团队 • Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 Kubelet,等组件都具有一定复杂度,无法做到定期升 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正想要的是策略:大象无形的基础设施,坚如磐石的中间件,丰富高效的应用PaaS平台 基础设施 云原生PaaS平台提供应用管理策略 基础设施 K8s 云原生生态(CNCF) 云原生应用 4 6 7 2 3 5 1 1 Kubectl plugins0 码力 | 23 页 | 7.70 MB | 1 年前3Go Web编程
Match模式只能用来对字符串的判断,而无法截取字符串的一部分、过滤字符串、或者提取出符合条件的一批字符 串。如果想要满足这些需求,那就需要使用正则表达式的复杂模式。 我们经常需要一些爬虫程序,下面就以爬虫为例来说明如何使用正则来过滤或截取抓取到的数据: package main import ( 161 "fmt" "io/ioutil" "net/http"0 码力 | 295 页 | 5.91 MB | 1 年前3Golang在接入层长连接服务中的实践-黄欣
架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储) – Redis集群:codis集群方案 – Mysql集群:中间件方案 架构—灾备 • 这里的灾备主要指的是依赖的存储降级方案,涉及到存储 的主要两个模块 – Auth svr:cache(redis) + db(mysql) – Route svr:cache0 码力 | 31 页 | 1.67 MB | 1 年前3
共 17 条
- 1
- 2