 Golang在接入层长连接服务中的实践-黄欣每天服务于千万级别的司机,数亿的用户 • 实时在线百万级别 • 每天平均70亿次的推送量 背景—总结 • 业务上核心依赖 • Golang成功的使用案例 目录 • 背景 • 心得 架构 • 整体架构图 架构—接口设计 • 原则 – 扩展性 – 稳定性(最好不用升级) • 解决方法 – Protobuf(golang) – 接口设计分层 • 框架层:模块间通信协议(类似tcp/udp) Route svr:cache + cache(standy) 架构—异地双活 • 要求 – 正常情况下: • 任何一个机房可推送到所有机房app – 异常情况下: • 本机房内推送可达 • 架构图如下 (核心解决路由共享问题) 架构—总结 • 异步通信接口 • 协议包业务态隔离 • 简单无状态 • 有状态的服务(涉及到存储)做到可降级 • 核心业务有自愈逻辑 简单实用,避免过度设计0 码力 | 31 页 | 1.67 MB | 1 年前3 Golang在接入层长连接服务中的实践-黄欣每天服务于千万级别的司机,数亿的用户 • 实时在线百万级别 • 每天平均70亿次的推送量 背景—总结 • 业务上核心依赖 • Golang成功的使用案例 目录 • 背景 • 心得 架构 • 整体架构图 架构—接口设计 • 原则 – 扩展性 – 稳定性(最好不用升级) • 解决方法 – Protobuf(golang) – 接口设计分层 • 框架层:模块间通信协议(类似tcp/udp) Route svr:cache + cache(standy) 架构—异地双活 • 要求 – 正常情况下: • 任何一个机房可推送到所有机房app – 异常情况下: • 本机房内推送可达 • 架构图如下 (核心解决路由共享问题) 架构—总结 • 异步通信接口 • 协议包业务态隔离 • 简单无状态 • 有状态的服务(涉及到存储)做到可降级 • 核心业务有自愈逻辑 简单实用,避免过度设计0 码力 | 31 页 | 1.67 MB | 1 年前3
 基于Go的大数据平台-党合萱基于Go的⼤大数据平台 七⽜牛云—党合萱 什什么是Pandora 简单 · 可信赖 Pandora架构图 Export Service API / Portal / 消息 消息 计算 计算 消息 导出任务 导出任务 导出任务 导出任务 导出任务 计算 消息 对象存储服务 HTTP0 码力 | 34 页 | 1.26 MB | 1 年前3 基于Go的大数据平台-党合萱基于Go的⼤大数据平台 七⽜牛云—党合萱 什什么是Pandora 简单 · 可信赖 Pandora架构图 Export Service API / Portal / 消息 消息 计算 计算 消息 导出任务 导出任务 导出任务 导出任务 导出任务 计算 消息 对象存储服务 HTTP0 码力 | 34 页 | 1.26 MB | 1 年前3
 Go可观测性实践• API • SDK • Exporter • Collector OTel Collector • Receiver • Processor • Exporter 微服务业务架构图 项目工程layout 遥测数据处理架构 链路追踪 第二部分  无所不在的部署  持续监控  低消耗  应用级透明  延展性 链路追踪设计目标 链路追踪 Dapper0 码力 | 35 页 | 2.88 MB | 1 年前3 Go可观测性实践• API • SDK • Exporter • Collector OTel Collector • Receiver • Processor • Exporter 微服务业务架构图 项目工程layout 遥测数据处理架构 链路追踪 第二部分  无所不在的部署  持续监控  低消耗  应用级透明  延展性 链路追踪设计目标 链路追踪 Dapper0 码力 | 35 页 | 2.88 MB | 1 年前3
 2.1.7 谈如何构建易于拆分的单体应用动态视图:通过对象之间的交互来说明⽤例是如何被实现的 ➢ 问题:如何把实体转化为软件架构中的模块/系统 对象? ➢ ⽅案:尽量去映射,采⽤相似的命名,减少理解 上的差异! 建模:通过表象看本质 09 业务架构图 ➢ 分层架构:变与不变 ➢ 实现⽅式:单体架构 vs 微服务架构 实战:基于go-kit构建易拆分的单体应⽤ 第三部分 实战:基于go-kit构建易于拆分的单体应⽤ 01 Go-kit0 码力 | 27 页 | 13.04 MB | 1 年前3 2.1.7 谈如何构建易于拆分的单体应用动态视图:通过对象之间的交互来说明⽤例是如何被实现的 ➢ 问题:如何把实体转化为软件架构中的模块/系统 对象? ➢ ⽅案:尽量去映射,采⽤相似的命名,减少理解 上的差异! 建模:通过表象看本质 09 业务架构图 ➢ 分层架构:变与不变 ➢ 实现⽅式:单体架构 vs 微服务架构 实战:基于go-kit构建易拆分的单体应⽤ 第三部分 实战:基于go-kit构建易于拆分的单体应⽤ 01 Go-kit0 码力 | 27 页 | 13.04 MB | 1 年前3
 Go Web编程另一个重要的REST原则是系统分层,这表示组件无法了解除了与它直接交互的层次以外的组件。通过将系统知识限制 在单个层,可以限制整个系统的复杂性,从而促进了底层的独立性。 下图即是REST的架构图: 189 图8.5 REST架构图 当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服 务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程另一个重要的REST原则是系统分层,这表示组件无法了解除了与它直接交互的层次以外的组件。通过将系统知识限制 在单个层,可以限制整个系统的复杂性,从而促进了底层的独立性。 下图即是REST的架构图: 189 图8.5 REST架构图 当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服 务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统0 码力 | 295 页 | 5.91 MB | 1 年前3
共 5 条
- 1













