1.5 Go 语言构建高并发分布式系统实践## go语言并发编程实践 以360消息推送系统为例 周洋 部门:360手机助手 Weibo: @johntech-o Date: 2015.04.25 ## 目录 go语言在基础服务开发领域的优势? 我遭遇了哪些挑战? 如何应对的? 具有go特色的运维 在高并发,通信交互复杂,重业务逻辑的分布式系统中,Go语言优势体现在:开发体验好、一定量级下服务稳定、性能满足需要 ## 以360消息推送系统为例 Pointer(v)) } ## 架构迭代 |caseid|用例名称|用例描述|测试结果|用例日志|comment|Cost| |---|---|---|---|---|---|---| |01|单播-高线补偿\_0|360tray global cluster1 测试协议3 cluster2 测试协议5|PASS|log||143| |02|广播离线补偿\_0|360tray global cluster1 |08|单播-指定用户在线-发送在线消息\_0|单播 1.用户建立长连接检查状态为在线 2.用单播接口发送在线消息 4.用3.检查用户是否收到消息(预期能收到)|PASS|log||53| ## 总结回顾 go语言在基于并发协作的,重业务逻辑的基础服务方向非常适用 适用 = 开发体验好 + 服务稳定 + 性能满足需要 go语言程序开发需要找到一种平衡,既利用协程带来的便利性又做适当集中化处理 套路 = 按请求和业务逻辑并行0 码力 | 39 页 | 5.23 MB | 2 年前3
从高并发到极端并发:百度 Feed 与春晚红包的高可用实践-吴永巍## 从高并发到极端并发: 百度Feed与春晚红包的高可用实践 吴永巍 百度 主任架构师 # TGO鲲鹏会 # 汇聚全球科技领导者的高端社群 全球12大城市 850+高端科技领导者 使命 Mission 为社会输送更多优秀的 科技领导者 ## 愿景 Vision 构建全球领先的有技术背景 优秀人才的学习成长平台  ## 目录 • 春晚项目,技术挑战 - 整体拆解,架构设计 - 各子系统高可用设计 • Feed信息流:常规到极端 全方位工程实践 ## 春晚,极端并发,技术实力最高级别的检验 • 春晚的力量 • 业界技术难题 现场直播,没有重来的机会 - 不仅仅是摇一摇红包 ✓信息流 + 视频 ✓语音 + 搜索 jpg) ## 春晚项目的技术挑战 • 从 “高并发” 到 “极端并发” • 万一出问题,负面影响不可挽回,需要“万无一失” • 只有短短一个月的准备时间 • 结合AI、推荐、搜索、视频等多项技术,复杂度高 每秒千万级并发 数亿用户参与 208亿次互动 ## 极端并发下的架构设计理念 • 从数万QPS的“高并发”到数千万QPS的“极端并发” √大量的技术沉淀和积累 √针对性的专项设计0 码力 | 28 页 | 58.98 MB | 2 年前3
可视化学习 Go 并发编程## 可视化学习 Go 并发编程 2017.8.5 黄庆兵 - 网易 bingohuang.com ## 并发 简单来说,并发是一种构造程序的方式  ## Concurrency is not Parallelism Slide (http://talks ents/9/d/7/e/9d7ec6880e87f715ac8d1b4b792dd0b8/p3_1.jpg) 1. 并发很强大 2.并发帮助实现并行,使并行(扩展等)变得容易 3. 并发不是并行,并发重点是架构,并行重点是执行,两者不同,但相关。 ## 可视化 并发(Concurrency) & 并行(Parallelism) 一图胜千言! • 并行(PARALLELISM) html) • 并发(CONCURRENCY) 这是并发 (/2017/go-concurrency-visualize/pingpong36.html) 为什么要关注并发?当今是多核的时代,并发的世界 ## 多核的时代  并发编程并不容易,但0 码力 | 29 页 | 1.48 MB | 2 年前3
1.6 Go并发编程实践 - 晁岳攀Go并发编程实践 晁岳攀 @colobu 微博 http://colobu.com 探探 Gopher China 2019 Agenda 基本同步原语 扩展同步原语 原子操作 Channel 内存模型 ’ alt=‘OCR图片’/> 基本同步原语 ’ alt=‘OCR图片’/> 基本同步原语 Mutex 互斥锁 Mutual exclusion, 任何 } ’ alt=‘OCR图片’/> 基本同步原语 RWMutex 可以被一堆的reader持有,或者被一个writer持有 适合大并发read的场景 零值是未加锁的状态 writer的Lock相对后续的reader的RLock优先级高 禁止递归读锁 ’ alt=‘OCR图片’/> 基本同步原语 RWMutex - 数据结构 type RWMutex struct //多了一次Done wg.Wait() fmt.Println(atomic.LoadInt64(&count)) ’ alt=‘OCR图片’/> 基本同步原语 Waitgroup - Add和Wait并发调用 for i := 0; i < 100; i++ { go func() { for { wg.Add(1)0 码力 | 82 页 | 16.62 MB | 1 月前3
MySQL高可用 - 多种方案## MYSQL 高可用方案探究 1 前言.....3 2 Lvs+Keepalived+Mysql 单点写入主主同步高可用方案.....3 2.1 方案简介.....3 2.2 方案架构图.....3 2.3 方案优缺点.....4 2.4 方案实战.....4 2.4.1 适用场景.....4 2.4.2 实战环境介绍.....4 2.4.3 Mysql 的安装和配置 backup 的 realserver 的配置.....7 2.4.9 Master 和 backup 的启动.....8 2.4.10 高可用方案测试.....9 3 Lvs+Keepalived+Mysql 单点写入读负载均衡主主同步高可用方案.....9 3.1 方案简介.....9 3.2 方案架构图.....9 3.3 方案优缺点.....9 3.4 适用场景 11 3.5.7 Master 和 backup 的 realserver 的配置.....15 3.5.8 Master 和 backup 的启动.....16 4 Heartbeat 高可用 Mysql 主主同步方案.....16 4.1 方案简介.....16 4.2 方案优缺点.....16 4.3 方案架构图.....17 4.4 适用场景.....17 40 码力 | 31 页 | 874.28 KB | 1 年前3
Curve元数据节点高可用Curve元数据节点高可用 • 1. 需求 • 2. 技术选型 • 3. etcd clientv3的concurrency介绍 • 3.1 etcd clientV3的concurrency模块构成 • 3.2 Campaign的流程 • 3.2.1 代码流程说明 • 3.2.2 举例说明Campagin流程 • 3.3 Observe的流程 4. MDS使用election模块的功能进行选主 异常 4.2.7 各情况汇总 ### 1. 需求 mds是元数据节点,负责空间分配,集群状态监控,集群节点间的资源均衡等,mds故障可能会导致client端无法写入。 因此,mds需要做高可用。满足多个mds,但同时只有一个mds节点提供服务,称该提供服务的mds节点为主,等待节点为备;主节点的服务挂掉之后,备节点能启动服务,尽量减小服务中断的时间。需要解决的问题就是:如何确定主备节点。 为大家熟知的就是zookeeper和etcd,考虑当前系统中mds有两个外部依赖模块,一是mysql,用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元数据信息。而etcd可以用于实现mds高可用,没必要引入其他组件。 使用etcd实现元数据节点的leader主要依赖于它的两个核心机制:TTL和CAS。TTL(time to live)指的是给一个key设置一个有效期,到期后key0 码力 | 30 页 | 2.42 MB | 1 年前3
Rust 异步并发框架在移动端的应用 - 陈明煜CHINA CONF 2023 第三届中国 Rust 开发者大会 6.17-6.18 @Shanghai # Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 ## 😍 ## Rust 异步并发框架在移动端的应用 Applications of Rust Runtime in Mobile  QCon 全球软件开发大会 INTERNATIONAL SOFTWARE DEVELOPMENT CONFERENCE BEIJING 2017 # 高性能高可用机票实时搜索系统 去哪儿网 梁启康 ## 议题 系统诉求 海量数据 设计思路 搜索框架 报价引擎 待解问题 ## 系统诉求 - 全网价最低 • 航线报价最全 - 实时性最好 • => 索引库 - 规则库写入量大,集群峰值达20K TPS · 要求同步延迟很低,不超过60s - 保持顺序一致性,如果先删后插变成先插后删,数据会不一致 · 数据最终一致 · 系统高可用 规则库 供应商 A 供应商 B DB Sync 供应商 M 索引库 北京 | 上海 成都 | 杭州 广州 | 郑州 南宁 | 天津 ## 报价引擎 — 数据同步 按 表 DataSync Canal Pipeline 解析 拆分 分配 入队 PEK-SHA CAN-NNG ZK Diff 按航线分表 ## 报价引擎 一 同步系统高可用 DB主主DB主 DB备B备备 Canal 主 Canal 土 Canal 备 Canal 备 DataSync DataSync DataSync DataSync ZK0 码力 | 26 页 | 1.94 MB | 2 年前3
新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜## 新语言,新思维 ## 解读一个并发问题的多种实现 陶召胜 ## next: 异步编程的问题 ## 变量读写冲突 异步任务1 读、写 共享变量 读、写 异步任务2 ## I O阻塞 object ExampleBlockingScala extends App { //所有并发任务在这个拥有10个线程的线程池中执行 implicit val ec = ExecutionContext ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(10)) //创建100个并发任务,每个任务都会阻塞5秒 (1 to 100).map(i => { println(s"Calling blocking Future: ${i}") Future { //阻塞5秒,模拟I/O阻塞 println(s"Blocking future finished ${i}") } }) //这是另一个并发任务,因为线程被大量I/O阻塞导致这个任务很少有机会得到执行 Future { (1 to 100).map(i => println(s"another a future0 码力 | 42 页 | 9.85 MB | 2 年前3
如何用 MySQL 构建全方位高可用应用# MySQL協助您搭建全方位的高可用應用 杜修文 甲骨文全球事業部 ## 安全港声明 以下内容旨在阐明产品的整体方向。该内容仅供参考,不可纳入任何合同。该信息不承诺提供任何资料、代码或功能,并且不应该作为制定购买决策的依据。本文档所述的 Oracle 产品的任何特性或功能的开发、发行和时间规划均由 Oracle 自行决定。 ## MySQL 高可用性解决方案  ## 支持高可用性的各个层 并不仅仅是可靠地存储数据 冗余应用服务器 数据的冗余访问路径  数据路由 数据冗余存储 ## 支持高可用性的各个层 并不仅仅是可靠地存储数据 冗余应用服务器 中继日志中 - SQL 线程:读取从数据库的中继日志中的复制事件,然后将其应用到从数据库 ## 为何进行复制? - 将数据库从 “主服务器” 复制到 “从服务器” – 数据的冗余副本奠定了高可用性的基础 – 通过在复制场中进行分布式查询来扩展 












