首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么trpc不直接在grpc的基础上二次开发呢,从头搞一个是怎么考虑的?

在这个问题中,您提到了TRPC和gRPC。TRPC是一个新的RPC框架,而gRPC是一个流行的RPC框架。在这里,我们将讨论为什么TRPC没有选择在gRPC的基础上进行二次开发,而是从头开始开发。

  1. 性能和优化:TRPC可能在性能和优化方面做了更多的工作,以满足特定的需求。从头开始开发可以让TRPC根据需要进行更深入的优化,以提高性能。
  2. 灵活性和定制化:从头开始开发可以让TRPC具有更高的灵活性和可定制性。这意味着TRPC可以更容易地适应不同的开发需求和场景。
  3. 易用性和简洁性:TRPC可能在易用性和简洁性方面有所改进,使得开发人员更容易理解和使用。
  4. 特定功能和集成:TRPC可能包含一些特定的功能或集成,这些功能在gRPC中并不存在,或者实现起来更加复杂。
  5. 独立发展:TRPC作为一个独立的框架,可以独立发展和迭代,不受gRPC的限制。这意味着TRPC可以更快地适应新的技术和需求。
  6. 知识产权和许可:TRPC可能涉及到一些知识产权和许可问题,使得从头开始开发成为更好的选择。

尽管TRPC从头开始开发,但它仍然可以使用许多gRPC的优秀特性。例如,TRPC可以使用gRPC的身份验证和授权机制,以及其他gRPC提供的工具和库。

总之,从头开始开发TRPC是一个有意识的决策,旨在满足特定的需求和优势。虽然TRPC不能直接在gRPC的基础上进行二次开发,但它仍然可以利用gRPC的优秀特性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从单体到微服务,腾讯文档微服务网关工程化演进实践

此外 @grpc/grpc-js 上层依赖在管理包时候,使用 ^ 来指定版本导致只会锁住包 major version。 1.5 为什么没有使用 lock 文件?...但随着项目的不断发展,架构不断演进,代码抽象会越来越多,如果仅有文件夹方式来组织项目,那么项目的维护会变得不堪重负。 2.2 代码组织极端 那怎么来组织代码?...或许这里有同学有疑问为什么接在项目的根目录进行镜像构建?...因此需要进一步优化:也就是将 Docker 构建根目录换为微服务自身目录下,那怎么处理 monorepo 依赖与根目录 node_modules 依赖并只复制当前微服务代码?...3.6 软链接与硬链接 软链接和硬链接在 pnpm 底层原理中使用很广泛,那软链接和硬链接区别是什么?又启发了我们用于项目优化什么地方

62852

基于腾讯 tRPC-Go 单体化改造怎么节省上万核 CPU

有没有一种方法,能够 “既要又要” ?本文基于 tRPC-Go 服务,提出并最终实践了一种经验证可行方法。...,我们自然想到,省去网络开销,直接在内存里存取该多好啊。...考虑到绝大部分 trpc proxy 都只是使用默认参数进行初始化即开箱即用,因此我们就将这些都统一收拢起来,构建了一个获取各种 client proxy repo 仓库(比如就简单命名为 "api...),得益于 TRPC 懒初始化机制,这些 proxy 创建了之后,只要不去调用它,那么即便配置里包含相关 client 配置,就不会报错。...本文所实践方法,其实对于其他 Go 语言框架也都是通用,包括且不限于 Gin、gRPC

1.4K71
  • 腾讯 tRPC-Go 教学——(2)trpc HTTP 能力

    这跟 gRPC 思路是一致。...显然,trpc 默认是使用 package/method 格式定义一个接口方法路径;而 alias 作用则是在这基础上再额外注册了一个路径。上面的这两个路径,都可以直接通过 http 访问到。...tRPC 文档会告诉你默认使用与工作目录同级 trpc_go.yaml 文件,但实际上考虑到在 Kubernetes 中挂载需要,我们往往会将配置文件独立在一个目录下,而可执行文件在另一个目录下,...尽管如此,笔者依然建议你因为有了这一条 feature,就随便写,咱们还是按规范好。后面这个规范在作为客户端时候也需要遵从,等用到了笔者再提吧。...与 trpc 官方给出建议、和 trpc 工具自动生成不同,这也就是为什么我不使用 trpc 工具默认行为。 同时,trpc 周边服务生态也是必不可少一环,必然需要一并讲述。

    1.3K72

    微服务香了?单体化改造为我们节省上万核 CPU!

    # 关注并星标腾讯云开发者 # 谈谈我在腾讯架构设计经验 # 第9期 | 基于腾讯 tRPC-Go 单体化改造 微服务一以来是服务治理基本盘之一,落地到云原生上,往往是每个 K8s pods 部署一个服务...但是在快速部署时候,有时候,我们可能需要一些宏服务优势。有没有一种方法,能够 “既要又要” ?本文基于 tRPC-Go 服务,提出并最终实践了一种经验证可行方法。...考虑到绝大部分 trpc proxy 都只是使用默认参数进行初始化即开箱即用,因此我们就将这些都统一收拢起来,构建了一个获取各种 client proxy repo 仓库(比如就简单命名为 "api...),得益于 tRPC 懒初始化机制,这些 Proxy 创建了之后,只要不去调用它,那么即便配置里包含相关 client 配置,就不会报错。...本文所实践方法,其实对于其他 Go 语言框架也都是通用,包括且不限于 Gin、gRPC

    72140

    从单体架构到分布式微服务架构思考

    从PHP角度看,PHP是Web开发中最好语言(至于为什么说它是Web开发中最好语言,我想原因有三个,第一个是通吃方案(网站开发、App后端、小程序等);第二个许多国内外网站建设都是基于PHP,早期淘宝也是如此...(2)在(1)基础上举例进行说明 以我曾经在某创业公司对EduSoho二次开发为例: 从业务相关性角度,当时我们做是编程教育项目,EduSoho是一个在线教育解决方案,业务性与我们完美契合。...(3)有的朋友可能会问:”新项目我可以最开始通过组件化来避免单体架构短板,但是老项目该怎么?”...为什么要用分布式?分布式要考虑哪些问题? 分布式是指数据和程序可以位于一个服务器上,而是分散到多个服务器,以网络上分散分布地理信息数据及受其影响数据库操作为研究对象一种理论计算模型。...简而言之可以概括为两大问题,一个是数据一致性,另一个是服务稳定性。 (2)集群是什么?为什么要集群?集群需要考虑哪些问题?

    1.5K11

    ASP.NET Core 使用 gRPC 初探

    (RPC通讯示意图) 为什么突然说到gRPC,其实以前就想说一说这个东西,也想尝试使用一下,一没有机会,一看我公众号小伙伴肯定都知道,这几天一在录制一个《eShopOnContainer微服务架构...比如我们提供了一个公共服务,很多人,甚至公司外部的人也可以访问这个服务,这时对于接口我们希望有更加严格约束,我们希望客户端给我们传递任意数据,尤其是考虑到安全性因素,我们通常需要对接口进行更加严格约束...,肯定有一个是解析protobuf文件一个是工具包,负责一些操作。...你可能会好奇,那我定义好了这一个文件,怎么来使用,别着急,分成两步,咱们先说第二步定义具体服务,第一步先卖个关子。...到这里就没有问题了,说完了系统默认模板创建方案,那现在我们不用这个方案,尝试一下,如果已经创建好了一个NetCoreAPI项目,比如我Blog.Core,如何在这个基础上,创建gRPC服务

    1.5K20

    一点企业做云经验

    在参考其他家产品时候,要充分考虑到每家产品面向客户及场景,也就是想明白他们为什么会那么实现。以云弹性伸缩功能来举例子。在公有云上,它是一个挺重要功能。...做法:按规律做事 任何事情都有其独特内在规律。违背了规律做事情,是要被惩罚,只是时间问题。 做事情肯定需要投入。云也例外,甚至投入要更高。...自己弄的话,算钱时候要算仔细了,不能只算研发团队那点工资,还有设备、运维团队、IDC等各种费用都得算。找外部团队的话,要考虑事情也不少,比如,现在团队会测试外面厂家产品?报价合理?口碑好不?...有烂尾项目历史?是真做产品和技术,还是做外包?是有真本事,还是动嘴皮?团队的人都在哪里,是不是都扑在某个大客户那里了?有找三四家做下对比测试吗? 关于云功能:真的要那么多云功能吗?...SDN是干啥,有哪些坑得先了解清楚;分布式文件系统是干啥,市面上有便宜又好用产品?分布式存储和SAN存储啥关系,是替代,还是互补,还是什么都不管反正就是要用?容器云平台真的需要吗?

    70530

    腾讯 tRPC-Go 教学——(7)服务配置和指标上报

    tRPC 框架推出时候,距离 Go 推出泛型还早。...客户端寻址热更新简介腾讯内部七彩石配置中心,除了业务逻辑配置本身,作为内部 tRPC 生态一部份,还提供了一个功能:客户端寻址热更新。这是什么意思?...阶段性总结我为什么要写 tRPC 系列文章讲完这篇文章后,tRPC 作为微服务架构基本生态内容就结束了。回顾了一下,这么多篇文章下来,我觉得我写并不好。...而作为趟过 tRPC 不少水使用者,知道 plugin 怎么情况下来看这篇官方 README,才能明白它罗列了些什么。...但是面对这 tRPC 文档现状,在不明白 tRPC 团队开源和宣传计划(嗯对,我在内网交流后,依然不明白)情况下,我也只好尽我个人绵薄之力,尽力宣传。

    63731

    鹅厂火热开发框架:trpc-go设计理念介绍

    作者:ronaldoliu,腾讯 IEG 后台开发工程师 trpc-go 是目前公司运用广泛一个开发框架,支持多协议扩展,能够一键集成各种公司现有平台功能,非常方便。那么它到底是怎么做到?...但是如果要考虑支持多协议的话,事情就变得麻烦了。首先面临问题就是,框架怎么从 socket 字节流中识别出本次请求协议类型?...当然还可能包含很多额外字段,比如用来做链路追踪 traceID、caller callee 等,用来区分测试环境和线上环境 EnvName…… 如果考虑这些,那么 Header 应该怎么定义,还能继续沿用...由于 trpc-go 要能够适配各种协议,那么基于 UDP 也需要考虑。...这个 f 感觉有点神奇,它可以把整个 filter 链一环一环串起来,到底怎么实现

    4.4K93

    刷题外传之深入浅出 RPC

    无论是 Leetcode 和层出 Online Judge, 核心是帮助大家锻炼 Coding 和解算法题能力。...怎么才能调用它们? OK, 进入正题。初学者、或者大部分学生写过程序都属于本地调用。 ? 看上面的例子,从 main 到 PrintValue 调用就是一个典型本地调用。...如果每次 RPC 调用都需要手写这么复杂序列化、反序列化过程,那可麻烦死了。 考虑到序列化、反序列化过程都是类似的,能否把他们抽象出来?...那么为什么圈子里流行着各种各样 RPC Framework ,比如最早 XML-based RPC, Facebook 开源 Thrift, Google 开源 gRPC....Thrift/gRPC 都是在 TCP 基础上实现自家应用层协议,效率高。(如果你还搞不清楚 TCP / HTTP 之间区别,等包子系列文章吧)。

    704100

    关于编程语言一篇闲笔

    Python 作为现在所有编程语言里最流行,其声名鹊起就是得益于在数据科学领域广泛使用和强大第三方包。有时候我也会在想,为什么 Python 就在大数据领域里面异军突起了?...明明大数据基础框架 Hadoop 是用 Java 写怎么大家都不用 Java 处理数据而是使用 Python ?...自从 Spark 推出了 Dataframe 功能,如果仅从数据处理效率方面考虑,选择 Scala、Python、Java、R 语言这四门语言任意一个是不影响大局。...最后是 Java,因为现在团队还停留在使用开源框架基础上,重点是实现业务需求,导致用到 Java 地方很少,想来想去,可能就是对异构数据传输框架 DataX 二次开发用的上了(后续有机会的话,简单聊聊我们团队对...DataX 二次开发和使用场景)。

    47120

    中科大软件学院硕士:实习秋招百多轮面试总结(中)

    说一下go基本特性,协程了解? 9. 怎么学习一门新知识?学习中遇到过什么困难?怎么解决? 10. 知道哪些攻击方法?(说了SYN洪泛);中间人代理了解过吗? 11. VPN用吗?都用来干嘛?...知道为什么嘛? 2. 本科阶段有什么收获?做项目怎么解决分歧?做项目有何收获? 3. 有没有一坚持下来事情?你觉得从本科到现在有何提升? 4. 以后发展规划?现在还有什么不足?...操作系统中子进程和父进程哪些是一样? 5. 有没有听说过ebpf? 6. 代码题:顺时针遍历数组; 二面: 1. 聊实习:在腾讯做过最难项目,有什么收获? 2. grpctrpc异同?...在百度?用过hadoop?Hadoop工作流程是怎么? 4. 底层如何实现分片和mapreduce?如果让你设计你会怎么做? 5. 代码题:二叉树俯视图 三面: 1....介绍一下trpc框架,和grpc有什么区别? 3. 如何实现自定义监控?监控上报和全链路追踪有什么区别? 4. 数据上报时候是采取“pull”还是“push”,这两种方式有什么优劣?

    66130

    基于腾讯 tRPC-Go 系统单体化改造

    点此一键订阅【每日精选时刻】专栏,吃瓜新鲜作品迷路!...基于腾讯 tRPC-Go 系统单体化改造微服务一以来是服务治理基本盘之一,落地到云原生上,往往是每个 K8s pods 部署一个服务,独立迭代、独立运维。...但是在快速部署时候,有时候,我们可能需要一些宏服务优势。有没有一种方法,能够 “既要又要” ?本文基于 tRPC-Go 服务,提出并最终实践了一种经验证可行方法。...本文原文发布在腾讯内网平台中,随着腾讯 tRPC 框架 正式开源, 笔者决定将敏感信息脱敏后发布至外网,也助力 tRPC 推广。...「连更分奖池、好文领大奖」基础上,增设「组队奖励加倍」玩法、「千里马与伯乐」玩法,所有奖项皆可兼得,让你一次赢更多。

    543153

    tRPC-Go 链路透传消息源码级解读

    msg 派生,消息派生过程中,具体拷贝了哪些信息?...抬头看看 c.client.Invoke 方法了解完消息派生,再来看看 RPC 调用请求核心过程,c.client 是一个 client.Client 接口类型对象,考虑到默认 tRPC 协议请求的话...,因为涉及我们要讨论链路透传中头部处理,我们看 opts.Codec.Encode 逻辑,它实现了对消息编码。...但是显然你在应用层是不能为什么?因为请求使用 msg 是在桩代码中派生,不是你应用层提供。所以,应用层想要获取链路回传信息,只有官方文档上那一条路。但是为什么我要提有第二种可能性?...那是因为你可以在 filter 里访问到这个 message,怎么访问?想想 trpc.Message(ctx)。总结到这里,涉及链路往返透传相关源码就剖析完整了,用一个流程图结束本文:

    14310

    单核QPS提升10倍,亿级日调用!QQ频道前端网关升级之路

    实现方案 着重展开下 WS 方案中三个关键点。实现细节、针对游戏场景优化(比如初始下行量大)等计划另开文章来写。 协议选择 为什么直接使用 WebSocket ?...在选择方案 2 实现 WS server 后,其实还面临这些情景: 业务 server 指定向某个用户推消息,但是用户不在线(没有活跃 socket)怎么办?...用户接收消息时候,链接中断、网络切换怎么办?...问题在于,这些错误信息太常见了,无法直接指向问题根源。那么,我们应该如何进一步探索?...每一步发展都不是事先规划,而且和最初设想完全不同。 当时同时存在其他可用替代方案:JSAPI(客户端方案)、HTTPSSO(后台方案),为什么最后落到 Node (前端)来做

    53811

    谷歌开源、高性能RPC框架:gRPC 使用体验

    ,对于相同键值对数据,不用每次请求和响应都发送; 头部表在 HTTP/2 连接有效期内一存在,由客户端和服务器共同维护更新; 每个新 HTTP 头键值对要么追加,要么替换头部表原来值。...,gRPC 协议在 HTTP 协议基础上,对 HTTP/2 有效包体(Frame Payload)做了进一步编码:gRPC 包头(5 字节)+gRPC 变长包头,其中: 5 字节 gRPC 包头由...如果对序列化字节流进行了压缩,gRPC 包头压缩标志为 1。 对比 tRPC 协议可知,gRPC 帧头和包头比 tRPC 协议帧头和包头要小,当然 HTTP/2 帧类型更复杂一些。...tRPC 协议帧定义如下图: gRPC 调用抓包分析 下面基于官方提供 gRPC-Go helloword 例子,使用 Wireshark 分析通过 tcpdump 抓包 gRPC 调用报文,加深对...字节(包含 HTTP/2 帧头),帧标识为 0x01:End Stream,流标识符为 1,然后是 HTTP/2 有效包体数据信息(18 字节),也就是经过 protobuf 序列化字节流 gRPC

    1.4K20

    想开发IM集群?先搞懂什么是RPC!

    我们梳理一下上面这个例子消息流转过程: 1)IM聊天消息首先会由用户A发往IM实例1; 2)IM实例1会将此条消息转交给IM实例2; 3)IM实例2会将此条消息最终投递给连接在本实例上用户B。...《IM单聊和群聊中在线状态同步应该用“推”还是“拉”?》 《IM群聊消息如此复杂,如何保证丢不重?》...6、为什么直接使用HTTP,而要RPC? 在日常业务中我们可以把功能封装成静态库、动态库、sdk、独立服务等,最常见也最方便还是HTTP这种形式调用。...虽然国家一在提倡使用普通话交流,但是这么多年过去了,你回一趟家乡探个亲什么就会发现身边的人还是流行说方言。...用户只要在其之上进行二次开发就行,应用对于底层 RPC 通讯等都是透明

    1.7K20

    IM开发基础知识补课(九):想开发IM集群?先搞懂什么是RPC!

    《IM单聊和群聊中在线状态同步应该用“推”还是“拉”?》 《IM群聊消息如此复杂,如何保证丢不重?》...怎么让我用别人东西像自己一样——屏蔽底层细节透明通信)。...6、为什么直接使用HTTP,而要RPC? 在日常业务中我们可以把功能封装成静态库、动态库、sdk、独立服务等,最常见也最方便还是HTTP这种形式调用。...虽然国家一在提倡使用普通话交流,但是这么多年过去了,你回一趟家乡探个亲什么就会发现身边的人还是流行说方言。...用户只要在其之上进行二次开发就行,应用对于底层 RPC 通讯等都是透明

    58110

    【技术分享】Go 工程化-前端性能监控接入层 Layout 设计实践

    既然 Go 社区已经规定了一些 Project Layout 标准模版,为什么我们还需要一个自己 Layout 规范?...假设放在 controller,是不是每个 controller 都容易堆积这样一段代码?(刚好这里不适应使用 middleware 校验),怎么共享?...,如果我们从 DAO一直到接口到客户端都使用这样一个结构定义,后续客户端更新,需要增加更多字段(甚至有一些接口是 DAO 层不需要),那在修改数据库字段时,还要考虑会不会影响展示层,这样就污染了...我们重新回到 DDD 的话题上,既然业界上也有这么多 DDD 实践,怎么不可直接用? 实际上,DDD 规定了分层,告诉了我们怎么分层比较好,但是没有告诉我们怎么做。...设计理念 RUM 基于 tRPC-Go 搭建, 参考了 kratos http://go-kratos.dev推荐 layout 方式,但是没有直接使用,并在这个基础上做了很多裁剪,这种方式更适合协作开发

    94020

    腾讯 tRPC-Go 框架核心实现源码解读

    我们直接看 callFunc 函数,它是整个 RPC 调用过程核心逻辑:大致看一眼的话,有几个重要函数调用,一个是 prepareRequestBuf,它完成整个请求序列化和编码;然后是 opts.Transport.RoundTrip...第9-10个字节表示帧头长度,也就是限定了 tRPC 协议下,报文头最大长度超过 65535 个字节。第11-14个字节表示请求 ID或者流 ID。...第15个字节表示当前报文使用 tRPC 协议版本号,而第 16 个字节是保留字节,保留字节是一种扩展性考虑,常见网络协议中都会有类似的设计。...,我们看看它 construct 方法:理解了这个协议,结合前面讲到被调方解码以及反序列化过程,我们就可以轻松知道怎么tRPC 帧进行分解了,进而我们就可以知道被调方是如何获得请求头数据了:...在 tRPC-Go 框架中,可以使用 (*codec.Message).WithClientMetaData 在运行时中设置链路透传信息,但是在协议里,是怎么传输

    44910
    领券