写点什么

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

  • 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:469084

评论 2 条评论

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

java架构-一些设计上的基本常识

猿灯塔

Java

程序员的晚餐 | 7 月 3 日 好久没做饭

清远

美食

为什么我建议你读一读历史?

Phoenix

历史 中国历史

深入理解编译优化之循环展开和粗化锁

程序那些事

JIT 编译优化 循环展开 粗化锁

18个Java8日期处理的实践,太有用了建议收藏

码哥小胖

MySQL SQL语法 sql查询

测试开发工程师修炼手册—测试技能大盘点

Zoe

测试工程师产出

马匹、马镫、马车,和华为的数据基础设施革新

脑极体

架构师训练营第4周总结

aoeiuvzcs

第四周

仪轩

农产品电商平台的S曲线分析

石云升

增长 S型曲线 破局点

猿灯塔:疫情冲击,去体验远程面试被怼10分钟,今年Java开发找工作真难

猿灯塔

Go: 字符串和转换优化

陈思敏捷

string 字符串 Go 语言

太牛 了!快码住!GitHub上标星75k!超牛的《Java面试突击版》

犬来八荒

Java git Linux 面试

Week5命题作业

星河寒水

极客大学架构师训练营

Redis系列(五):你要的Redis集群搭建来了,实践与否你自己选!

z小赵

Java redis 分布式 高并发

阿里技术官:这样带你学Spring全家桶,其实没你想的那么难

小吴选手

spring Spring Cloud Spring Boot

一个简单的技术选型心得

i风语

Java 架构

锦囊篇|一文摸懂SharedPreferences和MMKV(二)

ClericYi

游戏夜读 | 互动剧的黎明到了?

game1night

ARTS Week6

时之虫

ARTS 打卡计划

逆袭之路,普通二本的八年开发码农如何进阿里拿年薪百万

小谈

Java 面试

高承实:区块链在新基建中的作用和未来发展

CECBC

新基建 政策扶持 技术特征 链上数据 产业场景

我是如何解决邮件焦虑的

vinkyqy

效率 职场 邮件

面试细节: i = i++和 i = ++i

Java小咖秀

面试 JVM 经验分享

六月我在工作中蜕变,勤奋小人打架终于赢了

程序员小跃

效率工具 加班 沟通 复盘

简直了!顶级架构师分享心得,如何在项目中兼容多种数据库

犬来八荒

Java MySQL 数据库 面试

向女朋友解释乐观锁与悲观锁的小妙招!

小闫

spring 面试 Spring Cloud 乐观锁 悲观锁

理解 Mysql 索引底层原理只需这一篇就够了

小谈

MySQL 数据结构 面试 Spring Cloud Spring Boot

Redis分布式锁课堂开课了!

小闫

redis Spring Cloud Redis项目

分布式缓存

Axe

Android架构组件-App架构指南,你还不收藏嘛

小吴选手

架构 架构师 架构总结 架构要素 P7架构师

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