Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一种跨环境Tars调用的实现思路

一种跨环境Tars调用的实现思路

原创
作者头像
claudeliang
修改于 2019-08-26 03:10:10
修改于 2019-08-26 03:10:10
1.1K0
举报
文章被收录于专栏:奔跑的老肥羊奔跑的老肥羊

导语

Tars是腾讯开源的高性能RPC开发框架,详细介绍见Tars框架介绍。跨环境Tars调用的需求(两个不同系统,或两个不同环境系统的打通)时有发生,本文提供的是一种在不同Tars环境间,让服务可以通过registry互相调用的思路。既满足跨环境Tars调用的需求,又不失去Tars框架自带的服务发现、服务路由负载均衡功能,并尽可能减少对业务代码的侵入。

Tars服务交互

这里我简单的总结概述一下服务的交互流程如下:

tars.png
tars.png
  • 用户在web管理平台上发布服务,上传发布包至patch服务,并通过registry服务下发发布命令至具体节点的node服务上,node服务负责拉起server并定期将server的心跳转发给registry服务,由registry服务来统一维护服务的路由和管理
  • 当客户段服务client调用server时,client通过obj名字到registry服务拉取server的可用ip端口信息,然后根据ip端口信息以tcp或udp的方式访问server
  • Tars还支持一种直连模式,client通过在obj名字后@ip端口信息来调用server,此时client会忽略obj名字也不会去registry服务查询,直接通过写死的ip端口来进行服务调用

实现思路

要实现跨环境Tars调用,容易想到以下两种思路:

  • 通过上面说到的直连模式调用
  • 与Tars框架无关,被调方开放web接口供调用方访问

这两种思路分别存在一些问题:

  • 通过直连模式调用,就失去了通过registry服务路由的能力,设想一下被调方的server迁移了节点ip端口发生了变化,而调用方不知道,就会发生调用异常影响服务的使用
  • 被调方提供web接口,则需要被调方侵入业务代码进行服务提供方式的改造,相应的调用方的调用方式也要进行改造

这里我们的方案是将上述两种思路结合起来,如图:

tars2.jpg
tars2.jpg
  • client调用server_obj@proxy_client的ip端口,这样会走直连模式请求到proxy_client代理服务,这里clientproxy_client都是调用方自己部署的服务,走直连也是相对可控的
  • proxy_client通过https的方式访问proxy_server域名,同时带上client请求时的obj名等信息,这里被调方只要保持域名接口不变,内部服务可自由迁移
  • proxy_server在收到请求后,通过obj名字查询环境2的registry服务,然后进行服务调用,这时无论server如何迁移都可以通过registry服务来进行路由
  • 整个调用过程clientserver都无须改动一行代码,只需要在client端配置调用obj名字时@上代理的地址即可

结语

本文中的方案最初是在笔者所在腾讯某内部服务上云时使用,来满足IDC机房和云机房间不同环境间的服务调用。当前实现的初衷是满足不同环境Tars服务间的调用,但我想无论是什么框架思路是相通的,希望能在你遇到类似场景时,给你提供一些灵感😊。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
解读|TARS开源项目发布Go语言版本
导语:近日,Tars 开源项目在上海发布并开源了 Go 语言版本,其性能与 C++ 版本相当,比 gRPC 的性能高 5 倍。  ——编者 Tars 是腾讯开源的一款微服务框架,它于去年 4 月份开源,并于今年 6 月捐赠给了 Linux 基金会。Tars 为用户提供了涉及到开发和运维的一整套解决方案,帮助一个产品或者服务快速开发、发布、部署、上线和维护。它集可扩展协议编解码、高性能 RPC 通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建稳定可靠的分布式
腾讯开源
2018/10/12
3.1K0
解读|TARS开源项目发布Go语言版本
腾讯推出高性能 RPC 开发框架
Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。
会呼吸的Coder
2020/09/28
6340
TARS、gRPC、Service Mesh……究竟哪个微服务框架适合你?
第一类是无服务治理的,这一类基本可以看做是一个RPC框架。RPC发展到现在已经有几十年的时间了,主要代表为gRPC、BRPC、Thrift,它们也都有对外开源的代码。
腾讯云开发者
2020/03/16
8.8K0
Tars Java 客户端源码分析
在分布式计算中,远程过程调用(Remote Procedure Call,缩写 RPC)允许运行于一台计算机的程序调用另一个地址空间计算机的程序,就像调用本地程序一样,无需额外地为这个交互作用涉及到的代理对象构建、网络协议等进行编程。
2020labs小助手
2021/05/08
1K0
TARS RPC 通信框架|提供多种远程调用方式
TARS 中提供了一套高性能 RPC 通信框架,实现了服务间的高效通信。RPC 作为微服务的核心技术,支撑着移动互联网时代下不断增长的用户和海量的请求。为了满足更多的需求,TARS 支持了同步、异步等多种调用方式。本文将会详细阐述 TARS 中的几种远程调用方式。
TARS基金会
2020/12/29
1.1K0
TARS RPC 通信框架|提供多种远程调用方式
Tars Java 客户端源码分析
在分布式计算中,远程过程调用(Remote Procedure Call,缩写 RPC)允许运行于一台计算机的程序调用另一个地址空间计算机的程序,就像调用本地程序一样,无需额外地为这个交互作用涉及到的代理对象构建、网络协议等进行编程。
TARS基金会
2021/05/08
1K0
Tars Java 客户端源码分析
线上SpringCloud网关调用微服务跨机房了,咋整?
公司内考虑到服务器资源成本的问题,目前业务上还在进行服务的容器化改造和迁移,计划将容器化后的服务,以及一些中间件(MQ、DB、ES、Redis等)尽量都迁移到其他机房。
猿天地
2020/03/11
1.5K0
分布式 – 公司使用什么RPC框架,聊聊你理解的RPC原理
以前在做一个规模不大的系统的时候,用的是单体架构,一台服务器部署上一个应用和数据库也就够了。
全栈程序员站长
2022/08/26
6750
分布式 – 公司使用什么RPC框架,聊聊你理解的RPC原理
分布式基础概念-RPC之Dubbo[1]
RPC要求在调用方中放置被调用的方法的接口。调用方只要调用了这些接口,就相当于调用了被调用方的实际方法,十分易用。于是,调用方可以像调用内部接口一样调用远程的方法,而不用封装参数名和参数值等操作。
@派大星
2023/11/07
2200
spring整合各种RPC框架(netty、dubbo、dubbox、gRPC、Motan、Tars)-续(Tars)
接上文:spring整合各种RPC框架(netty、dubbo、dubbox、gRPC、Motan)-续(Motan)
逍遥壮士
2021/03/23
2.2K0
腾讯 Tars-Go 服务 Hello World——从 HTTP 开始
Tars 框架最新的版本已经把内部的 Taf-Go 开源为 Tars-Go。作为与时俱进的程序员,当然要尝鲜啦。
amc
2019/01/06
13.1K9
腾讯 Tars-Go 服务 Hello World——从 HTTP 开始
微服务开源框架TARS 之 框架服务解析
本文源自herman的系列文章之一《鹅厂开源框架TARS之运营服务监控》。相关代码已按TARS开源社区最新版本更新。
TARS基金会
2020/09/06
2.5K0
微服务开源框架TARS 之 框架服务解析
TARS的服务鉴权功能|避免数据泄露
在我们使用微服务架构时,经常会选择通过 RPC 通信框架方便地实现服务间的调用。但方便的同时也带来了一些安全隐患,任何用户都能够访问对外公开的接口,可能造成部分敏感数据的泄露,这是我们不希望看到的,怎么避免呢?这要求我们对访问的用户进行鉴别,因此我们需要一个细化到服务的鉴权访问机制。本文将介绍 TARS 的服务鉴权及其使用方法。
TARS基金会
2020/12/29
9900
TARS的服务鉴权功能|避免数据泄露
干货 | PHPCon 上 TARS-PHP 全面解读及 PPT 下载
2018年5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,腾讯开源项目TARS首次全面发布PHP版本,阅文集团高级开发工程师梁晨对PHP如何通过TARS构建高性能RPC框架做了经
DevOps时代
2018/06/22
1.3K0
13 游戏跨服架构进化之路
江贵龙,游戏行业从业8年,历任多款游戏项目服务器主程,服务器负责人。 关注游戏服务器架构及优化,监控预警,智能运维,数据统计分析等。
范蠡
2018/07/25
3.5K0
13 游戏跨服架构进化之路
Dubbo中的常用组件
微服务的架构主要包括服务描述、服务发现、服务调用、服务监控、服务追踪以及服务治理这几个基本组件。
架构狂人
2023/08/16
2700
Dubbo中的常用组件
如何优雅地实现高可用系统?
高可用系统的挑战 高可用系统是运维界老生常谈的话题之一。现在很多企业都要求平均无故障时间每年五个 9 的服务可用性。 一方面系统单点是高可用最大的天敌,这不得不在系统设计时增加“冗余”,容易造成资源浪
织云平台团队
2018/05/22
1.8K0
鹅厂开源框架tars之网络层实现
tars开源框架地址:https://github.com/Tencent/Tars
皮皮猪头
2019/03/01
5.9K0
Dubbo面试题(总结最全面的面试题)
如果是SpringBoot项目就只需要注解,或者开Application配置文件!!!
肉眼品世界
2022/11/29
1.7K0
Dubbo面试题(总结最全面的面试题)
13个速度与激情般的开源中件间
本文整理了阿里13个开源中件间产品的架构及功能介绍,结合阿里中间件团队的访谈及分享,涵盖了消息中间件、服务框架、数据层、应用服务器和大规模分布式稳定性平台等等。整体中间件在阿里生态中的分布,如下图所示:
王新栋
2019/08/27
2.4K0
13个速度与激情般的开源中件间
推荐阅读
相关推荐
解读|TARS开源项目发布Go语言版本
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档