前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源项目PolarisMesh月报:发布V 1.3.0 ,完美支持 proxyless 和 proxy 两种服务网格模式

开源项目PolarisMesh月报:发布V 1.3.0 ,完美支持 proxyless 和 proxy 两种服务网格模式

作者头像
腾讯云中间件团队
发布2021-12-02 10:40:16
1.6K0
发布2021-12-02 10:40:16
举报

导语

北极星(PolarisMesh )是腾讯开源的百万级服务发现和治理中心,积累了腾讯从虚拟机到容器时代的分布式服务治理经验。作为分布式和微服务架构中的核心组件,PolarisMesh 提供服务寻址、流量调度、故障容错和访问控制等一系列能力,在K8s 和虚拟机环境中可以无差别使用,支持主流的开发模式,兼容grpc、spring cloud和servicemesh等开源生态,帮助用户快速构建扩展性强、可用性高的业务架构,实现从传统架构到云原生架构的转型。

Github地址: https://github.com/polarismesh/polaris

背景

1. Proxy网格

对于proxy网格,这种模式能有效得将应用与治理组件解耦,便于应用以极低侵入的代价接入微服务体系。但是它却有一个难以规避的问题——性能以及资源消耗,proxy网格为了将应用与治理组件解耦,采取运行独立的proxy容器来接管业务容器的东西流量;为了达到治理能力,proxy需要能够解析业务之间的通信协议并根据其内容作出不同的治理动作,因此proxy实际上大部分的工作都是在频繁的消耗CPU进行序列化相关操作以及网络请求转发,降低整体业务的响应时长以及QPS。

2.proxyless网格

因为proxy网格难以规避的性能以及资源消耗问题,proxyless网格被重新提了起来,即proxy做的事情,再次回到了业务容器中——即通过引入一个轻量的SDK来负责原先proxy的任务。由于整个网格架构中没有了proxy这一环,性能降低以及资源消耗的问题得到了较好的解决。由于北极星诞生之初,就一并开发了多语言的轻量级的SDK作为北极星在proxyless的方案,并且也是腾讯内部分布式服务长期使用的开发方式。

在之前的版本中,北极星提供了多语言的轻量级高性能SDK,实现注册发现、流量调度、熔断降级和访问控制等服务治理功能。从v1.3.0 版本开始,北极星在通信协议层完成了对xDS协议的支持,可以直接作为envoy或者gRPC的proxyless形式的控制面,北极星对于两种网格模式的互联互通和统一治理能力的正式开放。

实现方案

为了实现proxyless服务与proxy服务的互联互通和统一治理,必须解决以下2个关键点:

  • 服务数据之间可互通
  • 治理规则的互通

由于通过istio默认使用了kubernetes crd作为服务注册中心,因此为了实现服务数据之间的互通,必须打通polaris与kubernetes crd这2个注册中心。polaris扩展kubernetes的controller的方式,开发了polaris-controller组件,通过监听service和endpoint事件,实现kubernetes的服务数据与polaris进行实时同步。从而解决服务数据互通问题。

为了解决治理规则互通的问题,可以通过2个方式来打通:

  1. polaris规则数据转换成istio的规则数据格式,并且与kubernetes的crd进行打通
  2. polaris规则数据转换成XDS数据,直接下发给envoy,不经过istio

为解决全量加载性能问题有两种方案:

  1. 修改Istio,让它支持按需加载服务数据
  2. 直接支持envoy的VHDS协议,envoy直接对接polaris按需加载服务数据

因为Istio社区已经全面转向MCP-OVER-XDS,将原来MCP改成MCP-OVER-XDS存在较大的协议调整工作量。

结合以上问题的可选解决方案,权衡各方面的考虑,我们最终决定采用envoy直接对接polaris的方案来解决一开始提出的3个问题,系统架构如下图:

北极星网格的优势

这个方案有三大优势

  • 多种微服务体系完美打通
  • K8s和虚拟机环境无差别使用
  • 支持多K8s集群之间的服务发现

1.多种微服务体系完美打通

在分布式和微服务架构的演进过程中,从部署环境以及应用+治理的结合模式,分别经历了不同的发展阶段。

对于部署环境

而对于应用和治理结合模式

可以看到,无论是部署环境,还是应用+治理结合模式,其发展都不是一蹴而就的,大部分情况下都存在过度阶段,因此这里就引入了不同的微服务体系:

  1. sdk+discovery(无kubernetes)
  2. sdk+discovery 以及 proxy网格(vm + kubernetes 混合部署)
  3. proxy网格 (kubernetes)
  4. proxyless网格(kubernetes)

对于上述不同的微服务技术体系,如何做到统一的治理

北极星不仅仅通过xDS协议的支持以及多语言客户端来解决1、3、4情况,同时还提供了polaris-controller组件,用于同步kubernetes中的service到polaris,使得polaris既有通过kubernetes注册服务,也有通过polaris注册的服务,解决了vm + kubernetes 混合部署模式下的应用之间互通互联的问题。

2. Kubernetes和虚拟机环境无差别使用

对于polaris来说,无论是在Kubernetes上的运行的服务还是运行在VM上的运行服务,统一转换为polaris的数据模型,由polaris充当控制面的角色,提供统一的服务操作入口以及服务治理规则定义,用户无需在关心自己的服务运行在何种环境下,也无需关心该如何统一管理多种运行环境下的服务实例。

无论在kubernetes环境还是在VM环境,通过提供polaris-agent组件,直接代理业务的DNS请求,通过对DNS的解析,返回被调服务的一个实例给主调方用于完成业务请求,让业务在代码无侵入前提下使得业务能够享受polaris的服务发现功能。

3.支持多Kubernetes集群之间的服务发现

随着业务规模的增加,可能出现不同业务不同kubernetes集群,如果出现不同业务之间需要相互服务调用,那么就需要解决跨kubernetes集群间服务发现的问题,当前istio要支持跨kubernetes集群的服务发现的话,两两kubernetes集群间都需要进行配置,那么随着kubernetes集群数变多,那么就需要不断的执行istio配置操作,相比之下,polaris支持多kubernetes集群服务发现,只需要用户在每个kubernetes集群部署一个polaris-controller,每个controller都指向同一个polaris-server集群即可。

1.3.0 Release Notes

Feature:

【polaris】接入层支持可观测性指标暴露给prometheus

【polaris】优化部署脚本使用体验问题

Bugfix:

【polaris】优化心跳处理方案,解决polaris重启可能导致实例健康状态不正确的问题

【polaris】修复部分单元测试用例

后续规划

【polaris-console】支持命名空间管理

【polaris-php】支持最好的语言PHP(7.x)接入

【spring-cloud-tencent】支持spring cloud 2020接入

【spring-boot-polaris】支持spring boot

更多详细的生态规划任务可以查看 issue:https://github.com/polarismesh/polaris/issues/163

Contributor招募啦!

1. 项目简介

北极星(PolarisMesh)是腾讯自研的云原生服务发现和治理中心,解决分布式和微服务架构中的服务寻址(注册发现、健康检查)、流量调度(动态路由、负载均衡)、故障容错(熔断、降级)和访问控制(鉴权、限流),支持多语言SDK、开发框架和服务网格等多种接入模式,支持跨K8s集群、跨K8s和VM的服务发现和治理。

GitHub代码库:https://github.com/polarismesh/polaris

2. 招募贡献者

  1. 制定北极星社区治理方案,规划北极星技术发展方向
  2. 共同维护代码和文档,涉及Java、Go、PHP、Python、C++和前端等多种开发
  3. 参加技术峰会、Meetup,分享北极星实现原理、业务案例

3. 组织模式

  1. contributor自愿在社区中认领工作
  2. 根据贡献定期选举committer和PMC成员
  3. 双周举行一次contributor例会

4. 您将获得

  1. 参与公司重要技术项目的建设,成为contributor/committer/PMC
  2. 拥有组织和策划开源社区活动的经验
  3. 在社区中结识优秀的小伙伴,扩大技术影响力,拥抱更多职业发展的可能性

扫码进入北极星交流群   

扫码认领开发者任务

往期

推荐

RoP重磅发布0.2.0版本:架构全新升级,消息准确性达100%》

《ZooKeeper系列文章:ZooKeeper 源码和实践揭秘(二)》

《深入理解Rabbit MQ与AMQP协议》

《应用多环境部署的最佳实践》

《单元化架构在金融行业的最佳实践》

《服务器又崩了?深度解析高可用架构的挑战和实践》

《Kratos技术系列|从Kratos设计看Go微服务工程实践》

《Pulsar技术系列 - 深度解读Pulsar Schema》

《Apache Pulsar事务机制原理解析|Apache Pulsar 技术系列》

扫描下方二维码关注本公众号,

了解更多微服务、消息队列的相关信息!

解锁超多鹅厂周边!

戳原文,查看北极星官网了解更多信息!

点个在看你最好看

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云中间件 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 招募贡献者
  • 3. 组织模式
  • 4. 您将获得
    • 《Pulsar技术系列 - 深度解读Pulsar Schema》
      • 《Apache Pulsar事务机制原理解析|Apache Pulsar 技术系列》
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档