Golang在接入层长连接服务中的实践-黄欣
Golang 在接入层长连接服务中的实践 黄欣 基础平台-架构部 目录 • 背景 • 架构 • 心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 整体架构图 架构—接口设计 • 原则 – 扩展性 – 稳定性(最好不用升级) • 解决方法 – Protobuf(golang) – 接口设计分层 • 框架层:模块间通信协议(类似tcp/udp) • 业务层:bytes(类似应用层)留给业务自己定义就好了 架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储)0 码力 | 31 页 | 1.67 MB | 1 年前3Rust 异步 Runtime 的兼容层 - 施继成
Rust 异步 Runtime 的兼容层 施继成 @ DatenLord Introduce what’s rust async runtime # Rust async runtime Analyze the reason of runtime isolation # Async runtime binding # Compatible layer 1 Create a wheel0 码力 | 22 页 | 957.41 KB | 1 年前3MLP网络层
全军出击:全连接层 主讲人:龙良曲 I know nothing Be practical nn.Linear relu? concisely ▪ inherit from nn.Module ▪ init layer in __init__ ▪ implement forward() Step1. Step2. Step3. nn.ReLU v.s. F.relu()0 码力 | 13 页 | 992.88 KB | 1 年前3全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
服务网格中管理任何七层流量 赵化冰@腾讯云 #IstioCon Huabing Zhao Software Engineer @ Tencent Cloud https://zhaohuabing.com @zhaohuabing @zhaohuabing @zhaohuabing @zhaohuabing #IstioCon Agenda ❏ Service Mesh 中的七层流量管理能力 中的七层流量管理能力 ❏ 几种扩展 Istio 流量管理能力的方法 ❏ Aeraki - 在 Isito 服务网格中管理所有七层流量 ❏ Demo - Dubbo Traffic Management ❏ MetaProtocol - Service Mesh 通用七层协议框架 #IstioCon Protocols in a Typical Microservice Application Service Security, Observability) #IstioCon What Do We Expect From a Service Mesh? 为了将基础设施的运维管理从应用代码中剥离,我们需要七层的流量管 理能力: ● Routing based on layer-7 header ○ Load balancing at requet level ○ HTTP host/header/url/method0 码力 | 29 页 | 2.11 MB | 1 年前3go-zero开源项目的成长史
0 码力 | 31 页 | 4.83 MB | 9 月前3美团点评2018技术年货
配置管理、上线的流程。同时,对于配置页面的开 发,少则需要1到2天的开发工时,研发成本高。问题总结如下: 1. 研发成本高,每个需求要开发新的配置管理页面。 2. 研发周期长,运营效率低,从需求的提出到运营上线周期长。 3. 灵活性差,对不同的运营维度(城市、版本、时间等)都需要事先确定好,无法动态调整。 上线流程“粗糙” 上线流程“粗糙” 在早期,运营配置上线流程需要研发同学参与。产 箭头所示)。从功能角度,大体上分为四层:数据层、 服务层、接入层和监控层。 APPKIT打造稳定、灵活、高效的运营配置平台 - 美团技术团队 4.1 数据层 4.1 数据层 数据层作为最底层的数据存储,其保存了最基本的运营后台数据、流程数据和线上数据。对持久化的数 据,我们采用MySQL进行存储;对于缓存数据,我们采用了Redis的解决方案。这样数据层形成基本的两 级存储结构:MySQ 操作都记录在这 里;流程数据,运营人员操作完成后,提供发布流程,预览及审核都在流程数据里进行;线上数据,审核 通过后,数据同步到线上数据,最终C端用户获取到的数据都是来源于线上数据。 谈到数据层,这里我们遇到了存储上的一个小问题。按城市运营的每条数据,都需要存储具体的城市ID列 表,其在数据库里的存储为 “1,2,3,4…… ”这样字符串。而这种数据存储在业务请求和条件过滤过程中, 存在着如下两个问题:0 码力 | 229 页 | 61.61 MB | 1 年前3Nacos架构&原理
规模:十万级服务/配置,百万级连接,具备强大扩展性。 15 > 简介 Nacos 生态 Nacos 几乎支持所有主流语言,其中 Java/Golang/Python 已经支持 Nacos 2.0 长链接协议,能 最大限度发挥 Nacos 性能。阿里微服务 DNS(Dubbo+Nacos+Spring-cloud-alibaba/Seata/ Sentinel)最佳实践,是 Java 微服务生态最佳解决方案;除此之外,Nacos 开放性,设计和讨论保持社区互动和透明,方便大家协作。 架构图 整体架构分为用户层、业务层、内核层和插件,用户层主要解决用户使用的易用性问题,业务层主 要解决服务发现和配置管理的功能问题,内核层解决分布式系统⼀致性、存储、高可用等核心问题, 插件解决扩展性问题。 Nacos 架构 < 18 用户层 OpenAPI:暴露标准 Rest 风格 HTTP 接口,简单易用,方便多语言集成。 CLI:命令行对产品进行轻量化管理,像 git ⼀样好用。 业务层 服务管理:实现服务 CRUD,域名 CRUD,服务健康状态检查,服务权重管理等功能。 配置管理:实现配置管 CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能。 元数据管理:提供元数据 CURD 和打标能力,为实现上层流量和服务灰度非常关键。 19 > Nacos 架构 内核层 插件机制:实现三个模块可分可合能力,实现扩展点0 码力 | 326 页 | 12.83 MB | 9 月前3消息中间件RocketMQ原理解析 - 斩秋
........................................................................................... 17 三: 长轮询 ................................................................................................. .............................................................................. 48 第五章 Remoting 通信层: .................................................................................................. .......................................................................................... 54 五:通信层的整体交互 ..............................................................................................0 码力 | 57 页 | 2.39 MB | 1 年前3Hello 算法 1.0.0b4 Java版
省略所有系数。例如,循环 2? 次、5? + 1 次等,都可以简化记为 ? 次,因为 ? 前面的系数对时间复 杂度没有影响。 3. 循环嵌套时使用乘法。总操作数量等于外层循环和内层循环操作数量之积,每一层循环依然可以分别 套用上述 1. 和 2. 技巧。 以下示例展示了使用上述技巧前、后的统计结果。 ?(?) = 2?(? + 1) + (5? + 1) + 2 完整统计 (‑.‑|||) = logRecur(float n) { if (n <= 1) return 0; return logRecur(n / 2) + 1; } 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 ?(?) 。 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 // === File: time_complexity 个互不重复的元素,求其所有可能的排列方案,方案数量为: ?! = ? × (? − 1) × (? − 2) × ⋯ × 2 × 1 阶乘通常使用递归实现。例如以下代码,第一层分裂出 ? 个,第二层分裂出 ? − 1 个,以此类推,直至第 ? 层时终止分裂。 // === File: time_complexity.java === /* 阶乘阶(递归实现) */ int factorialRecur(int0 码力 | 342 页 | 27.39 MB | 1 年前3Hello 算法 1.0.0b4 Python版
省略所有系数。例如,循环 2? 次、5? + 1 次等,都可以简化记为 ? 次,因为 ? 前面的系数对时间复 杂度没有影响。 3. 循环嵌套时使用乘法。总操作数量等于外层循环和内层循环操作数量之积,每一层循环依然可以分别 套用上述 1. 和 2. 技巧。 以下示例展示了使用上述技巧前、后的统计结果。 ?(?) = 2?(? + 1) + (5? + 1) + 2 完整统计 (‑.‑|||) = return 0 return log_recur(n / 2) + 1 2. 复杂度 hello‑algo.com 24 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 ?(?) 。 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 # === File: time_complexity 个互不重复的元素,求其所有可能的排列方案,方案数量为: ?! = ? × (? − 1) × (? − 2) × ⋯ × 2 × 1 阶乘通常使用递归实现。例如以下代码,第一层分裂出 ? 个,第二层分裂出 ? − 1 个,以此类推,直至第 ? 层时终止分裂。 2. 复杂度 hello‑algo.com 25 # === File: time_complexity.py === def factorial_recur(n:0 码力 | 329 页 | 27.34 MB | 1 年前3
共 982 条
- 1
- 2
- 3
- 4
- 5
- 6
- 99