AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

北极星开源一周年:注册发现优化、服务治理的易用性提升、周边生态融入…

  • 2022-12-21
    北京
  • 本文字数:3170 字

    阅读完需:约 10 分钟

北极星开源一周年:注册发现优化、服务治理的易用性提升、周边生态融入…

北极星(Polaris Mesh)是开源的一体化服务治理平台,致力于解决分布式和微服务架构中的服务管理、流量管理、故障容错和配置管理问题,提供业务监控、流量监控、事件中心和操作记录等全方位的可观测性能力,帮助用户快速低门槛构建微服务。



截止目前,在社区各位开发者的支持下,北极星和 Spring Cloud Tencent 社区经过一年的开源运营,一共收到 5200+ Star、1400+ Fork,有 2400+ 社区爱好者加入了社区交流群。积累了好未来、海管家等多家企业用户的案例。在这里非常感谢使用北极星的用户,以及社区开发者和爱好者的支持。借此机会,我们一起回顾开源一周年以来的发展历程和未来的发展方向。



为什么要开源北极星


企业业务架构的稳定运营离不开服务治理,业界也有一些常用的服务治理套件,比如 istio,sentinel 等。但是,用户在使用这些服务治理套件时候,往往会遇到以下问题:


(1)部分组件只提供治理规则的管理能力,但是,用户需要完整用起来,还需要自己去解决服务数据的存取(注册中心),配置数据存取(配置中心),以及治理规则的可视化配置(web 控制台)的问题。


(2)部分组件与特定基础设施和具体数据面(k8s+Envoy)绑定,没法覆盖非 k8s 的应用、以及使用 Spring Cloud 等服务框架的应用直连接入场景。


(3)部分组件服务治理功能不齐全,缺少动态路由、灰度发布等微服务核心功能。


为了解决上面的问题,降低用户开发及运营微服务的门槛。北极星为服务治理提供一站式解决方案,覆盖服务注册中心、服务网格和配置中心的功能。用户只需要部署一套北极星,即可在任意的基础设施上,完整的使用北极星提供的路由灰度、熔断降级、限流鉴权等功能,快速构建微服务架构。


应用一般会基于服务框架进行构建微服务架构,在 Java 生态中,Spring Cloud 仍然是目前国内最主流的服务框架。为了让 Spring Cloud 用户能够更快速更全方位接入腾讯的开源微服务套件,也为了让社区应用开发者可以多一个国产的 Spring Cloud 套件的选择。


腾讯在同期也将 Spring Cloud Tencent 进行了开源 ,默认对接了北极星强大的微服务能力,也是国内首个支持了 Spring Boot 3.0 及 JDK17 的 Spring Cloud 套件。并且提供了 SDK 以及 Java Agent 等多种接入方式,供用户可以以零代码侵入的方式,快速将 Spring Cloud/Spring Boot 应用改造成微服务架构。


除 Spring Cloud 以外,北极星也为多款开源的多语言服务框架提供了原生的接入适配,比如 dubbo,gRPC 等,以支持所有应用的低成本接入。

一周年历程

项目演进

北极星开源的这一年间,一共发布了 35 个 release,关闭了 300+ issues。在这个过程中,我们在注册发现、服务治理、配置中心这几个方面,进行了全方位的升级。下面会分别进行介绍:

 

注册发现优化

由于北极星在架构上支持水平扩展,集群整体性能可以通过水平扩展提升,但是为了能节省用户的成本,提升单机版用户的体验,我们在 1.10.0 版本,为了提升单机性能,对控制面的整体逻辑进行以下优化:


优化冗余数据层交互:老版本北极星,为了保证服务数据一致性,单次数据的写入,会进行多次存储层查询进行依赖条件校验,新版本通过缓存+补偿的方式,去掉了重复校验的逻辑,与存储层交互优化到只有写入的 1 次。


注册流程异步化:将客户端的同步注册请求转换为异步注册请求,返回给客户端响应不在需要等待存储层的处理结果。同时,通过自动心跳上报重注册的方式,解决异步化后可能带来的一致性的问题。


性能压测:我们针对北极星控制面进行了压测,在 8C16G 规格下,服务发现的 TPS 相比同类注册中心有较大的提升。




服务治理的易用性提升

服务治理是北极星的核心能力之一,在开源的过程中,为了降低用户使用服务治理的成本,北极星在以下方面进行了优化:

访问限流:从交互和限流精细化层面进行优化,支持针对请求参数、接口、主调服务的维度进行精细化限流,也同时支持网关层限流和微服务限流。



动态路由:从场景化上进行了优化,从微服务的使用场景上,细分了测试环境路由、灰度发布等场景,并且对于无法覆盖的场景,通过通用的自定义路由来进行覆盖,能完全满足所有的路由调度相关的场景诉求。



熔断降级:从功能和交互上进行了补齐,支持了服务级、接口级、分组级等多级熔断策略,同时支持故障探测规则,通过持续的故障探测,可以在流量小的情况下,及时发现并剔除业务中故障的实例,确保潮汐到来时业务的可用性。



周边生态融入


北极星提供了多语言统一的服务治理 SDK(Java,Go,C++,PHP 等),接入北极星的应用无需再重复开发服务治理相关的逻辑和算法。而应用往往是基于服务框架来进行构建的,业界大部分开源服务框架都提供了基础服务治理的能力,而各个框架在实现细节上,从配置到算法上存在一定的差异。

为了统一用户的服务治理体验、简化用户的接入成本,在各个开源框架社区开发者的协同下,北极星也通过提供框架生态组件的方式,支持服务框架用户的无缝接入。



Spring Cloud 框架:腾讯开源的 Spring Cloud Tencent,通过实现 Spring Cloud 原生的拦截器,集成北极星的 SDK,使得 Spring Cloud 用户可以无感的方式接入北极星微服务体系。



Dubbo 框架:与 Spring Cloud 类似,北极星也提供了 dubbo 以及 dubbogo 框架的原生扩展,dubbo 用户可以通过变更配置的方式接入北极星,无需进行代码的修改。



其他框架:除 Spring Cloud 和 dubbo 外,北极星也支持与 gRPC,Cloudwego/kitex,kratos 等服务框架对接,未来也会继续加强与其他社区合作,支持更多的服务框架接入。

存量应用无缝迁移

为了提升用户的接入体验,支持更多企业用户可以通过更低成本,更少改造的方式接入。北极星针对存量 Spring Cloud 用户的迁移做了优化,通过接口兼容、同步工具、JavaAgent 等多种方案,支持原有 Spring Cloud 用户零代码改造接入。


对于 Spring Cloud + Eureka 用户迁移:北极星完全兼容 Eureka 接口,通过集群数据同步完成迁移。


对于 Spring Cloud + Nacos 用户迁移:北极星提供同步工具,支持 Nacos 与北极星之间双向数据同步,同时也提供 JavaAgent,支持已迁移用户无缝接入北极星控制面。

展望未来

未来北极星和 Spring Cloud Tencent ,会继续在场景化功能、开源生态融合这 2 方面进行建设和精细化打磨:


场景化功能:当前北极星和 Spring Cloud Tencent ,提供的是垂直的原子能力,而用户在使用过程中,面对的是业务场景,业务场景和垂直功能之间会存在一定的理解和使用成本。比方说,用户需要进行灰度发布,这个过程中,对于灰度分组的管理、灰度的路由、灰度计划等功能,需要结合北极星的多个原子功能来实现,存在一定操作门槛。因此,未来会提供场景化的操作体验,会针对用户常用的业务场景(灰度发布、过载保护等),提供一体化的配置及接入体验,进一步降低用户接入成本。


开源生态融合:未来微服务的应用生态,无论是在开发语言,或者服务框架上,会越来越多样化。因此北极星会在继续完善当前主流的服务框架的功能基础上,积极与社区的其他服务框架及基础设施做进一步的整合,以覆盖更多的微服务应用。同时在多语言方面,也会在 Python,Rust 等语言上进行更多的探索,希望社区更多的同学能加入一起建设。

感谢贡献者

在开源的这一年时间中,北极星及 Spring Cloud Tencent 社区产生了 30+ 的 committer:weihubeats, onecer、alexwanglei、lhiamgeek、shichaoyuan、astronaut0131 等,这些同学在文档建设、事件中心、K8S 适配、MTLS 流量安全、动态配置管理等核心功能实现中做出了突出贡献。

 

除此之外,社区还收获了大量贡献者,目前已有 100+ Contributors,非常感谢大家的付出!相信有大家的支持,我们可以让北极星和 Spring Cloud Tencent 的产品和生态更加完善!!!最后,也欢迎更多的开发者加入北极星和 Spring Cloud Tencent 的贡献者队伍,一起打造业界领先的云原生服务治理中心!

 

作者简介:

单家骏:腾讯云中间件团队技术专家,北极星开源社区 PMC 成员

李佳南:腾讯云中间件团队高级产品经理

2022-12-21 17:468896

评论 2 条评论

发布
用户头像
图片太模糊了,完全看不清楚啊。。。。
2022-12-25 18:34 · 浙江
回复
用户头像
有开发群可以交流么
2022-12-22 08:59 · 河南
回复
没有更多了
发现更多内容

Java中高级核心知识全面解析——常用框架(Spring常用注解

Java 程序员 后端

Java 8 Lambda 表达式和 Stream 操作,网易资深Java架构师

Java 程序员 后端

内卷把同事逼成了“扫地僧”,把Git上所有面试题足足整理24W 字

Java spring 程序员 mybatis SpringCloud

Java 调试技术 JPDA 架构解读,图文详解

Java 程序员 后端

JavaScript基础大总结,对于java开发岗位的理解面试

Java 程序员 后端

java中常用单词系列(一),最新Java高级面试题汇

Java 程序员 后端

Java中当对象不再使用时,不赋值为null会导致什么后果?

Java 程序员 后端

Java中高级核心知识全面解析-容器(ArrayList)

Java 程序员 后端

Java 专项练习【1 - 10】,java常见算法面试题

Java 程序员 后端

Java 多线程 —— 同步代码块(1),狂神说docker进阶笔记

Java 程序员 后端

JavaWeb学习总结18--redis学习,java高级程序设计作业系统

Java 程序员 后端

JavaWeb快速入门--Tomcat,java高级特性面试

Java 程序员 后端

jackson学习之六:常用类注解,java编程思想第五版电子书

Java 程序员 后端

Java 之父:找Bug最浪费时间,现在不是开源的黄金时代

Java 程序员 后端

Java 多线程 —— 同步代码块,联通java开发面试

Java 程序员 后端

JavaWeb快速入门--Tomcat(1),关于Java性能优化的几点建议

Java 程序员 后端

Java中的几种线程池详解,rabbitmqpdf百度云

Java 程序员 后端

Spring是如何自动注入多类型的?

编号94530

spring bean @Autowired 自动注入

Java中高级核心知识全面解析——Dubbo,java语言入门自学书

Java 程序员 后端

Java agent还不了解的程序员该反省一下了(1)

Java 程序员 后端

JAVA-数据结构与算法,mysql数据库应用与实践教程

Java 程序员 后端

JavaOOP面试题48题(含答案),大厂Java高级多套面试专题整理集合

Java 程序员 后端

Java agent还不了解的程序员该反省一下了,腾讯大牛教你自己写Java框架

Java 程序员 后端

Java 低代码开发平台“光”发布 2,springboot的工作原理图

Java 后端

Java中的泛型,java程序执行过程与编译原理

Java 后端

Java 之类与对象,java零基础自学视频百度云

Java 程序员 后端

Java 常见的 30 个误区与细节!,java面试刷题

Java 程序员 后端

Java 必须掌握的 12 种 Spring 常用注解!你掌握了几种?

Java 程序员 后端

JavaWeb快速入门--JavaScript(2),java面试题库及答案

Java 程序员 后端

Java个人学习之旅(第十天),java就业班百度网盘

Java 程序员 后端

JavaWeb Ajax详解,java64位3下载百度云盘

Java 程序员 后端

北极星开源一周年:注册发现优化、服务治理的易用性提升、周边生态融入…_架构_单家骏_InfoQ精选文章