|
|
|
|
公众号矩阵

腾讯开源云原生服务发现和治理中心 - 北极星

北极星是腾讯开源的服务发现和治理中心,致力于解决分布式或者微服务架构中的服务可见、故障容错、流量控制和安全问题。

作者:Github爱好者来源:Github爱好者|2021-09-09 07:33

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

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

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

特色

  • 北极星的功能采用插件化的形式实现,业务可以根据需求选择使用,也非常容易实现扩展
  • 提供SDK和Sidecar两种接入方式,SDK适用于高性能的业务场景,Sidecar适用于无侵入的开发模式
  • 对于SDK的接入方式,提供Java、Go、C++和NodeJS等多种语言的客户端,功能实现相同
  • 北极星SDK可以集成到常用的框架和网关中,例如Spring Cloud、gRPC和Nginx
  • 适用于Kubernetes,支持K8s service和Polaris sidecar的自动注入
  • 腾讯百万级服务治理中心的开源版本,沉淀了腾讯多年的分布式服务治理经验

控制面

北极星控制面的实现具有三个特点:

  • 计算存储分离,计算层节点可以随着客户端节点的增加平行扩展,轻松支持百万级节点接入
  • 控制面只有一个进程,分为接入层、逻辑层、存储层和缓存层,结构清晰,易于维护
  • 接入层、存储层和缓存层采用插件化设计,方便扩展,适用于不同的应用场景

北极星和k8s

k8sservice

k8s 通过 service 提供服务发现和负载均衡功能:

  • 用户创建 service,service 通过标签绑定相应的 pod,每个 service 关联一个 cluster ip
  • k8s 先依赖 kubedns、coredns 或者其他 dns 插件,将 service 解析成 cluster ip
  • 再通过 iptables 或者 IPVS,将 cluster ip 的请求转发给相应的 pod

k8s service 当前的实现存在不足之处:

  • 当 service 超过一定数量时,iptables 和 IPVS 存在性能问题,不适合大体量的业务
  • iptables 和 IPVS 支持的负载均衡算法有限,在内核里实现,无法在应用层扩展
  • 不提供动态路由、熔断降级、访问限流、访问鉴权等常用的服务治理功能
  • 不兼容 spring cloud 等微服务框架的服务注册和发现方式,无法打通

在k8s上使用北极星

使用北极星补充 k8s 的服务发现和治理功能:

  • 既支持 k8s service 自动注册,也支持使用 SDK 和框架进行注册,两者统一管理
  • 除了 k8s 原有的 DNS 访问方式,还支持高性能和无侵入两种服务网格方案
  • 高性能服务网格提供多语言 SDK,以及常用框架和北极星 SDK 的集成
  • 无侵入服务网格提供 Sidecar,业务不需要依赖 SDK 或者框架

快速入门

前置准备

准备数据库

需要下载并安装MySQL,版本号要求>=5.7,可以在这里进行下载:https://dev.mysql.com/downloads/mysql/5.7.html

导入数据库建表脚本

建表脚本为 ./store/defaultStore/polaris_server.sql,可通过mysql命令或者admin客户端进行导入

准备golang编译环境

北极星服务端编译需要golang编译环境,版本号要求>=1.12,可以在这里进行下载:https://golang.org/dl/#featured

编译构建

  1. chmod +x build.sh 
  2. ./build.sh 

构建完后,可以在当前目录看到 polaris-server-release_${version}.tar.gz 的软件包。

安装

解压软件包

获取polaris-server-release_${version}.tar.gz,并解压

修改数据库配置

进入解压后的目录,打开polaris-server.yaml,替换DB配置相关的几个变量为实际的数据库参数;##DB_USER##(数据库用户名),##DB_PWD##(数据库密码),##DB_ADDR##(数据库地址),##DB_NAME##(数据库名称)

执行安装脚本

  1. chmod +x ./tool/*.sh 
  2. #进行安装 
  3. ./tool/install.sh 
  4. #测试进程是否启动成功 
  5. ./tool/p.sh 

最后一步运行p.sh后,返回Polaris Server,证明启动成功。

验证安装

  1. curl http://127.0.0.1:8080 

返回 Polaris Server,证明功能正常

体验

官网地址:https://polarismesh.cn/,官方也提供了一个在线体验版,地址:http://159.75.195.18/

仓库地址:https://github.com/polarismesh/polaris

【编辑推荐】

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区
  2. 照抄不翻车:抗住千万流量的大型分布式系统架构设计
  3. 2021年五大开源式游戏化工具
  4. 数字化转型的七大热门趋势和三大渐冷趋势
  5. Windows 11新预览版22449推送:启动引导动画变样了
  6. 什么情况?游戏玩家大规模退回Windows 7系统:Windows 10暴跌
【责任编辑:姜华 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

带你轻松入门 RabbitMQ

带你轻松入门 RabbitMQ

轻松入门RabbitMQ
共4章 | loong576

44人订阅学习

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

14人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

42人订阅学习

视频课程+更多

Jmeter高级性能测试实战

Jmeter高级性能测试实战

讲师:陈槐1253人学习过

网工教你思科华为系列(2)-基础路由RIP、OSPF、EIGRP和局域网割接案例

网工教你思科华为系列(2)-基础路由RIP、OSP

讲师:吴忠捷10604人学习过

linux网络基础

linux网络基础

讲师:周玉强28826人学习过

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微