教程系列(一):Spring Cloud Tencent 接入注册中心

简介: 注册中心是微服务最核心的组件,本文主要介绍使用 Spring Cloud Tencent 接入北极星注册中心。北极星注册中心具备服务上下线等能力,是一款非常好用的注册中心产品。

Github 地址:https://github.com/Tencent/spring-cloud-tencent

模块简介

服务注册发现模块是 Spring Cloud Tencent 最核心的模块之一,实现了标准的 Spring Cloud Discovery SPI 接口 (PolarisDiscoveryClient.java)。任何一个 Spring Cloud 标准应用都能快速平滑的使用 Spring Cloud Tencent Discovery。

Spring Cloud Tencent Discovery 背后对接的是社区流行的统一服务发现和治理平台 Polaris

快速入门

本章节将介绍如何在 Spring Cloud 项目中使用 Spring Cloud Tencent Discovery 的功能。

完整 Example 代码请参考:polaris-discovery-example

第一步:引入 Polaris 服务端

方式一:搭建本地北极星服务

搭建北极星服务请参考 Polaris Getting Started

方式二:使用北极星开源提供的体验环境

  • Username: polaris
  • Password: polaris
  • Server Address: grpc://183.47.111.80:8091

方式三:使用腾讯云北极星服务

腾讯云提供了免运维的北极星云服务,基于云服务可以快速开通生产级高可用北极星集群 了解更多

第二步:引入 Spring Cloud Tencent Discovery 依赖

  1. 参考 Spring Cloud Tencent 版本管理 文档获取最新的版本号,引入 Spring Cloud Tencent Bom,例如:
<dependencyManagement><dependencies><dependency><groupId>com.tencent.cloud</groupId><artifactId>spring-cloud-tencent-dependencies</artifactId><version>1.5.0-Hoxton.SR9</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>2. 引入 Spring Cloud Tencent Discovery Starter
<dependency><groupId>com.tencent.cloud</groupId><artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId></dependency>


第三步:增加 Spring Cloud Tencent Discovery Starter 的配置文件

  1. 在您的 bootstrap.yml 配置文件中加入以下配置内容
spring:
  application:
    name: ${application.name}
  cloud:
    polaris:
      address: grpc://${修改为第一步部署的 Polaris 服务地址}:8091
      namespace: default


第四步:启动应用

应用成功启动后,到 Polaris 控制台查看服务注册信息。如下图所示:


到此接入 Spring Cloud Tencent Discovery 即已完成。

拓展使用

元数据

元数据定义

服务实例通常带有一系列的标签信息,例如实例所属的机房信息、地域信息、环境信息等,这些信息统称为服务实例的元信息。实例注册到注册中心时,会带上自身的元数据信息。当消费方从注册中心获取到实例时,既可以同时获取到每个实例的元信息。


元数据来源

来源一:项目里的配置文件

在 Spring Cloud 项目里的 application.yml 中配置以下内容:

spring:
  cloud:
    tencent:
      metadata:
        content:
          idc: shanghai
          env: dev1


应用在启动注册时,会自动读取配置文件并带上 idc=shanghaienv=dev1 两个元数据信息。

通过配置文件的方式为最直接的方式,但是这种方式有一个最大的弊端,就是设置不同元数据值时需要重新编译打包。本质上的原因就是:大部分的元数据信息属于部署环境的信息或者叫机器的信息,而不是应用静态代码的信息。

来源二:应用启动参数

众所周知,Spring Boot 应用配置文件定义的配置项都可以通过 -D 启动参数覆盖,例如通过以下方式覆盖 env 值为 dev2 :

Java -jar -Dspring.cloud.tencent.metadata.content.env=dev2  demo.jar

通过启动参数的方式,可以在启动时动态修改元数据信息,而不用重新打包,从而解决了方式一的弊端。

但是这种方式也有弊端,就是谁负责修改启动脚本,加上 -D 参数呢?

大部分情况下,Java -jar 启动命令都放在项目里的 start.sh 脚本里,那也就是说,每次需要增加 -D 参数都要修改 start.sh,这本身也会增加维护成本。

来源三:环境变量

环境变量的方式则完全跟运行的应用解耦,是完完全全的机器信息。Spring Cloud Tencent 约定了前缀 SCT_METADATA_CONTENT_ 的环境变量为应用的元数据信息。例如:

SCT_METADATA_CONTENT_IDC=shanghai

SCT_METADATA_CONTENT_ENV=dev1

应用在启动时,则会自动携带 IDC=shanghaiENV=dev 的元数据。

通过环境变量的方式,paas 平台在拉起一台虚拟机或者一个容器 Pod 时,只需要设置相应的环境变量即可。而应用自身无需做任何其它事情。

以上几种方式,可以通过查看启动日志确认是否正确打标:

grep "Loaded static metadata info" xx.log

来源四:自定义实现 SPI (待实现)

前面三种方式为 SCT(Spring Cloud Tencent 的缩写) 内置的方式,但是并不一定符合每个公司自己的规范或者实现。例如:

  • 把元数据放到机器上的某一个配置文件里,例如 /etc/metadata
  • 启动时,调用 CMDB 的接口获取元信息

所以 SCT 定义了一个 SPI,方便用户自己实现元数据来源。SCT 在注册前,回调 SPI 获取元数据信息,并注册到注册中心。

控制台调整实例的权重、下线实现等操作

如下图所示,可以在控制台上对实例进行一系列管控操作,例如隔离实例,调整实例权重等。


自定义参数

除了控制台页面可以调整参数以外,Spring Cloud Tencent Discovery 提供了很多自定义参数满足各类场景。以权重随机策略为例,您可以在项目里的 bootstrap.yml 配置文件里配置 spring.cloud.polaris.weight 既可以调整权重值(默认为 100)。

完整的的配置列表如下

配置项Key

默认值

是否必填

配置项说明

spring.cloud.polaris.address

Polaris 后端地址

spring.cloud.polaris.namespace

default

服务所在的命名空间名称

spring.cloud.polaris.service

${spring.application.name}

服务名称

spring.cloud.polaris.local-ip-address

注册的 IP 地址,默认情况下 Spring Boot 会自动获取 IP 地址无需指定 IP 地址,当需要自定义 IP 地址时才需要设置

spring.cloud.polaris.discovery.enabled

true

是否开启服务发现

spring.cloud.polaris.discovery.register

true

是否开启服务注册

spring.cloud.polaris.discovery.instance-enabled

true

当前微服务实例是否可以被访问

spring.cloud.polaris.discovery.token

鉴权 Token

spring.cloud.polaris.discovery.version

null

微服务版本

spring.cloud.polaris.discovery.protocol

null

微服务协议类型

spring.cloud.polaris.discovery.weight

100

微服务权重

spring.cloud.polaris.discovery.service-list-refresh-interval

60000

服务列表刷新间隔(毫秒)

目录
相关文章
|
5月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
936 3
|
4月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
690 5
|
9月前
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
315 0
|
6月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
648 13
|
7月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
1334 2
|
9月前
|
SpringCloudAlibaba Java Nacos
尚硅谷SpringCloud教程 笔记
本文介绍了基于Spring Cloud Alibaba构建的cloud-demo工程创建步骤,包括父模块及子模块的配置。父模块采用pom打包方式,定义了Java 8、Spring Boot 2.4.2、Spring Cloud 2020.0.1及Spring Cloud Alibaba 2021.1版本。包含三个主要模块:services(依赖Nacos)、service-order和service-product(均依赖spring-boot-starter-web)。同时提供了discoveryClient的测试代码,展示服务发现功能的实现与验证过程。
580 12
尚硅谷SpringCloud教程 笔记
|
Dubbo Java 应用服务中间件
深入了解Spring Cloud Alibaba Dubbo
在现代分布式系统开发中,构建高性能、可伸缩性和弹性的微服务架构变得越来越重要。Spring Cloud Alibaba Dubbo(简称Dubbo)是一个开源的分布式服务框架,可以帮助开发者构建强大的微服务架构,具备负载均衡、服务治理、远程调用等强大功能。本文将深入介绍Spring Cloud Alibaba Dubbo,帮助你理解它的核心概念、工作原理以及如何在你的项目中使用它。
|
Kubernetes Java 微服务
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
280 0
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)

热门文章

最新文章