TarsGo微服务开发实践-利开园Docker TarsGo Tars+K8S DevOps ## 目录 1. RPC 2. 日志 3. 监控 4. 调用链 5. 网关 6. 错误码 7. 配置 8. 云原生 9. 标准化 ## 背景 • Tars是腾讯开源的微服务解决方案 · 高性能的RPC框架 • 丰富的服务治理能力 • 支持Golang/Cpp/Java/PHP/Nodejs 支持Golang/Cpp/Java/PHP/Nodejs • 腾讯内部(TAF)曾经应用最广的开发框架 • Tars应用实践:https://github.com/tarscloud/gopractice ## RPC:不应该只是RPC int sum(int a, int b); 接口定义 type calServerImp struct{} 服务端 func (c *calServerImp) Sum(a, b int32) logKv = append(logKv, k[len(logKeyPrefix):]) logKv = append(logKv, v) } } ## 监控:主动发现问题 · RPC接口默认监控 · 自定义业务监控 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 1790 码力 | 15 页 | 4.23 MB | 2 年前3
IPC性能极致优化方案-RPAL落地实践06a91/p2_1.jpg) 方案诞生的背景 01 全进程地址空间共享与保护 02 用户态进程切换 03 高效的Go Event Poller 04 RPC框架Kitex集成 05 性能收益与业务展望 06 ## 第一部分 ## 方案诞生的背景 ## 方案诞生的背景 几种常见的同机通信场景: 1. 微服务合并部署(亲和性部署、sidecar 2.异步线程唤醒/休眠(事件通知); 3. 数据拷贝(序列化/反序列化); ## 方案诞生的背景 能不能把库函数调用的高性能优势做到 IPC 里面,降低进程间的事件通知和数据拷贝开销? 以go-go微服务 RPC 通信场景为例,该问题可以抽象为,如何高效地在两个 go runtime 间进行函数调用?  第五部分 ## RPC 框架 Kitex 集成 ## RPC 框架 Kitex 集成 ## 指针读写抽象接口: type Conn interface { net.Conn RpalRead() (AckPointer0 码力 | 39 页 | 2.98 MB | 2 年前3
FISCO BCOS 2.5.0 中文文档7 3 安装 19 4 教程 25 5 使用手册 41 6 运维部署工具 223 7 SDK 287 8 区块链浏览器 399 9 系统设计 407 10 JSON-RPC API 497 11 常见问题解答 529 12 社区 533 FISCO BCOS 是一个稳定、高效、安全的区块链底层平台,经过多家机构、多个应用,长时间在生产环境运行的实际检验。 • 支持建链、扩容等操作,推荐构建企业级区块链时使用,快速使用方法可参考教程 • SDK:提供访问节点状态、修改区块链系统配置以及节点发送交易等接口。 · 浏览器详细介绍请参考 浏览器 • JSON-RPC接口可参考 JSON-RPC API · 系统设计文档请参考 系统设计 ## 关键特性 · 多群组:教程 使用手册 设计文档 · 并行计算:使用手册 设计文档 - 分布式存储: 使用手册 设计文档 ## 全面升级:参考安装搭建新链,重新向新节点提交所有历史交易,升级后节点包含v2.4.0所有新特性 • v2.4.0 Release Note #### 2.2.1 变更描述 ## 新特性 - 支持动态群组生命周期管理: 相关的RPC接口包括generateGroup、startGroup、stopGroup、removeGroup、recoverGroup · 支持网络流量和Gas统计 • Precompiled合约支持Gas0 码力 | 540 页 | 8.77 MB | 2 年前3
云原生go-zero微服务框架设计思考[Image](/uploads/documents/f/b/3/4/fb34ec45f803089948bd2070d4738c62/p6_1.jpg) ## go-zero是什么? Web & RPC微服务框架 ● 微服务代码生成工具goctl ☑ 通用API定义规范 ## go-zero的设计原则 ● 保持简单,第一原则 弹性设计,面向故障编程 工具大于约定和文档 ● 尽可能约束做一件事只有一种方式 Redis集群 Redis集群 Redis集群 数据库 MySQL集群 MongoDB集群 ClickHouse集群 ## 代码未动,数据先行 ● 定义数据边界 ● 数据库互相隔离,通过RPC访问 No join, no pain! 用户 商品 订单 物流 redis1 redis2 redis3 service mysql/mongo clusters ## 如何设计缓存 5057, hit_ratio: 99.7%, hit: 5044, miss: 13, db_fails: 0 Q ☐ * ⚠️ pro4 GOPHER CHINA 2020 ## rpc服务层 - zRPC ● 协议选择 - gRPC 服务发现方式 - etcd ● 负载均衡 - p2c ewma 支持自定义中间件 watch发现, etcd interface rpc CreateFs(CreateFsRequest) returns (CreateFsResponse); rpc MountFs(MountFsRequest) returns (MountFsResponse); rpc UmountFs(UmountFsRequest) returns (UmountFsResponse); rpc GetFsI GetFsInfo(GetFsInfoRequest) returns (GetFsInfoResponse); } // rpc UpdateFsInfo(UpdateFsInfoRequest) returns (UpdateFsInfoResponse); rpc DeleteFsInfo(DeleteFsInfoRequest) returns (DeleteFsInfoResponse); } #### MetaServerService { // dentry interface rpc GetDentry(GetDentryRequest) returns (GetDentryResponse); rpc ListDentry(ListDentryRequest) returns (ListDentryResponse); rpc CreateDentry(CreateDentryRequest)0 码力 | 15 页 | 80.33 KB | 1 年前3
FISCO BCOS 2.2.0 中文文档作,推荐构建企业级区块链时使用,快速使用方法可参考教程 - SDK:提供访问节点状态、修改区块链系统配置以及节点发送交易等接口。 - 浏览器详细介绍请参考浏览器 • JSON-RPC接口可参考 JSON-RPC API • 系统设计文档请参考 系统设计 ## 关键特性 • 多群组: 教程 使用手册 设计文档 并行计算: 使用手册 设计文档 • 分布式存储: 使用手册 设计文档 ## 新特性 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 ## 更新 从流程、存储、协议三方面进行优化,提升性能。 ### 1. 流程 • 异步提交RPC交易到交易池 • 并行化对交易池中交易的处理操作 • 优化特定数据的缓存策略 • 优化交易并行执行过程中锁粒度 - 优化部分对象的访问方式,减少拷贝花销 ### 2. 存储 • 限制表名最大长度,从64调整为50 com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.0.0] ## 变更描述 ## 新特性 • AMOP协议支持多播 • AMOP协议支持二进制传输 • JSON-RPC getTotalTransactionCount接口新增历史失败交易数统计 ## 更新 • RocksDB模式支持落盘加密 - 使用TCMalloc优化内存使用 ## 修复 - 修复P2P模块偶现不处理消息的问题0 码力 | 1156 页 | 10.03 MB | 2 年前3
HBASE-21879 Read HFile ’s Block into ByteBuffer directly.### 1. Background For reducing the Java GC impact to p99/p999 RPC latency, HBase 2.x has made an off-heap read and write path. The KV are allocated from the JVM off-heap, and the memory area in off-heap Now consider the implementation: Firstly, we need a global ByteBuffAllocator for RPC. when reading a block in RPC, we'll do: 1. Allocate ByteBuff from ByteBuffAllocator, and read the data from asynchronously (don't block the RPC); In theory, if the RPC finished, we need to free the ByteBuff, but we can't: ByteBuff can also be referenced by other RPC because it's still in RAMCache0 码力 | 18 页 | 1.14 MB | 2 年前3
Celery v4.0.1 Documentationtask failed, the exception and traceback). Results aren’t enabled by default, so if you want to do RPC or keep track of task results in a database you have to configure Celery to use a result backend. This [http://memcached.org], Redis [http://redis.io/], RPC (RabbitMQ) [http://www.rabbitmq.com/]/AMQP), and – or you can define your own. For this example we use the rpc result backend, that sends states back as transient setting if you choose to use a configuration module): app = Celery('tasks', backend='rpc://', broker='pyamqp://') Or if you want to use Redis as the result backend, but still0 码力 | 1040 页 | 1.37 MB | 2 年前3
CurveFS rename 接口实现方案下次访问的时候,带上对应 copyset 的最新 txid (copyset_txid),判断 PendingTx,如果 (copyset_txid >= PendingTxId && rpc_request.key == PendingTxKey),则表明 PendingTx 对应的事务是已经成功了,并且 PendingTx 对应事务刚好操作的是请求的 dentry,则返回 PendingTxKey (5)下次访问的时候,带上对应 copyset 的最新 txid (copyset_txid),判断 PendingTX,如果 (copyset_txid >= PendingTxId && rpc_request.key == PendingTxKey),则表明 PendingTx 对应的事务是已经成功了,并且 PendingTx 对应事务刚好操作的是请求的 dentry,则返回 PendingTxKey 但是如果是 rename 事务的话,则需要先处理这个 PendingTx: - 如果当前事务带上来的 rpc_request.txid == PendingTxId 的话,则表示上一次事务失败了,则将该 PendingTxKey 对应的 dentry 的副本删除即可 - 如果当前事务带上来的 rpc_request.txid > PendingTxId 的话,则表示上一次事务成功了,我们则更新0 码力 | 15 页 | 555.93 KB | 1 年前3
基于gRPC go实现消息发布订阅如何判断一个项目是否适合用qRPC来做实现? 5. 如果要使用gRPC实现,有没有什么快速学习的方法? 1. 什么是gRPC?gRPC go与gRPC的关系是什么? -- gRPC是2015年Google开源,RPC的一种,底层基于HTTP2传输 -- gRPC是一种框架,gRPC go是gRPC的一种实现;同理有其他各语言的实现。 2. gRPC与HTTP相比优势是什么?能否使用HTTP平替gRPC的实现? protocolbuf 有啥区别? -- gRPC 好比是 http,protocolbuf 好比是 http 传输时的 restful json 传输协议格式 7. go实现的rpc和java里面的rpc有啥差异? --rpc是远程过程调用,都需要通过每个语言的sdk调用,本质没差异 8. k8s内部实现了大量gRPC,对外通信为什么又要用http? -- 对内使用gRPC加快传输过程,对外使用http,方便客户端调用 端调用 ## gRPC介绍 ## Why gRPC? gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can run in any environment. It can efficiently connect services in and across data0 码力 | 31 页 | 2.42 MB | 2 年前3
共 904 条
- 1
- 2
- 3
- 4
- 5
- 6
- 91
相关搜索词
TarsGo微服务RPC服务治理云原生IPCRPAL用户态协议栈内核绕过RPC框架FISCO BCOS区块链联盟链SDKJSON-RPC APIgo-zero微服务框架HTTP协议Curve文件系统元数据Protorpc接口文件系统proto定义FISCO BCOS 2.2.0智能合约JSON-RPC接口Web3SDK分布式存储HBASE-21879HFileBlockByteBufferNetty's ByteBufAllocatorCeleryTaskPythonSecurityBrokerrename接口ChubaofsJuicefs事务方案分布式事务gRPC goTopic消息订阅发布模型protoPublisherSubscriber













