Golang在接入层长连接服务中的实践-黄欣
Golang 在接入层长连接服务中的实践 黄欣 基础平台-架构部 目录 • 背景 • 架构 • 心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 rsp || nil So easy, So efficient 心得—coding—实现 • what’s diff? – conn svr • 常驻内存,内存中有个大连接对象map(资源问题) • 请求都是基于连接的(如果模块间存在资源的互相引用,当资源变更的情况 下,容易发生panic)(竟态问题) • 对象编程 – 封装:conn资源(包括goruntine)作为结构体封装起来,保证所有资源 statusLoop() 心得—profiling • Timer优化 • Channel使用优化 心得—timer优化 • 为什么需要优化? – 万级别的连接 – 每个连接上大量的定时任务(心跳检测,注册检测,认证检测) 实际情况:当10w左右连接,什么数据不收发,只有定时器检测心跳超时,cpu 能耗掉一个core • 怎么优化? – 特点: • 秒级别定时任务 • 范围最多60s – 方案:0 码力 | 31 页 | 1.67 MB | 1 年前3Go在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 平滑上下线Mysql。 • 主备自动切换(主-主模式)。 • 分表设计——按照Hash分表 • 分表设计——按照范围分表(年、月、日、整形) • 数据库表在多个mysql实例间平滑扩容 • 大表拆分为多个子表情况下的平滑扩容 7 系统整体方案 • 现存问题 • 数据库访问基本采用直连方式 • 无法满足数据访问平台化要求 • 配置管理方式落后,运维压力大 • 为什么采用Go来实现 • go诸多优点,可用性高0 码力 | 17 页 | 4.02 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 年前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 Raft0 码力 | 44 页 | 649.68 KB | 1 年前3Go Web编程
4.3 预防跨站脚本 4.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 s 转换为 []byte 类型 c[0] = 'c' s2 := string(c) // 再转换回 string 类型 fmt.Printf("%s\n", s2) Go中可以使用+操作符来连接两个字符串: s := "hello," m := " world" a := s + m fmt.Printf("%s\n", a) 修改字符串也可写为: s := "hello" s 后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览 器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内 容随后断开与该服务器之间的TCP连接。 图3.1 用户访问一个Web站点的过程0 码力 | 295 页 | 5.91 MB | 1 年前3Go 入门指南(The way to Go)
编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包含了当前最全面的学习 资源。本书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自 身在软件工程、编程语言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类 来进行讲解。 随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开发过程中开始经历大量的挫 折,在诸多问题上都不能给出令人满意的解决方案,尤其是在使用 分钟以内,如果你在 B 型树莓派上编译,一般需要 1 个小时),你会在终 端看到如下信息被打印: 图 2.3 完成编译后在终端打印的信息 注意事项 在测试 net/http 包时有一个测试会尝试连接 google.com ,你可能会看到如下所示的一个无厘头 的错误报告: Go入门指南 - 16 - 本文档使用 看云 构建 ‘make[2]: Leaving directory `/lo Billion = 1e9 // float constant const hardEight = (1 << 100) >> 97 根据上面的例子我们可以看到,反斜杠 \ 可以在常量表达式中作为多行的连接符使用。 与各种类型的数字型变量相比,你无需担心常量之间的类型转换问题,因为它们都是非常理想的数字。 不过需要注意的是,当常量赋值给一个精度过小的数字型变量时,可能会因为无法正确表达常量所代表的0 码力 | 380 页 | 2.97 MB | 1 年前3Go 入门指南(The way to Go)
编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包含了当前最全面的学习资源。本书 通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自身在软件工程、编程语 言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类来进行讲解。 随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开发过程中开始经历大量的挫折,在诸多 问题上都不能给出令人满意的解决方案,尤其是在使用 分钟以内,如果你在 B 型树莓派上编译,一般需要 1 个小时),你会在终端看 到如下信息被打印: 图 2.3 完成编译后在终端打印的信息 注意事项 在测试 net/http 包时有一个测试会尝试连接 google.com ,你可能会看到如下所示的一个无厘头的错误报 告: 1. ‘make[2]: Leaving directory `/localusr/go/src/pkg/net’ 1e9 // float constant 5. const hardEight = (1 << 100) >> 97 根据上面的例子我们可以看到,反斜杠 \ 可以在常量表达式中作为多行的连接符使用。 与各种类型的数字型变量相比,你无需担心常量之间的类型转换问题,因为它们都是非常理想的数字。 不过需要注意的是,当常量赋值给一个精度过小的数字型变量时,可能会因为无法正确表达常量所代表的数值而导致0 码力 | 466 页 | 4.44 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
锚节点 按需可扩展多层⼦链,基础⼦链为 扩展⼦链提供存证、互通等能⼒ 共识节点 ⾮共识节点 轻节点 轻客户端 共识节点 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端 Pacemaker机制保证系统活性 区块链平台关键技术-共识算法 20 趣链科技 版权所有 ©2016-2021 全连接 双向通信 • 统⼀配置 • ⾼效转发 • 并发能⼒强 全连接 双向通信 ⽹络⾃发现 ⾃适应路由 跨域转发 • 简化配置 • 动态调整 • 跨域通信 全连接转发策略 ⾃发现转发策略 区块链平台关键技术-自发现网络 21 趣链科技 版权所有 ©2016-2021 memory-table write-ahead log ... ... 异步写入 0802 0803 0804 leveldb leveldb leveldb 只读 读写 元数据 索引数据 区块数据库 索引数据库 区块链平台底层采用Filelog+IndexDB混合存储模型,以应对当前业务场景对高磁盘I/O频率和吞吐量的高要求。数据随区块 存储在区块链专用存储引擎Filelog,索引数据存储在由多0 码力 | 39 页 | 56.58 MB | 1 年前3如何使用 docker 部署一个 beego 项目
class="highlight-line">关于数据库 docker 中连接主机数据库直接用 ip 远程连接的方式了
原文链接:如何使用 docker 部署一个 beego 项目
docker 还有许多学习的地方0 码力 | 5 页 | 269.19 KB | 1 年前31.5 Go 语言构建高并发分布式系统实践
中, Go语⾔言优势体现在:开发体验好 、⼀一定量级下服务稳定 、性能满⾜足 需要 ⼀一定量级下服务稳定: 50+内部产品,万款开发平台app 实时⻓长连接数亿量级,⽇日独数⼗十亿量级 1分钟内亿量级⼲⼴广播,⽇日下发峰值百亿量级 400台物理机,9个独⽴立集群,国内外近10个IDC 运维管理的go语⾔言编写的常驻service服务实例接近3000个。 上⾏行通道,回调⽀支持 对智能硬件产品,提供定制化消息推送与转发服务 性能满⾜足需要: 线上单机最⾼高160w⻓长连接 (24核 E5-2630 @ 2.30GHz 64G内存 ) qps在2~5w(取决于协议版本,业务逻辑,接⼊入端⺴⽹网络状况) 测试环境,可以通过300w⻓长连接压测(⺴⽹网络,连接稳定,⽆无带宽限制,实际可以更⾼高 ,决定于⼲⼴广播时候业务内存开销的cpu消耗带来的⼼心跳或者业务延时能否接受) Android IOS Linux Web Windows Flash Iframe for ever 写 ������/ � �� �������� ������� 长连接客户端 认证或注册的io调 用 加载离线消息 ����� 客户端关注的 阻塞io逻辑,放 心阻塞执行不 用担心阻塞线 程,调度器会 帮忙调度其他 可执行协程 ������� ��� 读0 码力 | 39 页 | 5.23 MB | 1 年前3
共 49 条
- 1
- 2
- 3
- 4
- 5