基于amqp实现的golang消息队列MaxQ
7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 1/22 基于amqp实现的golang消息队列 MaxQ 2017-07-01 张培培 饿了么-基础框架组 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 slide#1 2/22 内容 1. 队列 2. IPC消息队列 3. AMQP协议 4. MaxQ架构模型 5. MaxQ相关特性 6. 使用场景和案例 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 3/22 1. 队列 跟消息队列相比,有哪些共性? 7/1/2017 基于 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 4/22 生产者消费者 通信方式 存储方式 堆积能力 消息可靠性 生产消费关系 Pull/Push 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 5/22 2. IPC消息队列0 码力 | 22 页 | 1.45 MB | 1 年前3基于gRPC go实现消息发布订阅
使用gRPC go实现 基于Topic的高效消息订阅发布模型 姓名 张凯 中国电子云 目 录 gRPC go 介绍 01 gRPC四种通信模式及落地场景 02 根据proto生成go桩代码 03 订阅者动态注册 04 发布者消息推送 05 现场案例演示 06 gRPC go介绍 gRPC是什么? 01. 副标题 开篇思考几个问题 01. 副标题 gRPC介绍 Web开发 基于通信模式如何落地? 01. 副标题 流式传输 基于通信模式如何落地? 01. 副标题 以及,本次分享的 “ ” 基于Topic消息发布订阅 基于Topic的消息发布模型简介 01. 副标题 基于Topic的消息发布模型简介 01. 副标题 BRIAN KERNGHAN service PubSubService { rpc Publish(PublishRequest) 服务器和客户端的接口代码。 --go_out=.: 类似地,这个选项指定了非 gRPC 相关的 Protocol Buffers 消息结构体等 Go 语言代码的输出目录, 同样为当前目录。protoc-gen-go 插件会处理 .proto 文 件中的消息定义并生成对应的 Go 结构体。 订阅者动态注册 01. 副标题 type subscriber chan interface{}0 码力 | 31 页 | 2.42 MB | 1 年前3NSQ - 陈冶
Dive into NSQ 舜飞 - 陈冶 消息队列服务 • ⾯向跨进程/跨服务器通讯的组件 • 异步通信,将可并⾏化处理的同步操作解耦 使⽤案例 ⼴告点击数统计 Web Service MySQL User Click User Click User Click Stateless Stat Service Stateless 使⽤案例 ⼴告点击数统计 Web stream computing Msg 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 使⽤案例 ⼴告点击数统计 Web Service MySQL cluster User Click User Click User Click Stateless Stat • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 • MQ:分布式部署,排除⾃⾝单点故障 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 • MQ:分布式部署,排除⾃⾝单点故障 • MQ:具备横向扩展性,排除性能瓶颈0 码力 | 37 页 | 2.49 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 ⼯业物联⽹ 智慧城市 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 ⼯业物联⽹ 智慧城市 区块链平台关键技术-网络流控 提供交易拦截、消息分发、带宽限流等多维度⽹络流量控制服务,在请求激增场景下保证系统的稳定运⾏, 提⾼系统可⽤性 功 能 特 性 多维⽹络流控 节点⼊⼝ (JSON-RPC层) 核⼼模块 (共识、执⾏等) 节点出⼝ 交易拦截 消息分发 带宽限流 客户端 其他节点 节点间⽹络通信 (传递共识消息等) 系统外部 系统内部 交易拦截器限流0 码力 | 39 页 | 56.58 MB | 1 年前3Go语言 - 一些简单的读书分享
要做⼀个有好奇⼼的⼈ • 与有好奇⼼的⼯程师多交流 举例 公司内和队列相关的业务总是出故障,⽐如: • 公司⾥的团队使⽤的 kafka sdk 有问题,总会碰到断连不重 连的情况 • 上游发出来的订单状态机顺序因为⽹络问题会发⽣乱序,影 响我的计算流程 • 上游的业务团队会调整发出来的业务消息,经常导致下游发 ⽣故障 举例 公司内和队列相关的业务总是出故障,⽐如: • 公司⾥的团队使⽤的 kafka kafka sdk 有问题,总会碰到断连不重 连的情况 • 上游发出来的订单状态机顺序因为⽹络问题会发⽣乱序,影 响我的计算流程 • 上游的业务团队会调整发出来的业务消息,经常导致下游发 ⽣故障 Deprecation 章节 Dependa bot Dataflow Event time Window Watermark Schema Registry Data Valuation0 码力 | 16 页 | 9.09 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
当一个延迟调用语句被执行时,其中的延迟函数调用不会立即被执行,而是被 推入由当前协程维护的一个延迟调用队列(一个后进先出队列)。 当一个函数 调用返回(此时可能尚未完全退出)并进入它的退出阶段(第9章)后,所有在 执行此函数调用的过程中已经被推入延迟调用队列的调用将被按照它们被推入 的顺序逆序被弹出队列并执行。 当所有这些延迟调用执行完毕后,此函数调用 也就完全退出了。 下面这个例子展示了如何使用延迟调用函数。 的更多关于延迟调用(第29章)一文中读到这样的例子。 协程和延迟调用的实参的估值时刻 一个延迟调用的实参是在此调用对应的延迟调用语句被执行时被估值的。 或者 说,它们是在此延迟调用被推入延迟调用队列时被估值的。 这些被估值的结果 将在以后此延迟调用被执行的时候使用。 一个匿名函数体内的表达式是在此函数被执行的时候才会被逐渐估值的,不管 此函数是被普通调用还是延迟/协程调用。 一个例子: package 0 b: 3 b: 3 b: 3 第一个匿名函数中的循环打印出2、1和0这个序列,但是第二个匿名函数中的循 环打印出三个3。 因为第一个循环中的i是在fmt.Println函数调用被推入延迟调 用队列的时候估的值,而第二个循环中的i是在第二个匿名函数调用的退出阶段 估的值(此时循环变量i的值已经变为3)。 我们可以对第二个循环略加修改(使用两种方法),使得它和第一个循环打印 出相同的结果。0 码力 | 608 页 | 1.08 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
当一个延迟调用语句被执行时,其中的延迟函数调用不会立即被执行,而是被推入 由当前协程维护的一个延迟调用队列(一个后进先出队列)。 当一个函数调用返回 (此时可能尚未完全退出)并进入它的退出阶段(第9章)后,所有在执行此函数调 用的过程中已经被推入延迟调用队列的调用将被按照它们被推入的顺序逆序被弹出 队列并执行。 当所有这些延迟调用执行完毕后,此函数调用也就完全退出了。 下面这个例子展示了如何使用延迟调用函数。 多关于延迟调用(第29章)一文中读到这样的例子。 协程和延迟调用的实参的估值时刻 一个延迟调用的实参是在此调用对应的延迟调用语句被执行时被估值的。 或者说, 它们是在此延迟调用被推入延迟调用队列时被估值的。 这些被估值的结果将在以后 此延迟调用被执行的时候使用。 一个匿名函数体内的表达式是在此函数被执行的时候才会被逐渐估值的,不管此函 数是被普通调用还是延迟/协程调用。 一个例子: 3 b: 3 b: 3 第一个匿名函数中的循环打印出2、1和0这个序列,但是第二个匿名函数中的循环 打印出三个3。 因为第一个循环中的i是在fmt.Println函数调用被推入延迟调用 队列的时候估的值,而第二个循环中的i是在第二个匿名函数调用的退出阶段估的 值(此时循环变量i的值已经变为3)。 我们可以对第二个循环略加修改(使用两种方法),使得它和第一个循环打印出相 同的结果。0 码力 | 591 页 | 21.40 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
当一个延迟调用语句被执行时,其中的延迟函数调用不会立即被执行,而是被 推入由当前协程维护的一个延迟调用队列(一个后进先出队列)。 当一个函 数调用返回(此时可能尚未完全退出)并进入它的退出阶段(第9章)后,所 有在执行此函数调用的过程中已经被推入延迟调用队列的调用将被按照它们被 推入的顺序逆序被弹出队列并执行。 当所有这些延迟调用执行完毕后,此函 数调用也就完全退出了。 下面这个例子展示了如何使用延迟调用函数。 的更多关于延迟调用(第29章)一文中读到这样的例子。 协程和延迟调用的实参的估值时刻 一个延迟调用的实参是在此调用对应的延迟调用语句被执行时被估值的。 或 者说,它们是在此延迟调用被推入延迟调用队列时被估值的。 这些被估值的 结果将在以后此延迟调用被执行的时候使用。 一个匿名函数体内的表达式是在此函数被执行的时候才会被逐渐估值的,不管 此函数是被普通调用还是延迟/协程调用。 一个例子: 1| b: 3 b: 3 b: 3 第一个匿名函数中的循环打印出2、1和0这个序列,但是第二个匿名函数中的 循环打印出三个3。 因为第一个循环中的i是在fmt.Println函数调用被推入延 迟调用队列的时候估的值,而第二个循环中的i是在第二个匿名函数调用的退 出阶段估的值(此时循环变量i的值已经变为3)。 我们可以对第二个循环略加修改(使用两种方法),使得它和第一个循环打印 出相同的结果。0 码力 | 821 页 | 956.82 KB | 1 年前3Go在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求0 码力 | 17 页 | 4.02 MB | 1 年前3Go可观测性实践
当一个请求在处理跟踪控制路径的过程中,需要把跟踪的上下文存储在ThreadLocal中,在Go中 就是存储在Context中,一般约定每个方法第一个参数为Context(上下文)。 覆盖组件不限于:数据库、缓存、消息队列、RPC、HTTP等。 插桩(拦截器) 创建并命名上下文(HTTP请 求或gRPC)中已存在的任意 Span的子Span,开始计时 器计时,计算Span的时长, 在函数调用结束(defer)中完0 码力 | 35 页 | 2.88 MB | 1 年前3
共 46 条
- 1
- 2
- 3
- 4
- 5