基于Go的大数据平台-党合萱
基于Go的⼤大数据平台 七⽜牛云—党合萱 什什么是Pandora 简单 · 可信赖 Pandora架构图 Export Service API / Portal / 消息 消息 计算 计算 消息 导出任务 导出任务 导出任务 导出任务 导出任务 计算 消息 对象存储服务 HTTP MongoDB 时序数据库 ⽇日志检索服务 XSpark Report Studio 简单 · 可信赖 内容提要 • 系统设计分析与架构 • 多种上下游适配 • ⾼高吞吐/低延迟问题探究 • ⾼高可⽤用与⽔水平扩展 • ⾃自动化运维 • Go的应⽤用 简单 · 可信赖 系统设计分析与架构 构建系统的挑战 export service系统全貌 简单 · 可信赖 数据预取 • export server在向下游推数据的时候预先从上游拉数据回来,保证⽹网络最⼤大的利利⽤用率,同时也减⼩小了了等待时间,提升导出效率。 • 预取时如果⽆无数据可取,则休眠1s再取数据,既然没有数据则休眠时间加倍……⼀一直到32s为⽌止,过程中如果取到数据,则休眠时间重置为 1s,有效减少对底层存储的请求数量量。 简单 · 可信赖 数据推送协议优化 • 优化export0 码力 | 34 页 | 1.26 MB | 1 年前3Go在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 • 强大的标准库、丰富的第三方库、go test、pprof • 自动内存管理;内存泄漏与野指针是C/C++语言开发者的噩梦 • Go routine + channel;简单的并发与简易的数据同步 5 系统整体方案 mysql-group proxy proxy mysqld(M) mysqld(S) mysqld(S) mysql-group mysql-group mysql-group 主备自动切换(主-主模式)。 • 分表设计——按照Hash分表 • 分表设计——按照范围分表(年、月、日、整形) • 数据库表在多个mysql实例间平滑扩容 • 大表拆分为多个子表情况下的平滑扩容 7 系统整体方案 • 现存问题 • 数据库访问基本采用直连方式 • 无法满足数据访问平台化要求 • 配置管理方式落后,运维压力大 • 为什么采用Go来实现 • go诸多优点,可用性高 •0 码力 | 17 页 | 4.02 MB | 1 年前3如何消除程序中的数据竞争-周光远
如何消除程序中的数据竞争 周光远 华为 从一些问题说起 1 2 3 什么是数据竞争 Go语言中的数据竞争(data race): data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write. 数据竞争(data 且至少其中一次访问是写操作。 data Thread1 Thread2 data goroutine1 goroutine2 从微观看数据竞争 时间上:多个并发的读写操作被观察到的顺序无法预知。 空间上:并发读写时观察到非预期的数据。 a:1 b:2 a:2 b:1 a:1 b:2 a:2 b:1 a:1 b:1 a:2 b:2 Thread 1 Thread 2 接收完成(同一个数据); • 对于无缓冲channel:开始接收 → 发送完成(同一个数据); 开始发送 接收完成 其他的对于init函数,锁,协程,原子操作,sync包里的功能,还有许多保证,更详细可以看: https://golang.org/ref/mem https://go101.org/article/memory-model.html 消除数据竞争的原理 消除数据竞争,实质就0 码力 | 30 页 | 1.92 MB | 1 年前34.GPT 与数据库的生态整合
GPT 与数据库的生态整合 王琦智 PingCAP TiDB 开发者生态高级工程师 目 录 自然语言到 SQL 01 自然语言到图表 02 GPTs 调用数据库 API 03 总结 04 自然语言到SQL OSS Insight 自然语言到图表 Thoughts to insights made easy(with AI) GPTs 调用数据库 API Thank You0 码力 | 21 页 | 3.33 MB | 1 年前31.每秒百万数据点 Go 应用监控系统演进
每秒百万数据点 Go 应用监控系统演进 张平 AfterShip 高级 SRE 关于 AfterShip 拥抱云原生和开源系统 目 录 监控架构概览 01 如何监控 Go 应用? 02 Metrics 系统架构演进 03 Why VictoriaMetrics so good? 04 总结与展望 05 监控架构概览 第一部分 监控系统架构概览 -- 数据源 监控系统架构概览 2K+ 40K 1Mil+ 2020 年指标数据 业务指标数量 每秒写入数据点 Active Time Series 2018-2020 年架构 2020 年底面临的问题 ● 无法查询超过 30 天的数据 ● 查询慢,平均时间超过 2 分钟 ● 跨集群指标无法聚合 ● Prometheus 集群经常崩溃 ● 维护时 Prometheus 会丢数据 ● 成本高,需要大容量 SSD 磁盘 S3 2022 年中指标数据 14K+ 0.6Mil 30Mil+ 业务指标数量 每秒写入数据点 Active Time Series Thanos 架构优化 Querier Query-Frontend Store Gateway S3 Store Gateway Store Gateway Redis 2022 年底面临的问题 ● 超 100+ 倍数据点增长导致查询缓慢 ●0 码力 | 42 页 | 2.32 MB | 1 年前3Go 构建大型开源分布式数据库技术内幕
Go 搭建大型开源分布式数据库技术内幕 shenli@PingCAP 关于我 ● 申砾 (Shen Li) ● TiDB 技术负责人 ● 网易有道 / 360搜索 / PingCAP ● Infrastructure software engineer 为什么需要一个新的数据库? 从单机数据库到 NewSQL ● 关系型数据库 ● NoSQL ● 中间件 ● NewSQL Processing) ● 24/7 availability, even in case of datacenter outages ● Open source, of course 如何构建分布式数据库? 原则 ● 分层 ● Make it right and make it fast. ● 测试很重要 ● 简单易用 ● 和社区结合 架构 TiKV TiKV TiKV TiKV Metadata / Timestamp request Stateless SQL Layer Distributed Storage Layer gRPC gRPC gRPC 数据分片 ● Hash Based Partition ○ Redis ○ 不利于范围 Scan ● Range Based Partition ○ Hbase ○ Range 需要足够大且足够小0 码力 | 44 页 | 649.68 KB | 1 年前3NSQ - 陈冶
使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 使⽤案例 ⼴告点击数统计 Web Service MySQL cluster User Click User Click User Click Stateless Stat Service Stateless 2. 数据⼴播 MQ stream computing 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 ,缓冲服务故障 • 数据⼴播,分发给多个服务 使⽤案例 ⼴告点击数统计 Web Service MySQL cluster 3. 负载均衡 MQ stream computing Web Service stream computing stream computing 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 stream computing Web Service stream computing stream computing Msg 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 使⽤案例 ⼴告点击数统计 Web Service MySQL cluster0 码力 | 37 页 | 2.49 MB | 1 年前301. Erda 基于云原生的微服务可观测性 - 刘浩杨
服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 可观测性三大支柱 (一)Tracing 模型 (二)Metrics 时序模型 Writes are vertical,reads are horizontal (三)数据关联 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 设施、业务系统、用户终 端全面的数据指标 高实时性 通过流计算平台,数据 处理和告警延迟都在秒 级别 海量数据 存储处理 高性能的大数据处理架 构,轻松应对海量可观 测性数据处理 平台架构 可观测性数据采集 可观测性数据处理 数据存储选择 ES 数据索引管理 自动路由 指标到索引 01 02 03 自动索引滚动 根据容量和 TTL 自动评估数据 删除周期 InfluxQL0 码力 | 25 页 | 6.96 MB | 1 年前3用Go语言实现推送服务器
使用Redis实现数据共享 Go语言的并发模型 • 事件驱动,共享线程池 runtime.GOMAXPROCS(runtime.NumCPU()) • 使用“go”命令创建goroutine go sockstore.Start() • goroutine使用channel交换消息 – 异步场景,直接往指定channel发送数据 – 同步场景,往channel发送的数据中,包含一 个获取返回值的channel 上线效果 逻辑架构 去中心化设计 • 客户端随机连接 • Redis集中存储地址表 • 信息发送2跳到达 消息缓存设计 • 消息预存(Redis) • 尝试发送 • 发送成功后删除 客户端注册时序图 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 串行场景-Socket Server • 在主程序启动时启动 • 所有请求都用一个goroutine响应 • 对外0 码力 | 25 页 | 260.04 KB | 1 年前3Go Web编程
4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 6.1 session和cookie 6.2 Go如何使用session 3 REST 8.4 RPC 8.5 小结 9.安全与加密 9.1 预防CSRF攻击 9.2 确保输入过滤 9.3 避免XSS攻击 9.4 避免SQL注入 9.5 存储密码 9.6 加密和解密数据 9.7 小结 10.国际化和本地化 10.1 设置默认地区 10.2 本地化资源 10.3 国际化站点 4 10.4 小结 11.错误处理,调试和测试 11.1 错误处理 11.2 后记得重启Sublime生效,Ctrl+Shift+p打开Package Controll 输入pcip(即“Package Control: Install Package”的缩写)。 这个时候看左下角显示正在读取包数据,完成之后出现如下界面 图1.8 sublime安装插件界面 这个时候输入GoSublime,按确定就开始安装了。同理应用于SidebarEnhancements和Go Build。0 码力 | 295 页 | 5.91 MB | 1 年前3
共 79 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8