11月4日,在腾讯数字生态大会上,腾讯重磅宣布并介绍了云原生领域的开源组件——“北极星”(PolarisMesh)服务发现和治理中心。
“北极星”由腾讯云自主研发,在腾讯内部注册服务数量已超过百万,服务实例数量超过500万,接口日调用量超过30万亿,涵盖包含腾讯音乐、腾讯视频、腾讯会议、腾讯文档、企业微信、微信支付和王者荣耀等重点产品在内的90%以上业务。该项目的开源,将为企业分布式和微服务架构转型带来新的解决方案,帮助企业更好地提高业务研发效率和运营质量。
“北极星”综合当前主流三大方案优点,促进互联互通、统一治理
在企业上云过程中,传统的单体业务架构往往面临变更风险大、编译速度慢、模块缺陷相互影响、无法针对性拓展热门模块等问题。分布式和微服务架构应运而生:它将业务模块拆分成一个个独立的核心服务,每项核心服务都能单独构建、部署,既确保出现故障时不会互相干扰,又能灵活安排各项服务耦合、协调,满足开发者和用户不同需求。
业务模块拆分后,许多企业在微服务实施和演化过程中,又会面临技术栈多样性的问题。同时微服务领域出现众多相关组件,企业在选择上也更加困难。而业界提供的三大主流服务发现和治理组件方案,均存在或缺少统一的数据面和控制面,或无法提供服务治理功能,或资源和性能损耗较大等缺陷。
为了融合主流解决方案的优点,同时规避它们的缺陷,腾讯从2019年开始创建统一的微服务解决方案“北极星”,致力于解决原有平台存在的问题,实现跨部门业务系统间服务的互联互通和统一治理。目前,“北极星”能够解决分布式和微服务架构中的服务寻址、流量调度、熔断降级、访问控制和可观测性问题,并以大容量和高可用的服务注册中心为基础,扩展了服务治理功能和相应的控制面,提供多语言的客户端实现,不同的开发框架均可集成使用。随着容器化和云原生的推进,“北极星”也支持Kubernetes服务和网格 Sidecar 的自动接入。
五大设计功能+三类生态组件,“北极星”满足开发者多种诉求
随着开发者需求的日渐增加,“北极星”的设计功能也在不断丰富。目前,“北极星”已支持注册发现、流量调度、熔断降级、访问控制与服务网格五大功能。
具体来说,在注册发现层面,“北极星”不仅支持多种协议的服务注册和发现,还支持对注册的服务实例进行健康检查,避免主调方将请求发送给异常实例;在流量调度层面,“北极星”支持多种路由策略和多种均衡算法;针对网络抖动、机器故障和程序缺陷等因素导致的异常,“北极星”支持实例、接口和服务三种粒度的熔断策略;在访问控制层面,“北极星”提供鉴权和限流两种访问控制功能,被调方可自主设置鉴权、单机或分布式限流规则;最后在服务网格层面,“北极星”提供了统一的控制面和数据面。数据面功能采用配置化的实现方式,支持多语言 SDK 和 Sidecar 两种模式;而控制面可以下发服务数据和治理规则到数据面,动态调整数据面的执行策略。
同时,为了降低业务的使用成本,“北极星”还向开发者和企业提供了三种类型的生态组件:第一类用于各种开发框架和“北极星”数据面的无缝集成,框架用户无需直接调用“北极星”数据面,能有效减少开发的侵入性;第二类用于各种网关和“北极星”数据面的无缝集成,支持网关将请求直接转发到“北极星”服务;第三类生态组件则只有 polaris-controller,用于Kubernetes服务和网格 Sidecar 的自动接入。
开源是技术革新的强大推动力。自2010 年起,腾讯就确立了拥抱开放的战略。截至目前,腾讯共对外开源超过130个项目,覆盖云原生、大数据、人工智能、数据库等多个技术领域,代码贡献者超过3000人,开源项目star总数超过38万个。未来,腾讯云也将立足产业和业务场景中的实践经验与生态优势,不断推动“北极星”实现更多技术创新与飞跃,继续打造可持续发展的微服务开源生态。
“北极星”开源地址:
https://github.com/polarismesh/polaris