首页
学习
活动
专区
工具
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 的底层原理中使用很广泛,那软链接和硬链接的区别是什么?又启发了我们用于项目优化的什么地方呢?

65652

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

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

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

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

    1.5K72

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

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

    81440

    Linux高性能网络编程十谈|我在大厂的架构演进

    大家应该都经历过项目从0到1的过程,我想提一个问题:很多时候的架构是随着业务演进还是提前设计呢?...业务也发展到百万QPS,为了更好的服务治理和服务调用成本,不得不考虑另外的架构: (1)调研gRPC gRPC gRPC是多线程RPC Server,有成熟的生态,各种中间件,支持多语言等,对于从0到1...的架构: https://trpc.group/zh/docs/what-is-trpc/archtecture_design/ 基于上述的考虑和业务的发展,于是开始尝试以高性能为基础,将RPC Server...怎么办?... 是不是要合并业务逻辑,将架构简化?...大家应该都有自己的答案了。上述也是我从开发者小白追求如何写好一个高性能Server,到追求新的架构技术,到最后思考高性能,新技术到底是为什么服务的一段总结。

    7910

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

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

    1.6K11

    ASP.NET Core 使用 gRPC 初探

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

    1.6K20

    我的一点企业做云经验

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

    71330

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

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

    4.6K93

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

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

    81652

    刷题外传之深入浅出 RPC

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

    706100

    关于编程语言的一篇闲笔

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

    47320

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

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

    66930

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

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

    551153

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

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

    57911

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

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

    16910

    谷歌开源、高性能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.5K20

    想开发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.8K20

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

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

    59210

    RPC框架:从原理到选型,一文带你搞懂RPC

    那么对于远程调用来说,这些参数会以某种信息格式传递给网络上的另外一台计算机,这个信息格式是怎样构成的,调用方是不需要关心的。 应该有跨语言能力:为什么这样说呢?...RPC的目标就是要2~8这些步骤都封装起来,让用户对这些细节透明。 下面是网上的另外一幅图,感觉一目了然: 如何做到透明化远程服务调用 怎么封装通信细节才能让用户像以本地调用方式调用远程服务呢?...由于是开源框架,通信的双方可以进行二次开发,所以客户端和服务器端之间的通信会更加专注于业务层面的内容,减少了对由gRPC框架实现的底层通信的关注。...ProtoBuf在gRPC的框架中主要有三个作用: 定义数据结构 定义服务接口 通过序列化和反序列化,提升传输效率 为什么ProtoBuf会提高传输效率呢?...Dubbo vs Spring Cloud 使用 Dubbo 构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手

    27.6K914
    领券