iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >如何对支持多个版本的服务器的特定服务进行 thrift 调用
  • 295
分享到

如何对支持多个版本的服务器的特定服务进行 thrift 调用

2024-04-05 00:04:14 295人浏览 泡泡鱼
摘要

大家好,我们又见面了啊~本文《如何对支持多个版本的服务器的特定服务进行 thrift 调用》的内容中将会涉及到等等。如果你正在学习golang相关知识,欢迎关注我,以后会给大家带来更多Golang相

大家好,我们又见面了啊~本文《如何对支持多个版本的服务器的特定服务进行 thrift 调用》的内容中将会涉及到等等。如果你正在学习golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

假设我在同一个 thrift 文件中声明了以下服务: [我将省略结构定义,因为这只是一个示例]

service PositionService {
   PositionDTO findPosition(1:positionInputDTO) throws (1:PositionServiceException e);
 }

 service PositionServiceV2 {
   PositionDTO findPosition(1:positionInputDTO) throws (1:PositionServiceException e),
   OwnerStoresListDTO listPositions(1:ListPositionInputDTO) throws (1:PositionServiceException e);
 }

我编译了这个 thrift 文件,并为服务器生成了 java 代码,并为客户端生成了 go 代码。然后我尝试使用 positionservicev2client 在服务器上调用 listpositions 方法,但我不断收到错误无效的方法名称:listpositions 作为来自服务器的响应。

请记住,客户端和服务器都使用兼容的堆栈来进行这些调用,我已经实现了其他服务,但这是我遇到的第一个在同一个 thrift 文件中声明了多个服务的服务。我怎样才能拨打这样的电话?如有任何帮助,我们将不胜感激。


解决方案


以“老式方式”调用新服务

无法使用 positionservicev2 客户端调用 positionservice 服务器,因为它是不同的服务。即使你成功了,当你开始使用服务多路复用时,你仍然会遇到麻烦。

即使方法名称意外匹配(如 findposition()),也不能保证调用成功。参数列表可能不同,返回数据可能不同,或者 throws 子句可能不匹配。从接口契约来看,这是两个不同的服务。

底线:您可以使用 positionservicev2 客户端调用 positionservicev2 服务,或使用 positionservice 客户端调用 positionservice 服务器。

但在这种情况下,你仍然有一个选择。 thrift 支持服务级别的继承,如下所示:

service positionservice {
    positiondto findposition(1:positioninputdto) 
        throws (1: positionserviceexception e);
}

service positionservicev2 extends positionservice {
    ownerstoreslistdto listpositions(1:listpositioninputdto)  
        throws (1:positionserviceexception e);
}

当然,服务器仍然只能响应实际在服务器端实现的调用。使用 v2 客户端定位 v1 服务器不会神奇地实现 v2 接口。

什么是“软版本控制”?

使用 thrift,您无需执行所有这些操作。您基本上可以忘记我们上面写的内容并做得更简单:

service positionservice {

    // this method exists from the beginning
    positiondto findposition(1:positioninputdto) 
        throws (1: positionserviceexception e);

    // this method has been added later
    ownerstoreslistdto listpositions(1:listpositioninputdto)  
        throws (1:positionserviceexception e);

    // this method is no longer available
    //void someoldercallthatisnolongersupportedanymore()
}

这称为“软版本控制”,因为它完全消除了区分、调用、实现和维护同一 api 的不同“版本”的需要。呼叫要么存在,要么不存在。

对于像 com 接口这样的二进制 api,这个概念是不可能的,因为更改现有的 api 会立即破坏契约。但使用 thrift 和类似的框架是可能的。如果您足够努力,您仍然可以引入不兼容的更改,但您仍然可以调用其余部分。

如果您确实需要获取有关服务器功能、支持内容的一些信息,请考虑引入一些辅助方法,如下所示:

enum ServerCaps = { CanFoo, CanBar, SupportsBaz }

service PositionService {
    // tell me what features you support
    set<ServerCaps>  GetServerCapabilities()

    //... other methods here ...
}

ps:Asked and answered before

理论要掌握,实操不能落!以上关于《如何对支持多个版本的服务器的特定服务进行 thrift 调用》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

您可能感兴趣的文档:

--结束END--

本文标题: 如何对支持多个版本的服务器的特定服务进行 thrift 调用

本文链接: https://www.lsjlt.com/news/596637.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何对支持多个版本的服务器的特定服务进行 thrift 调用
    大家好,我们又见面了啊~本文《如何对支持多个版本的服务器的特定服务进行 thrift 调用》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相...
    99+
    2024-04-05
  • 阿里云服务器支持的PHP版本有哪些?
    简介:阿里云是目前中国最大的云计算服务商之一,提供丰富的云产品和服务,包括阿里云服务器。在阿里云服务器上,用户可以自由选择安装和运行各种应用程序,其中就包括PHP。那么,阿里云服务器支持哪些版本的PHP呢?本文将详细介绍。 一、PHP5.6...
    99+
    2024-01-25
    阿里 版本 服务器
  • 阿里云服务器支持哪些版本的手机?
    随着智能手机技术的不断发展,手机版本的更新换代也越来越快。然而,对于一些企业和个人来说,他们可能需要使用阿里云服务器来支持自己的业务。那么,阿里云服务器支持哪些版本的手机呢?本文将对此进行详细说明。 阿里云服务器是一款由阿里云推出的云服务器...
    99+
    2023-12-18
    阿里 版本 服务器
  • 微服务架构中如何进行服务的版本管理?
    随着现代化软件架构的发展,微服务架构已成为了许多企业选择的开发方式。它具有高可扩展性、高弹性和高可靠性等优点,因此越来越多的企业开始采用微服务架构来构建他们的应用程序。那么在微服务架构中,如何进行服务的版本管理呢?在本文中,我们将完成如下三...
    99+
    2023-05-16
    微服务架构 服务版本管理 API Gateway
  • 如何用SpringCloud的OpenFeign进行服务调用
    本篇内容介绍了“如何用SpringCloud的OpenFeign进行服务调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言Feign是一...
    99+
    2023-06-26
  • 如何使用Eclipse进行PHP的服务器端调试
    这篇文章将为大家详细讲解有关如何使用Eclipse进行PHP的服务器端调试,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先,得将您PHP本地运行时的php.ini里的xdebug.remote_enab...
    99+
    2023-06-04
  • 轻量应用服务器5m支持多少人用的
    轻量应用服务器通常指的是使用非常小的处理器和内存的轻量级服务器,它们可以安装在服务器的内部或者租赁在云计算提供商的网络附加存储设备上,例如NAS或DAS等。这些服务器在处理器和内存方面通常都是比较小型的,因此它们可以提供比较低廉的价格。 ...
    99+
    2023-10-26
    多少人 服务器
  • 如何对服务器进行速度的测试
    对服务器进行速度测试的方法:1、在服务器后台终端命令窗口中使用tracert命令进行测试;2、在服务器中打开DOS命令窗口,使用ping命令进行测试;3、使用GTmetrixgtmetrix网站速度测试工具对服务器进行网站速度测试;4、利用...
    99+
    2024-04-02
  • 如何对租用的美国服务器进行维护
    对租用美国服务器进行维护的方法:1、检查美国服务器本地硬盘是否满足当前业务需求;2、检查服务器事件日志,进行数据分析,排查服务器潜在安全隐患;3、定期更新美国服务器的系统补丁,防止被黑客利用漏洞进入侵;4、确保服务器通风顺畅,避免出现硬件故...
    99+
    2024-04-02
  • 如何对租用的香港服务器进行维护
    对租用的香港服务器进行维护的方法:1、及时给香港服务器安装系统补丁;2、安装网络杀毒软件,控制网络病毒的传播;3、安装并设置防火墙,防止非法访问;4、关闭服务器不需要的服务和端口,增加系统的安全隐患;5、保护好管理员账号和密码,避免被黑客截...
    99+
    2024-04-02
  • 如何在Windows的Apache服务器上配置对PHP和CGI的支持
    这篇文章主要介绍“如何在Windows的Apache服务器上配置对PHP和CGI的支持”,在日常操作中,相信很多人在如何在Windows的Apache服务器上配置对PHP和CGI的支持问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-05
  • 如何保持云服务器的稳定运行状态?
    1. 选择可靠的云服务提供商 选择一个可靠的云服务提供商是确保云服务器稳定运行的第一步。确保提供商具有良好的声誉、可靠的基础设施和高可用性的服务。一些知名的云服务提供商包括亚马逊AWS、微软Azure和谷歌云。 2. 配置自动化监控和报警...
    99+
    2023-10-27
    运行状态 稳定 服务器
  • 租用日本服务器时不支持的业务有哪些
    租用日本服务器时不支持的业务有:1、租用日本服务器时不支持钓鱼类网站业务,一旦被发现会立即封禁IP且对服务器的用户追究一定的责任;2、租用日本服务器时不支持侵权类的网站业务,一旦证据确凿则会对进行侵权的网站采取相应限制措施和整改要求;3、租...
    99+
    2024-04-02
  • 如何在多个对象 JSON 数组中对来自服务器的响应进行编码/编组
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《如何在多个对象 JSON 数组中对来自服务器的响应进行编码/编组》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都...
    99+
    2024-04-05
  • 如何进行租用日本高防服务器
    选择租用日本高防服务器的诀窍:1. 考虑日本高防服务器的机房运维能力,日本高防服务器的处理能力是否优秀。2.  考虑日本高防服务器的机房硬件条件,最好租用带有硬件防火墙、隐秘性好、机房宽带高、有应用类的WAF防火墙的服务器,最大程...
    99+
    2024-04-02
  • 阿里云服务器登录续费如何进行续费并保持服务稳定
    阿里云服务器是阿里云推出的一种计算服务,为用户提供强大的计算能力。但是,使用服务器的过程中,我们可能会遇到服务器到期需要续费的情况。本文将详细介绍如何进行阿里云服务器的登录续费,以及如何确保服务的稳定。 首先,我们需要打开阿里云官方网站,登...
    99+
    2023-11-23
    续费 阿里 稳定
  • 轻量应用服务器5m支持多少人用的手机
    轻量应用服务器5m支持多人用,这取决于应用程序的规模和功能需求。在一些轻量应用场景中,它可能只需要较少的计算资源和内存,并不需要5m的限制,但在其他应用场景中,5m可能需要更高的内存和处理器,以满足更多的用户需求。 因此,为了最大限度地利...
    99+
    2023-10-26
    多少人 服务器 手机
  • ip使用不受支持的协议,​客户端和服务器不支持常用的SSL协议版本或密码套件。
    win11家庭版,使用edge浏览器,导出附件是提示 xxx.xxx.xxx.xxx 使用不受支持的协议 客户端和服务器不支持常用的SSL协议版本或密码套件。 处理办法: 因为没有ie浏览器,所以改用360浏览器。 内核切换设置,没改之前...
    99+
    2023-09-28
    服务器 运维
  • 如何对美国服务器的端口进行分类
    对美国服务器端口进行分类的方法:1、从端口的性质来分类,有公认端口、注册端口、动态和私有端口三类;2、根据所提供的服务方式来分类,有TCP协议端口和UDP协议端口两类。具体内容如下:一、如果从端口的性质来分,通常可以分为公认端口,注册端口,...
    99+
    2024-04-02
  • SQLServer 错误 3169 该数据库是在运行版本 %ls 的服务器上备份的。 该版本与此服务器(运行版本 %ls)不兼容。 请在支持该备份的服务器上还原该数据库,或者使用与此服务器兼容的备份。
    详细信息 Attribute 值 产品名称 SQL Server 事件 ID 3169 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 NA 消息正文 该数据库是在运行版本 %ls 的服...
    99+
    2023-11-05
    备份 与此 版本
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作