Polaris 和 dubbogo 全面对接,让微服务更简单

news2024/7/6 20:25:37

036d6f1aaf42a950cc2b303ac3f0343c.gif

作者 | 邓正威,廖春涛(春少),赵新(花名 于雨)

755f4187ce4c41c77f20ebdf96eb2fb2.png

背景概述

什么是 Polaris

Polaris 是腾讯开源的服务治理平台,致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题,针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。

什么是 dubbogo

dubbogo 是一款高性能 Go 语言微服务 RPC 框架,在 Dubbo 多语言生态中扮演重要角色,是编写 go 语言微服务的最佳选择之一。开发者可以使用 dubbogo 框架高效地编写 RPC 服务,并支持与 dubbogo 、gRPC 服务跨语言互通;并且 dubbogo 本身提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。

为什么要对接

分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题,如何去解决、选用什么组件来解决、组件之间是否会存在冲突等等,相信已经让不少开发者难以招架。在 dubbogo 用户中,需要解决这些微服务架构中的问题,通常都会部署以下组件

  • Nacos(Zookeeper):解决服务管理、配置管理以及元数据管理

  • Sentinel:解决流量管理、故障容错

  • Prometheus、Skywalking:解决可观测性

可以发现,要解决这些问题不得不部署多个组件,并且每个组件都有各自的管控平台,数据联动性差,难以有一个全局的视角让用户可以很好地管理微服务。

Polaris 是一支持多语言多框架的云原生服务治理平台,具备服务管理、流量管理、故障容错、配置管理和可观测性五大功能,用户不需要在为选择什么组件而操心,直接在 Polaris 享受一站式服务治理平台所带来的便利。为此, Polaris 社区和 dubbogo 社区合作,将 Polaris 服务治理能力,与 dubbogo 框架相结合,便于 Go 应用开发者快速低门槛地进行微服务开发。

如何对接 Polaris

Polaris 有统一控制面和标准,数据面提供多语言sdk的实现给框架做集成。服务管理、流量管理、故障容错、配置管理和可观测性五大功能可直接通过 Polaris 的数据面直接接入,各个语言框架无需重复实现,统一了各个语言以及框架的服务治理能力。

因此,要完成 dubbo 与Polaris的集成,只需要使用 Polaris 提供的数据面 Polaris-Go SDK,通过 dubbogo 的 Extension 机制进行注入,无需额外进行服务治理逻辑的开发。

b9590670a50fee66589375ce6e919b45.png

技术架构

Polaris 通过实现 dubbogo 相关 Extension 插件,完成了功能的注入,用户只需要在配置中进行功能开启即可使用,无需进行代码改造。

从用户数据流的维度,当用户在 dubbogo 中启用 Polaris 的服务治理能力后,业务流量实际处理流程如下:

2f0a8b747d18d2387b7082602ffb9600.png

从架构分层的维度,北极星 SDK,插件,与 dubbogo 之间通过以下方式进行整合:

基于 Registry/ServiceDiscovery 的 dubbogo 扩展点,引入 Polaris 的服务注册能力 

46e6ef4f27c536f9069d623f3768d571.png

基于 Registry/ServiceDiscovery 的 dubbogo 扩展点,引入 Polaris 的服务发现能力 

f46a731cb57130826dea74909f9cff02.png

基于 PriorityRouter 的 dubbogo 扩展点,引入 Polaris 的动态路由能力

982d646d20b1173d3d56b517ee8c4d74.png

基于 TpsLimiter 的 dubbogo 扩展点,引入 Polaris 的访问限流能力

144528f04e09dc32a2df8c513bbd2781.png

4300ed7ea6c788e2a8195edd29e11808.png

如何使用


当前 dubbogo 与 polaris 服务治理能力对接情况(基于dubbogo v3.0.4-rc1版本)

服务管理

服务注册

已支持

服务发现

已支持

健康检查

已支持

流量管理

动态路由

已支持

负载均衡

即将支持

访问限流

已支持

故障容错

服务熔断

即将支持

节点熔断

即将支持

配置管理

配置中心

即将支持

  • 服务注册

当前 Polaris 已实现了 dubbogo 原生的服务注册扩展点,因此原本的 dubbogo 服务注册逻辑不需要进行任何调整,只需要在 dubbogo.yaml 配置文件中新增 protocol 为 polaris 的注册中心配置即可。

业务代码(dubbogo 原生使用方式)     

ed92f9dae3acb7979ba371ce2060da15.png

dubbogo.yaml 配置文件

c8b6b78f8d0c20d0f41953c86156e230.png

调整完 dubbogo.yam 配置文件后,启动服务,可以在北极星控制台直接观察到服务实例

d010bf8ffae3171c1e73562f85950b38.png

  • 服务发现

dubbogo 在进行服务调用时,会先通过 Polaris Registry 的 Extension 获取到服务的实例列表,然后转换为 dubbogo invoker,最终完成 dubbogo 服务调用。

当前 Polaris 已实现了 dubbogo 原生的服务发现扩展点,因此原本的 dubbogo 服务调用无需调整业务代码,仅需要在 dubbogo.yaml 中新增 protocol 为 polaris 的注册中心配置即可。

业务代码(dubbogo 原生使用方式)

b9cab73f3cb5e174506c1ea36c6f134f.png

dubbogo.yaml 配置

91485a44d432931a6d0b8cc636032684.png

  • 动态路由

动态路由可以实现基于dubbo的请求消息内容来对请求调度到不同的实例分组,比如将带了某些user标签的请求调度到灰度分组。

消息类型

dubbo消息内容

路由规则请求类型

消息头

attachment

请求头(HEADER)

RPC方法

method

路径(PATH)

假定一个场景,希望 uid 为 user-1 的请求,路由到版本为 2.0.0 的实例上,其他则路由到版本为 1.0.0 的实例上,那可以为 dubbogo 服务设置两条路由规则。

注意:在使用PolarisMesh的动态路由能力时,需要先启用PolarisMesh在dubbogo中的注册发现功能。

业务代码(dubbogo 原生使用方式)

bd0aaab2066a1e6c7cfd52996d3605c9.png

测试路由规则      

4b32dfe2d88209ed287eb1d780201348.png

兜底路由规则

4fc32466e91d8ca548b27a472b533ee4.png         

  • 访问限流

访问限流可以实现基于dubbo的请求消息内容来对请求进行访问限流,比如对 dubbogo 中的 GetUser 方法,对请求参数 Name 为 Alex 的请求进行限流,速率为10/s。

消息类型

dubbo消息内容

路由规则请求类型

消息头

attachment

请求头(HEADER)

RPC方法

method

路径(PATH)

限流规则:

       ee569438838fe577a43707af42b0d6b0.png         

在 Polaris 配置限流规则后,需要在 dubbogo 中启用 Polaris 的 TpsLimiter,具体开启配置参考如下

注意:在使用 PolarisMesh 的动态路由能力时,需要先启用 PolarisMesh 在 dubbogo 中的注册发现功能

业务代码(dubbogo 原生使用方式)

086f585dfca86385a66c6986cc72e5d0.png

dubbogo.yaml 配置文件

e07a17d53ac721e414599d22db28f6bb.png

37f508ef45f8e99dd0ff4f86845266b1.png

未来规划

当前 Polaris 的服务注册发现、动态路由、访问限流三大能力已经和 dubbogo 做了集成,后续 PolarisMesh 社区会继续和 dubbogo 社区进行合作,将 Polaris 的服务熔断、节点熔断、可观测性以及配置中心的能力融入到 dubbogo 中,让用户能够在 dubbogo 中使用 Polaris 一站式的服务治理功能。

除了能在 dubbogo上使用 Polaris 的一站式服务治理能力外,Polaris 社区还提供了其他语言框架的接入,因此相关开发者也能够享受到 Polaris 一站式服务治理带来的技术红利。

作者介绍: 

  • 邓正威,apache/dubbo-go committer

  • 廖春涛(春少),PolarisMesh 社区 PMC、apache/dubbo-go committer

  • 赵新(花名 于雨),dubbo-go 社区负责人

附录:

  • Polaris 项目:https://github.com/polarismesh/polaris

  • dubbogo 项目:https://github.com/apache/dubbo-go

  • dubbogo polaris example:https://github.com/apache/dubbo-go-samples/tree/master/polaris

  • 北极星服务注册文档:https://polarismesh.cn/docs/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%BD%BF%E7%94%A8/%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/%E6%9C%8D%E5%8A%A1%E5%88%97%E8%A1%A8/

  • 北极星访问限流文档:https://polarismesh.cn/docs/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%BD%BF%E7%94%A8/%E6%9C%8D%E5%8A%A1%E7%BD%91%E6%A0%BC/%E8%AE%BF%E9%97%AE%E9%99%90%E6%B5%81/

  • 北极星服务路由文档:https://polarismesh.cn/docs/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%BD%BF%E7%94%A8/%E6%9C%8D%E5%8A%A1%E7%BD%91%E6%A0%BC/%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1/


 

0050871b040c22834b16bada2b09eb2f.gif


 
☞小米商城推出新功能:AI 帮你挑手机;Stack Overflow 临时封杀 ChatGPT;Meta 裁员再生事端|极客头条
☞挑战 Google 搜索?OpenAI 发布最强 AI 对话系统 ChatGPT
☞AIGC , 超级热点 or 程序员创富新起点?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公路交叉数(POJ3067)-树状数组解决逆序对

题目大意: 东海岸有N个城市,西海岸有M个城市(N≤1000,M≤1000),将建K条公路。每个海岸的城市从北到南编号为1,2,…每条高速公路都是直线,连接东海岸和西海岸的城市。建设资金由高速公…

各开发语言DNS缓存配置建议

作者:翟贺龙 一、背景 在计算机领域,涉及性能优化动作时首先应被考虑的原则之一便是使用缓存,合理的数据缓存机制能够带来以下收益: 1.缩短数据获取路径,热点数据就近缓存以便后续快速读取,从而明显提升…

小侃设计模式(十六)-备忘录模式

1.概述 备忘录模式(Memento Pattern)是一种行为型模式,它的主要思想是在不破坏封装性的前提下,捕获一个对象的内部状态,并将该状态保存在该对象之外,这样以后就可将该对象恢复到原先保存的状态。它是相对简…

【项目问题】程序里,oracle相关的内容,为什么有些能显示表有些不能显示表,但是用oracle工具就可以看到所有表

运行过程中的问题客户提出问题找一下原因问题找到了那如何解决这个看不到的问题呢客户提出问题 1、oracle数据源链接成功了,但是在产品使用过程中发现,没有表,空空如也 找一下原因 先看一下用户:zd202207 2、再去看看数据库工…

效率倍增!5款超级好用的Python工具库!

Python 是一门简单易学却功能非常强大的语言。好玩实用的工具层出不穷,也给我们的工作生活带来极大的方便。在之前文章中我已多次分享过一些实用的工具,有兴趣的可以翻阅一下,今天我再分享 5 款非常实用的工具: LuxTranslatorsTextShotFancy…

C规范编辑笔记(六)

往期文章: C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) 正文: 今天我们继续来分享一下我们C规范编辑笔记第六篇~ 话不多说,我们直接来看: 1、 结构体变量不得在未指定初始化…

华为云大数据BI 为中小型企业智慧运营保驾护航

华为云大数据BI 为中小型企业智慧运营保驾护航 企业数字化转型中,必然面临信息数据潜在价值变现的问题,在解决这一问题的途中,企业可能面临多种困难,尤其是信息数据分析,这直接关系到企业能否实现潜在价值变现。对于小…

[附源码]Python计算机毕业设计Django疫情管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

chrome新特性-recorder

chrome新特性-recorder一、简介二、录制三、录制回放1.Chrome DevTool工具2.Puppeteer脚本(1) 介绍(2) 使用一、简介 recorder 与Selenium IDE浏览器插件类似,可用于自动化测试及脚本生成(Puppeteer脚本);前者为Web自动化测试框架Selenium的配套浏览器插件支持Java、…

一文学会所有Web应用安全知识点

据调查大部分网络安全事故是软件缺陷导致的网络攻击。由于应用程序代码漏洞和安全漏洞,我们的企业正在遭受越来越多的攻击。调查显示攻击者可以通过盗用凭证,攻击10个测试过的web应用程序中的9个,进行恶意软件注入以及网络钓鱼攻击。因此&…

QuTrunk与MindSpore量子神经网络初探

QuTrunk是启科量子开发和已经开源的一款量子编程框架软件产品,关于QuTrunk的详细介绍,用户可以访问启科的开发者社区站点详细了解,也可以进入github上此项目下进行查询。 QuTrunk开发框架是可以与第三方AI框架深度结合进行量子计算程序开发的…

安装 Unity 个人免费版

安装 Unity 个人免费版 正版是需要收费的,所以我们个人开发使用个人免费版就可以 一、下载Unity 1.打开unity官网 点击”下载Unity" 官网 https://unity.cn/releases 2.下拉,会有各种版本,进入Unity的下载页面,找到对应的版…

Nacos2.1.2+Seata1.5.2+Mysql8+SpringCloud+Feign实现分布式事务笔记

搭建环境可以使用docker或是手动自己构建 1.启动nacos服务,nacos/nacos登录http://nacos-ip:8848 2.修改Seata的配置文件,注册到nacos上: seata\conf\application.yml server:port: 7091spring:application:name: seata-serverlogging:con…

VS调试安卓Unity应用

最近遇到了一个bug,需要在安卓手机上实机调试才行,所以这里记录一下怎么用VS调试安卓应用。我使用的VS是2017,但是更新的2019等版本应该也是差不多的(毕竟实际上依赖的是Visual Studio Tools for Unity插件)。Unity版本…

管理RMAN备份_管理恢复目录(Recovery Catalog)

本章阐述如何管理RMAN恢复目录。Catalog是一个数据库模式,它包含一个或多个目标数据库的RMAN仓库数据。 1.RMAN恢复目录概述 本节阐述与管理恢复目录相关的基本概念。 1.1.RMAN恢复目录的目的 恢复目录是一个数据库模式,RMAN使…

OutOfMemory内存溢出问题排查

OutOfMemory内存溢出问题排查 错误 2022-12-06 00:43:53.296[,] [registrationTask1] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler.handleError96 - Unexpected error occurred in scheduled task. java.lang.OutOfMemoryError: Java heap space 2022-12-06 00:42:49.…

密码技术学习一:密码

0、前言 本文是作者阅读《图解密码技术》时,学习总结的一些知识,在此推荐想要深入学习密码知识的同志,将此书作为入门书来看还是比较适合的。 1、密码技术简介 1.1加密与解密 在两者通信过程中,不想通信的内容被第三方知道&am…

在R语言中进行缺失值填充:估算缺失值

介绍 缺失值被认为是预测建模的首要障碍。因此,掌握克服这些问题的方法很重要。最近我们被客户要求撰写关于缺失值处理的研究报告,包括一些图形和统计输出。 估算缺失值的方法的选择在很大程度上影响了模型的预测能力。在大多数统计分析方法中&#xf…

有状态软件如何在 k8s 上快速扩容甚至自动扩容

概述 在传统的虚机/物理机环境里, 如果我们想要对一个有状态应用扩容, 我们需要做哪些步骤? 申请虚机/物理机安装依赖下载安装包按规范配置主机名, hosts配置网络: 包括域名, DNS, 虚 ip, 防火墙...配置监控 今天虚机环境上出现了问题, 是因为 RabbitMQ 资源不足. 手动扩容…

一夜之间火爆GitHub的JavaWeb轻量级开发面试教程,终于浮出水面

前言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…