跨机房微服务高可用方案:DerbySoft路由服务设计与实现

导读:在微服务中,当服务跨多个公有云的可用区时候,我们采用什么样的服务访问策略以及保障其高可用?本文是 DerbySoft 架构师朱攀在高可用架构群的分享,介绍微服务中路由服务的设计。


0?wx_fmt=png朱攀,德比软件架构师,2007 年 2 月加入德比软件。主要负责数据对接平台的架构和实现。作为德比软件早期员工,从无到有的主导了德比软件数据对接平台的架构设计和实现,完成了对接平台多个版本的架构改进和升级。期间设计并实现了很多必要的基础设施和服务,如内部的 RPC 框架 derbysoft-rpc,路由服务 Router,分布式存储服务 DStorage,网关服务 DGateway 等,主要编程语言 Golang,Scala,Java。目前主要关注的方向在基础架构、微服务、大数据等。

背景介绍

我来自德比软件 (DerbySoft),今天跟大家介绍我们做的微服务架构中的路由服务。德比软件是一家旅游行业 B2B 公司,为全球酒店集团及其分销渠道提供数据对接服务,构建全球旅游分销网络( GDN)。目前, 公司拥有全球超过 20 万家酒店数据,每天处理 10 亿 + API 调用,每月处理 500 万 + 间夜的订单。服务的客户包括全球重要地区的顶级分销渠道,在线旅行社,垂直搜索引擎,批发商以及众多大型旅游经销商(如: booking.com, Expedia, Google, Ctrip 等)。


为什么需要路由服务?

先来看看我们的数据对接平台的一个总体架构图:

0?wx_fmt=png

(点击图片可放大浏览)


系统架构不是今天分享的重点,下文主要跟大家交流一下中间服务层中的路由服务( Router)。


微服务化之后,系统面临的一个突出问题是服务虽小,但是数量极多,如果这些服务全部在一个可用区内,服务之间的依赖还比较好管理,可以做服务自动注册和发现来实现依赖管理,但是如果服务分布在很多可用区域,尤其是跨国跨地区的可用区之间的依赖和调用,管理起来就比较麻烦。

下面是我画的一个服务之间的示范依赖图,实际情况的依赖可能会比图示更复杂:

0?wx_fmt=png


如果这些服务部署分布在不同国家或地区的可用区里,它们之间的依赖调用就更难管理了,另外,跨可用区服务之间的调用还需要考虑安全认证问题。我们内部的通讯协议是 TCP,自研的 RPC 框架 derbysoft-RPC( 多语言实现 ),序列化采用 Protocol Buffers,各个服务采用的主要编程语言有 Golang, Scala, Java 等,每个服务开不同的特殊端口,所有的服务都部署在 AWS 的 EC2 上,如果服务跨区域调用,访问权限配置也是一件麻烦的事情。

为了解决这种情况下服务之间的依赖调用问题、 API 安全问题和服务的高可用问题,我们设计开发了路由服务,解耦服务的调用者和提供者,简化网络拓扑图,简化服务器的安全配置。

下面是引入路由服务之后的服

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值