基于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 年前3
电商消息系统架构演进&mdash0 码力 | 22 页 | 12.22 MB | 1 年前3
基于amqp实现的golang消息队列MaxQ7/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 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 生产者消费者 通信方式 存储方式 堆积能力 消息可靠性 生产消费关系 Pull/Push 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 5/22 2. IPC消息队列 跟消息队列相比,有哪些共性? 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.1680 码力 | 22 页 | 1.45 MB | 1 年前3
4 seata-golang 分布式事务框架微信号: scottlewis 分布式事务框架 Seata-Golang 刘晓敏 H3C ⽬ 录 Demo 演示 01 Seata 原理 02 Mysql driver 原理 03 Mysql driver 接⼊ 04 TODO & QA 05 分布式事务就是指事务的参与者、⽀持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系 统的不同节点之上。简单的说,就是 统的不同节点之上。简单的说,就是⼀次⼤的操作由不同的⼩操作组成,这些⼩的操作分布在不同的服务器 上,且属于不同的应⽤,分布式事务需要保证这些⼩操作要么全部成功,要么全部失败。本质上来说,分布 式事务就是为了保证不同数据库的数据⼀致性。 什么是分布式事务问题? Demo 演示 整体机制: • ⼀阶段:业务数据和回滚⽇志记录在同⼀个本地事务中提交,释放本地锁和连接资源。 • ⼆阶段: • 提交异步化,⾮常快速地完成。 • tc 交互,报 告分⽀事务的执⾏状态。如果执⾏ Commit,connCtx 有值则把 sqlUndoItemsBuffer 中的 undoLog 和业务 数据⼀起提交到数据库,然后报告 tc 事务分⽀提交的状态(成功还是失败),否则执⾏正常的提交。如果 执⾏ Rollback,connCtx 有值则回滚然后向 tc 报告分⽀执⾏失败,tc 会根据这个状态回滚整个全局事务, connCtx 没有值则只需正常回滚。0 码力 | 14 页 | 3.23 MB | 1 年前3
华为云分布式事务DTM最佳实践servicecomb.apache.org github.com/apache?q=servicecomb 华为云分布式事务DTM最佳实践. 王启军 2 github.com/apache?q=servicecomb servicecomb.apache.org 王启军,华为云PaaS团队架构师,负责微服 务框架的开发。曾任当当网架构师,主导电商平台 架构设计;曾就职于搜狐负责手机微博的研发。 Strong 业界常用的一致性分类 5 github.com/apache?q=servicecomb servicecomb.apache.org 方案\指标 2PC 传统事务 可靠事件 TCC 柔性事务 SAGA 补偿事务 数据一致性 强一致 最终一致 最终一致 最终一致 总体性能 低 高 取决于实现 取决于实现 业务侵入性 较低侵入 高侵入 高侵入 高侵入 适用广泛性 一般 一般 高 高 低 产品成熟度 高 高 一般 低 方案对比 6 github.com/apache?q=servicecomb servicecomb.apache.org 分布式事务管理中间件 (Distributed Transaction Management,DTM) 7 github.com/apache?q=servicecomb servicecomb.apache.org DTM总体架构(TCC)0 码力 | 15 页 | 3.10 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue.acm.org/detail.cfm?id=1394128 TCC • Try: 尝试执⾏行行业务 • 完成所有业务检查,预留留必须的业务资源 • • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 39 页 | 2.78 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue.acm.org/detail.cfm?id=1394128 TCC • Try: 尝试执⾏行行业务 • 完成所有业务检查,预留留必须的业务资源 • • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 33 页 | 2.38 MB | 1 年前3
百度超级链 XuperChain 3.7 中文文档3. 创建群组 7. 使用事件订阅功能 7.1. 事件订阅的接口 7.2. 使用事件订阅 8. 只读跨链场景使用文档 8.1. B网络搭建 8.2. A网络搭建 8.3. 跨链查询 9. 非事务场景跨链使用文档 9.1. 中继同步合约 9.2. 合约使用方法 9.3. 中继同步进程 开发应用 1. 电子存证合约 1.1. 问题引入 1.2. 数据结构的设计 1.3. 电子存证合约的功能实现 早期交易的输出,以证明资金来源。同样,在XuperModel中,每个事务读取的 数据需要引用上一个事务写入的数据。在XuperModel中,事务的输入表示在执 行智能合约期间读取的数据源,即事务的输出来源。事务的输出表示事务写入 状态数据库的数据,这些数据在未来事务执行智能合约时将被引用,如下图所 示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供智 为其提供智 能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写集和 结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再次执行 一次合约,但此时合约只能从读集读取数据。同样,写入数据也会在写入集中 生效。当验证完生成的写集和事务携带的写集一致时合约验证通过,将事务写 入账本,cache的原理如下所示,图中左边部分是合约预执行时的示意图,右 边部分是合约验证时的示意图: XuperModel合约验证0 码力 | 270 页 | 24.86 MB | 1 年前3
百度超级链 XuperChain 3.12-a中文文档Function) 是适用于密码学的哈希散列函数,是现代密码学 的基本工具。它是一种数学算法,将任意大小的数据(通常称为“消息”)映 射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为 协商算法,定义了双方如何安全的生成和交换密钥。 ECDSA (Elliptic Curve Digital Signature Algorithm): 是使用椭圆曲线密码学 实现的DSA(数字签名算法),一般发起人对消息摘要使用私钥签名,验证 者可以通过公钥对签名有效性进行验证。 椭圆曲线算法由于采用的椭圆曲线的不同,具有多种不同的算法标准,典型 的如: NIST标准,典型的曲线如P-256/P-384/P-521等; 计算、网络传输的资源开销也会少很多。 环签名是一种数字签名技术,环签名的一个安全属性是无法通过计算还原出 一组用户中具体使用私钥签名的用户。也就是说,使用环签名技术可以使一 组用户中的某一个人对消息进行签名,而并不会泄露签名者是这组用户中的 哪个人。环签名与组签名类似,但在两个关键方面有所不同:第一,单个签 名具有匿名性; 第二,任何一批用户都可以作为一个组使用,无需额外设置。 在实际使用中0 码力 | 336 页 | 12.62 MB | 1 年前3
百度超级链 XuperChain 3.12-c 中文文档Function) 是适用于密码学的哈希散列函数,是现代密码学 的基本工具。它是一种数学算法,将任意大小的数据(通常称为“消息”)映 射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为 协商算法,定义了双方如何安全的生成和交换密钥。 ECDSA (Elliptic Curve Digital Signature Algorithm): 是使用椭圆曲线密码学 实现的DSA(数字签名算法),一般发起人对消息摘要使用私钥签名,验证 者可以通过公钥对签名有效性进行验证。 椭圆曲线算法由于采用的椭圆曲线的不同,具有多种不同的算法标准,典型 的如: NIST标准,典型的曲线如P-256/P-384/P-521等; 计算、网络传输的资源开销也会少很多。 环签名是一种数字签名技术,环签名的一个安全属性是无法通过计算还原出 一组用户中具体使用私钥签名的用户。也就是说,使用环签名技术可以使一 组用户中的某一个人对消息进行签名,而并不会泄露签名者是这组用户中的 哪个人。环签名与组签名类似,但在两个关键方面有所不同:第一,单个签 名具有匿名性; 第二,任何一批用户都可以作为一个组使用,无需额外设置。 在实际使用中0 码力 | 336 页 | 12.62 MB | 1 年前3
共 323 条
- 1
- 2
- 3
- 4
- 5
- 6
- 33













