前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >逻辑层就近接入实现调研

逻辑层就近接入实现调研

原创
作者头像
AIOPS
发布2023-10-15 20:33:37
1921
发布2023-10-15 20:33:37
举报
文章被收录于专栏:高可用高可用

背景概述

接入层高可用架构设计文章中,我们详细讨论了接入层的故障域并给出了解决方案,并结合一个具体案例,来说明如何实现接入层的高可用建设。

本文我们主要专注逻辑层。在容灾场景下,由于需要跨机房调用,所以很多客户都有一个疑问:我能不能让我的微服务就近访问?

其实有比较多的方案来实现这个功能。

方案概述

逻辑层就近接入,主要是指微服务之间的相互访问,从用户来的流量,经过业务网关路由后,不在本文讨论范围内。

整个业务流程来看,业务流量大概经过两个部分,主要是业务基础设施、业务程序。

业务基础设施层面,主要思路是感知基础设施部署情况,在基础设施寻址层面就做劫持。具体实现是智能DNS,但这种方式有较多的人力投入;如果采用了服务网格后,可以通过服务网格来自动化管理,具体参考:TCM同城双活设计方案-腾讯云开发者社区-腾讯云

业务程序上实现,一般开源框架就包含了这部分的内容,下面我们以dubbo为例分析说明。

应用框架层调研

由于阿里巴巴影响力,国内比较多的互联网公司使用Dubbo作为微服务框架,基于这个开源框架来谈一谈开源产品的就近接入实现。

Dubbo 2.7之前版本,原生不支持就近访问,需进行编码实现,一般有两种方式:Dubbo filter及Java agent。Dubbo2.7及之后版本,原生支持。下面是一些对比及实现思路

对比

Dubbo < 2.7

Dubbo >= 2.7

实现方案

Java agent

filter接口

ConditionRouter

具体实现

AOP编程方式,根据规划的IP规则,过滤invoker list

1、自定义filter 1、 修改@DubboService注解的filter字段,启用filter

路由规则中添加(IP根据实际情况修改):conditions: - host=10.10* => host=10.10* - host=10.20* => host=10.20*

对代码侵入性

上手曲线

较难,需新增组件,并且需修改启动方式,以挂载agent

开发简单,需考虑异区服务的兼容性

无开发成本,且在本区服务异常后,会自动重试异区服务

适用范围

广

基于框架

基于框架

其它的框架,基本也可以按照上面思路,实现就近接入,解决业务延时敏感问题:

1) java agent是基于jvm的,与框架无关,使用范围非常广

2) 接口属于框架的扩展能力,依赖具体框架。

3) 原生支持,也属于框架能力,依赖具体框架的实现。如spring cloud,原生就支持就近接入

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景概述
  • 方案概述
  • 应用框架层调研
相关产品与服务
服务网格
服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档