PolarisMesh系列文章——概念系列(一)

简介: 北极星是腾讯开源的服务发现和治理中心,致力于解决分布式或者微服务架构中的服务可见、故障容错、流量控制和安全问题。虽然,业界已经有些组件可以解决其中一部分问题,但是缺少一个标准的、多语言的、框架无关的实现。

# 北极星是什么?


北极星是腾讯开源的服务发现和治理中心,致力于解决分布式或者微服务架构中的服务可见、故障容错、流量控制和安全问题。虽然,业界已经有些组件可以解决其中一部分问题,但是缺少一个标准的、多语言的、框架无关的实现。


腾讯具有海量的分布式服务,加上业务线和技术栈的多样性,沉淀了大大小小数十个相关组件。从 2019 年开始,我们通过北极星对这些组件进行抽象和整合,打造公司统一的服务发现和治理方案,帮助业务提升研发效率和运营质量。


目前,北极星在腾讯内部的服务注册数量超过百万,日接口调用量超过十万亿,通用性和稳定性都得到了大规模的验证。因此,我们将其贡献到开源社区,希望对其他企业有所帮助,也希望吸引更多开发者参与共建。下面从三个方面介绍北极星。


## 北极星诞生的背景


让我们回顾一下应用架构发现的历程:


![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d74eb0255867408e80a13b6b0fd0bf6d~tplv-k3u1fbpfcp-zoom-1.image)


### 单体架构:


单体架构的所有代码都在一个应用中,单体架构具备系统复杂度低,部署简单,易运维等优点,适合小规模或者初创期的业务。但随着应用模块和开发人员增加,单体应用面临众多问题,例如:


- 变更成本高:任何修改需要重新部署整个系统;

- 扩展性差:无法针对某些热点模块进行水平扩展;

- 故障扩散:某个模块出现故障也会影响其他模块;


### 微服务架构


对单体架构中的每一层进行细粒度的拆分,可以拆分成功整体更松散,模块更内聚的微服务架构。


微服务架构具备职责单一、平台无关的通信、独立性、进程隔离的特点。


微服务架构具备以下优点:


- 服务作为组件,可独立部署,独立变更,独立扩缩容。

- 团队管理变简单,可围绕业务来划分团队。

- 技术选择可多样性

- 业务进程及数据独立,故障不会相互影响。


### 微服务架构的实施中的核心问题


![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d4ab9b8e726f43eca48e38a67c7dd1de~tplv-k3u1fbpfcp-zoom-1.image)


北极星主要解决的是“服务发现及治理”的问题。


## 北极星解决哪些问题


在分布式架构及微服务架构实施过程中,业务可能面临以下四类问题。北极星以服务为中心,提供一站式解决方案。


| 问题类型 | 问题示例                                                     | 解决方案 |

| -------- | ------------------------------------------------------------ | -------- |

| 服务可见 | 主调方如何知道被调方的服务地址                               | 注册发现 |

| 配置可见 | 如何实现服务配置的版本管理、动态下发、按需变更。             | 配置管理 |

| 故障容错 | 当被调方的部分实例异常时,如何屏蔽异常实例,屏蔽之后如何恢复 | 熔断降级 |

|          | 当某些主调方的请求量过多时,如何限制这些主调方的请求,避免影响其他主调方的请求 | 访问限流 |

| 流量控制 | 被调方包含多个实例,主调方如何确定请求发送到哪个实例,如何保证请求均衡 | 负载均衡 |

|          | 如何实现按地域就近、单元化隔离、金丝雀发布等各种请求调度策略 | 动态路由 |

|          | 外网到内网的调用链路如何进行加密,消息防窃听                 | 链路加密 |

|          | 服务资源如何按用户及角色进行授权                             | 服务鉴权 |


## 北极星具备哪些功能


北极星主要提供以下核心功能,各部分功能都是基于插件化设计,可单独使用,从功能大类来看,分为注册中心、配置中心以及服务网格三类功能:


### 注册中心


- 服务注册发现及服务健康检查


 以服务为中心的分布式应用架构,通过服务和注册发现的方式维护不断变化的请求地址,提高应用的扩展能力,降低应用的迁移成本。北极星提供对注册上来的服务实例进行健康检查,阻止主调方对不健康的服务实例发送请求,同时也提供了保护能力,实例剔除超过一定数量则停止剔除,防止因不健康实例过多导致雪崩效应。


### 配置中心


- 动态配置

 提供配置管理的功能,支持应用配置、公共配置的订阅发布、版本管理、变更通知,实现应用配置动态生效。


### 服务网格


- 路由和负载均衡

 

 根据请求标签、实例标签和标签匹配规则,对线上流量进行动态调度,可以应用于按地域就近、单元化隔离和金丝雀发布等多种场景。


- 熔断降级和限流

 

 提供熔断功能,根据实时采集的错误率等指标,及时熔断异常的服务、接口、实例或者实例分组,降低请求失败率。

 当负载已经超过了系统的最大处理能力时,北极星提供服务限流功能,可针对不同的请求来源和系统资源进行访问限流,避免服务被压垮。

 

- 可观测性

 

 提供服务治理可视化监控视图,支持请求量、请求延时和请求成功率的指标查询,支持服务调用关系和多维度的流量曲线查询,实现服务治理功能和流量观测一体化。

 

- Proxyless与Proxy接入


 提供多语言SDK、以及无侵入的JavaAgent,适配用户高性能低长尾时延以Porxyless模式的接入场景;同时提供独立的Sidecar,支持用户的低侵入性、基于流量接管的Proxy模式接入场景。


## 对比其他产品


虽然业界没有组件的形态和北极星完全相同,但是一些组件的功能和北极星有所重叠,下面介绍北极星和这些组件的区别。


## Eureka


从定位上来说,Eureka是服务注册中心,只提供服务发现、服务注册和健康检查功能。北极星是服务发现和治理中心,除服务发现、服务注册和健康检查之外,还提供流量控制、故障容错和安全能力。


从架构上来说,Eureka集群采用异步复制的方式同步数据,每个Server将收到的写请求异步复制给集群内的其他Server。当Client越来越多时,需要扩容Server。但是,增加Server也会增加Server之间的复制请求,导致扩容效果不明显。北极星服务端计算存储分离,计算层节点可以随着客户端节点的增加平行扩展,轻松支持百万级节点接入。


## Istio


Istio通过流量劫持的方式实现服务发现和治理,这种方式有些问题。首先,增加了资源消耗和请求延时,特别是CPU消耗,请求量大的业务难以接受。第二,每个企业使用的RPC协议各不相同,目前Istio主要支持HTTP和gRPC,难以快速支持其他RPC协议。第三,流量劫持直接影响业务的每个请求,稳定性和运维工作要求极高。最后,和主流微服务框架无法共存,业务改造的成本大、风险高。


北极星不仅提供无侵入Sidecar,还提供高性能SDK,实现语义相同的服务发现和治理功能,用户可以根据业务场景自行选择。对于请求量大和资源消耗敏感用户,可以在业务应用或者开发框架中集成北极星SDK,快速补齐服务发现和治理功能。

目录
相关文章
|
负载均衡 Java API
深入了解Spring Cloud Netflix:构建微服务架构的利器
在当今快速发展的软件开发领域,微服务架构已经成为了构建高度可伸缩、灵活性强的应用程序的首选方式。然而,微服务架构也带来了一系列的挑战,包括服务发现、负载均衡、容错处理、配置管理等问题。Spring Cloud Netflix是一组用于构建分布式系统的开源工具,它基于Netflix的一些开源项目,为开发人员提供了强大的解决方案,帮助他们轻松地构建和管理微服务应用程序。本文将深入介绍Spring Cloud Netflix的主要组件以及它们如何帮助开发人员构建稳健的微服务架构。
|
算法 Unix 调度
【OSTEP】调度: 多级反馈队列 (MLFQ) | 优先级提升 | 饥饿问题 | 愚弄调度问题 | MLFQ 调优
【OSTEP】调度: 多级反馈队列 (MLFQ) | 优先级提升 | 饥饿问题 | 愚弄调度问题 | MLFQ 调优
1130 0
|
监控 数据中心 数据安全/隐私保护
|
Cloud Native Java C++
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
文章介绍如何在Spring Boot 3中利用GraalVM将Java应用程序编译成独立的本机二进制文件,从而提高启动速度、减少内存占用,并实现不依赖JVM运行。
2440 1
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
|
人工智能 并行计算 调度
进行GPU算力管理
本篇主要简单介绍了在AI时代由‘大参数、大数据、大算力’需求下,对GPU算力管理和分配带来的挑战。以及面对这些挑战,GPU算力需要从单卡算力管理、单机多卡算力管理、多机多卡算力管理等多个方面发展出来的业界通用的技术。
1804 165
进行GPU算力管理
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 3 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 3 月产品动态
|
机器学习/深度学习 人工智能 前端开发
2024年软件开发新趋势:关键技术和实践
2024年软件开发迎来新趋势,涵盖AI/ML深度集成、微前端架构进展、单元测试最佳实践及CI/CD最新动态,推动产品质量、效率和创新的提升。
|
数据可视化 定位技术 Python
Folium在地图上展示数据
【10月更文挑战第17天】本文介绍了如何使用Python中的Folium库进行地理可视化。Folium是一个基于Leaflet.js的库,可以轻松创建交互式地图。文章从安装Folium开始,逐步讲解了如何创建地图、添加标记点、展示热力图、自定义图层样式、绘制形状、添加图例和文本标签等内容。通过这些示例,读者可以学会如何利用Folium进行地理数据的可视化,从而更好地理解和展示数据的空间分布。
|
Windows
|
Cloud Native Java 对象存储
揭秘微服务架构之争:Spring Cloud与Netflix OSS巅峰对决,谁将称霸弹性云原生时代?
近年来,微服务架构成为企业应用的主流设计模式。本文对比了两大热门框架Spring Cloud和Netflix OSS,探讨其在构建弹性微服务方面的表现。Spring Cloud依托Spring Boot,提供全面的微服务解决方案,包括服务注册、配置管理和负载均衡等。Netflix OSS则由一系列可独立或组合使用的组件构成,如Eureka、Hystrix等。两者相比,Spring Cloud更易集成且功能完善,而Netflix OSS则需自行整合组件,但灵活性更高。实际上,两者也可结合使用以发挥各自优势。通过对两者的对比分析,希望为企业在微服务架构选型上提供参考。
382 0

热门文章

最新文章

下一篇
开通oss服务