Polaris is a cloud-native service discovery and governance center

Polaris: Service Discovery and Governance

Build Status

English | 简体中文


README:

Visit website to learn more

Introduction

Polaris is a cloud-native service discovery and governance center. It can be used to solve the problem of service connection, fault tolerance, traffic control and secure in distributed and microservice architecture.

Functions:

  • basic: service discover, service register and health check
  • fault tolerance: circuit break and rate limit
  • traffic control: request route and load balance
  • secure: authenticate

Features:

  • It provides SDK for high-performance business scenario and sidecar for non-invasive development mode.
  • It provides multiple clients for different development languages, such as Java, Go, C++ and Nodejs.
  • It can integrate with different service frameworks and gateways, such as Spring Cloud, gRPC and Nginx.
  • It is compatible with Kubernetes and supports automatic injection of K8s service and Polaris sidecar.

Components

server:

client:

ecosystem:

others:

  • website: Source for the polarismesh.cn site
  • samples: Samples for Learning PolarisMesh

Getting started

Preconditions

Prepare database

Please download and install MySQL, version requirement >=5.7, download available here: https://dev.mysql.com/downloads/mysql/5.7.html

Import SQL script

Point Script: ./store/defaultStore/polaris_server.sql, one can import through mysql admin or console.

Prepare golang compile environment

Polaris server end needs golang compile environment, version number needs >=1.12, download available here: https://golang.org/dl/#featured.

Build

chmod +x build.sh
./build.sh

After built, one can see 'polaris-server-release_${version}.tar.gz' package from the list.

Installation

Unzip package

Obtain polaris-server-release_${version}.tar.gz, and unzip.

Change polaris configuration

After unzipped, vi polaris-server.yaml, replace DB configuration's variable to real database information : ##DB_USER## (database username), ##DB_PWD##(database password), ##DB_ADDR##(database address), ##DB_NAME##(database name)

Execute Installation Script

chmod +x ./tool/*.sh
# install
./tool/install.sh
# test whether the process is successful 
./tool/p.sh

After all, run ./p.sh, prompt Polaris Server, proof the installation is successful

Verify installation

curl http://127.0.0.1:8080

Return text is 'Polaris Server', proof features run smoothly

Owner
PolarisMesh
a service discovery and governance center that supports gRPC, Spring Cloud, Kubernetes, Service Mesh and others
PolarisMesh
Comments
  • 北极星内部事件中心机制优化

    北极星内部事件中心机制优化

    What is the feature you want to add?

    1. 一个统一的事件中心
    2. 每种事件有自己单独的publisher,每种事件的产生、发布、消费互不影响
    3. 将原本的服务事件插件与该事件中心组合,建立一个Listener,该Listener的逻辑代替原本discoverevent的逻辑
    4. 后续基于此事件中心,实现配置相关事件的暴露、持久化日志等操作

    Why do you want to add this feature?

    How to implement this feature?

    Additional context Add any other context or screenshots about the feature request here.

  • 由于polaris-server.yaml配置不当,引起polaris-server服务启动之后访问不了

    由于polaris-server.yaml配置不当,引起polaris-server服务启动之后访问不了

    在修改 polaris-server.yaml配置文件中,忘记注释掉
    ###单机文件存储插件 #name: boltdbStore 的配置,开启了数据库存储插件的配置: ###存储配置 store: ###数据库存储插件 name: defaultStore option: master: dbType: mysql dbName: polaris_server dbAddr: 数据库地址,格式为ip:port dbUser: 数据库用户名 dbPwd: 数据库密码 导致 polaris-server 启动之后,访问不了,希望这里能对store进行区分配置单机文件存储插件和数据库存储插件的配置,感谢感谢

  • feat: add docker-compose based development environment

    feat: add docker-compose based development environment

    Please provide issue(s) of this PR: Fixes #453

    • docker-compose-based development environment, contains redis-sentinelredis-clustermysqlprometheusgrafanapolaris-console.
    • polaris-server support hot reload when code or config files changed.
    • append golang runtime metrics to metrics exporter for performance analysis etc.

    To help us figure out who should review this PR, please put an X in all the areas that this PR affects.

    • [ ] Configuration
    • [ ] Docs
    • [x] Installation
    • [ ] Performance and Scalability
    • [ ] Naming
    • [ ] HealthCheck
    • [ ] Test and Release

    Please check any characteristics that apply to this pull request.

    • [ ] Does not have any user-facing changes. This may include API changes, behavior changes, performance improvements, etc.
  • build: use Makefile to build Polaris instead of `build.sh`

    build: use Makefile to build Polaris instead of `build.sh`

    Signed-off-by: mango [email protected]

    Please provide issue(s) of this PR: Fixes #539

    To help us figure out who should review this PR, please put an X in all the areas that this PR affects.

    • [ ] Configuration
    • [x] Docs
    • [x] Installation
    • [ ] Performance and Scalability
    • [ ] Naming
    • [ ] HealthCheck
    • [ ] Test and Release

    Please check any characteristics that apply to this pull request.

    • [ ] Does not have any user-facing changes. This may include API changes, behavior changes, performance improvements, etc.
  • 修改CHARSET = utf8mb4 COLLATE = utf8mb4_bin;

    修改CHARSET = utf8mb4 COLLATE = utf8mb4_bin;

    Please provide issue(s) of this PR: Fixes #430

    To help us figure out who should review this PR, please put an X in all the areas that this PR affects.

    • [ ] Configuration
    • [ ] Docs
    • [x] Installation
    • [ ] Performance and Scalability
    • [ ] Naming
    • [ ] HealthCheck
    • [ ] Test and Release

    Please check any characteristics that apply to this pull request.

    • [ ] Does not have any user-facing changes. This may include API changes, behavior changes, performance improvements, etc.
  • fix:修复db与server时区不一致导致的问题

    fix:修复db与server时区不一致导致的问题

    Please provide issue(s) of this PR: Fixes #345

    To help us figure out who should review this PR, please put an X in all the areas that this PR affects.

    • [X] Configuration
    • [ ] Docs
    • [ ] Installation
    • [ ] Performance and Scalability
    • [X] Naming
    • [ ] HealthCheck
    • [ ] Test and Release

    Please check any characteristics that apply to this pull request.

    • [ ] Does not have any user-facing changes. This may include API changes, behavior changes, performance improvements, etc.

    建立mysql的Seesion会话时,可以指定时区,从而使得timestamp转出和转入时以指定时区为准,这里修改配置将Mysql建立会话的时区修改为Local,解决与服务端不一致问题。 go-mysql-driver configure timezone: https://github.com/go-sql-driver/mysql/blob/master/dsn.go#L235 mysql about timestamp https://dev.mysql.com/doc/refman/8.0/en/datetime.html

  • feat: refactor redispool

    feat: refactor redispool

    Please provide issue(s) of this PR: refactor # refactor common/redispool for https://github.com/polarismesh/polaris/issues/404 for https://github.com/polarismesh/polaris/pull/403 for https://github.com/polarismesh/polaris/pull/398

  • polaris-server支持redis哨兵模式和集群模式

    polaris-server支持redis哨兵模式和集群模式

    What is the feature you want to add?

    polaris-server支持redis哨兵模式和集群模式

    Why do you want to add this feature?

    现有polaris-server只支持redis的直连模式,这种情况极度依赖 云上的redis产品。 建议polaris-server 支持 哨兵模式和redis 集群模式,支持polaris-server接入独立部署的redis。 哨兵模式 优先级高于 集群模式。 预期版本1.9和2.0。

    How to implement this feature? 参考 github.com/go-redis/redis/v8

    改造思路: 方案一:改写common/redispool/redis_pool.go,支持UniversalClient实现,支持各种高可用模式。需要调整现有配置。 方案二:新增基于哨兵的redis_pool和 基于集群的redis_pool,然后注入到heartbeatredis。无需改动现有配置,新增即可。

    Additional context Add any other context or screenshots about the feature request here.

  • 部署在kubernetes失败

    部署在kubernetes失败

    根据官方文档,部署在kubernetes时,polaris-server启用失败,错误如下: bootstrap/server.go:477 self register err: self service(polaris.config) in namespace(Polaris) not found [ERROR] register polaris service fail: self service(polaris.config) in namespace(Polaris) not found 版本:v1.11.3

  • 支持灰度发布的场景化能力

    支持灰度发布的场景化能力

    What is the feature you want to add?

    Why do you want to add this feature?

    How to implement this feature?

    Additional context Add any other context or screenshots about the feature request here.

  • 是否需要支持serviceId大小写不敏感或类似eureka的大写模式?

    是否需要支持serviceId大小写不敏感或类似eureka的大写模式?

    What is the feature you want to add? 支持serviceId大小写不敏感模式

    Why do you want to add this feature? spring.application.name即serviceId一般是小写,这是前提。

    考虑历史业务从eureka迁移到polaris的场景,服务注册发现服务端部署polaris替代eureka server之后,存量的eureka client在8761端口注册的serviceId是大写,改造后的polaris discovery在8091端口注册的serviceId是小写,这就导致eureka client找不到polaris discovery注册的服务,polaris discovery找不到eureka client注册的服务,给迁移造成困难。

  • 缓存的storeTIme更新异常,通过console更新的service数据,无法正确地同步到SDK

    缓存的storeTIme更新异常,通过console更新的service数据,无法正确地同步到SDK

    Describe the bug 通过console修改instances信息

    image

    通过sdk拉取的的instances信息 image

    两者不一致。

    查看polaris-cache.log,有异常信息:

    022-12-20T14:32:36.455434Z error cache cache/store_time.go:47 [Store][Time] watch store time {"error": "Error 1040: Too many connections"} 2022-12-20T14:37:43.447123Z error cache cache/store_time.go:47 [Store][Time] watch store time {"error": "Error 1040: Too many connections"}

    Environment

    • Version: 1.12.1
  • [TEST] 完善 healthcheck 模块的单元测试以及边界测试

    [TEST] 完善 healthcheck 模块的单元测试以及边界测试

    What is the feature you want to add?

    Why do you want to add this feature?

    How to implement this feature?

    Additional context Add any other context or screenshots about the feature request here.

  • 服务协议统一使用specification定义的协议

    服务协议统一使用specification定义的协议

    What is the feature you want to add?

    Why do you want to add this feature?

    How to implement this feature?

    Additional context Add any other context or screenshots about the feature request here.

  • SDK和控制面的配置项统一到specification项目中

    SDK和控制面的配置项统一到specification项目中

    What is the feature you want to add?

    Why do you want to add this feature?

    How to implement this feature?

    Additional context Add any other context or screenshots about the feature request here.

provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Jan 2, 2023
The mec platform for service register/discovery/subscribe and other functions.roject main repo.

EdgeGallery MEP project Introduction Edgegallery MEP is an open source implementation of MEC platform according to ETSI MEC 003 [1] and 011 [2] docume

Nov 15, 2022
The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
Service registry/discovery implementation in Go.

go-service-registry Availabe endpoints : GET http://localhost:3000/ --> Dashboard GET http://localhost:3000/services/[serviceName] --> Get available

Feb 11, 2022
Cloud Native Electronic Trading System built on Kubernetes and Knative Eventing

Ingenium -- Still heavily in prototyping stage -- Ingenium is a cloud native electronic trading system built on top of Kubernetes and Knative Eventing

Aug 29, 2022
🔥 🔥 Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥
🔥 🔥   Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥

CVE-2021-44228 Log4J Vulnerability can be detected at runtime and attack paths can be visualized by ThreatMapper. Live demo of Log4J Vulnerability her

Jan 1, 2023
A lightweight, cloud-native data transfer agent and aggregator
A lightweight, cloud-native data transfer agent and aggregator

English | 中文 Loggie is a lightweight, high-performance, cloud-native agent and aggregator based on Golang. It supports multiple pipeline and pluggable

Jan 6, 2023
Substation is a cloud native toolkit for building modular ingest, transform, and load (ITL) data pipelines

Substation Substation is a cloud native data pipeline toolkit. What is Substation? Substation is a modular ingest, transform, load (ITL) application f

Dec 30, 2022
A dynamic docker->redis->traefik discovery agent

traefik-kop A dynamic docker->redis->traefik discovery agent. Solves the problem of running a non-Swarm/Kubernetes multi-host cluster with a single pu

Dec 23, 2022
The Cloud Native Application Proxy
The Cloud Native Application Proxy

Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your ex

Jan 9, 2023
Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Jan 4, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? Ho

Jan 8, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

May 12, 2021
Interactive Cloud-Native Environment Client
Interactive Cloud-Native Environment Client

Fenix-CLI:Interactive Cloud-Native Environment Client English | 简体中文 Fenix-CLI is an interactive cloud-native operating environment client. The goal i

Dec 15, 2022
This is a cloud-native application that focuses on the DevOps area.

Get started Install KubeSphere via kk (or other ways). This is an optional step, basically we need a Kubernetes Cluster and the front-end of DevOps. I

Jan 5, 2023
Cloud Native Configurations for Kubernetes

CNCK CNCK = Cloud Native Configurations for Kubernetes Make your Kubernetes applications more cloud native by injecting runtime cluster information in

Nov 4, 2021