概述
注册配置中心提供多种类型的引擎,您可以按需创建满足您需求的服务实例,不需要部署和维护这些基础微服务组件,开发者可以完全专注微服务应用本身的开发。
以下步骤将演示创建一个注册配置中心实例,并改造一个微服务快速接入您创建的注册配置中心。演示中开通的引擎类型为Nacos。
创建一个注册配置中心实例
- 首先,从天翼云官网控制中心> 微服务工具与平台 > 微服务引擎MSE,点击进入产品页面。
- 左上角选择目标资源,这里以华东1为例,进入微服务引擎控制台。
- 左侧菜单栏点击注册配置中心> 实例列表,进入注册配置中心控制台实例列表页面。
- 点击实例列表左上角的创建实例跳转至产品订购页面。
- 选择系列/引擎类型,实例规格,选择节点数量,选择子网、VPC和安全组后,点击确认订单。不同资源池节点订购方式有所不同,以具体功能页面为准。
- 点击下一步、跳转至订单确认页面,点击确认提交订单,支付完成后等待5~10分钟,可以在控制台页面看到开通成功的实例。
进入实例的管理页面
- 实例开通完成后,进入实例列表页面,点击实例ID或者实例名称,即可进入实例的管理页面。
- 获取实例的内网连接地址,该地址就是您在VPC内部连接该Nacos引擎的访问地址。
- 另外基础信息还包括规格、磁盘、网络以及节点状态等一系列信息。
SpringCloud应用接入Nacos配置中心
将Spring Cloud应用快速接入Nacos配置中心,集成Nacos配置管理功能,可遵循如下步骤。
前提条件
- 下载Maven并设置Maven环境变量。
- 已有Spring Cloud应用。
- 已创建MSE Nacos引擎。
在控制台创建配置
-
进入MSE注册配置中心控制台,点击实例ID进入您创建的Nacos实例,点击配置管理->配置列表,选定命名空间如prod,点击创建配置。填写配置的Data ID、Group和配置内容,示例如下:
Data ID:nacos-provider Group:test-group 配置内容:config1=abc -
选定配置格式为Properties,点击发布。
-
接下来为prod命名空间建立读写权限用户。
-
点击权限控制->用户管理,点击创建用户,填写您的用户名密码,点击确认。
-
点击权限控制->角色管理,点击添加角色,填写角色名为PROD_ADMIN,用户名下拉框选中您刚才所创建的用户,点击确认。
-
点击权限控制->权限管理,点击添加权限,角色名选择PROD_ADMIN,命名空间选择prod,动作选择“读写”,点击确认。
客户端接入配置中心
在您的Spring Cloud应用中引入如下依赖,替换其中¥{spring-cloud-starter.version}为与当前应用SpringBoot、SpringCloud版本适配的spring-cloud-starter-alibaba-nacos-config版本,替换其中{nacos-client.version}为当前开源nacos-client的最新稳定版,推荐替换为版本2.3.2。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-starter.version}</version>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos-client.version}</version>
</dependency>
在应用配置bootstrap.properties(或yml)中添加Nacos相关参数,其中{your_nacos_addr}填写ip:port格式的Nacos服务端节点地址,多个节点用英文逗号分隔。
spring.application.name=nacos-provider
spring.cloud.nacos.config.server-addr={your_nacos_addr}
spring.cloud.nacos.config.namespace=prod
spring.cloud.nacos.config.username={your_nacos_username}
spring.cloud.nacos.config.password={your_nacos_password}
注意若您的SpringBoot版本大于等于2.4,还需要额外添加依赖spring-cloud-starter-bootstrap以使能bootstrap.properties:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
在应用代码中添加如下Controller,通过访问/getConfig1路径来获取config1动态配置:
@RestController
@RefreshScope
public class ProviderController {
@Value("${config1:default}")
private String config1;
@GetMapping("/getConfig1")
public String getConfig1() {
log.info("/getConfig1");
return config1;
}
}
启动应用。应用启动成功后,会自动连接到Nacos配置中心。
感知配置变更
在应用所部署机器使用如下curl指令进行访问:
curl 'localhost:{your_demo_port}/getConfig1'
可获取含有config1配置内容的返回信息。在未连接Nacos配置中心的情况下,此时将返回default;成功连接Nacos配置中心的情况下,此时将返回abc。
再次进入MSE注册配置中心控制台,点击实例ID进入您创建的Nacos实例,点击配置管理->配置列表,选定prod命名空间,点击nacos-provider配置右侧的“编辑配置”,修改配置内容为如下值:
config1=def
再次调用上述curl指令,此时将返回def,证明Nacos配置已成功推送到客户端。
SpringCloud应用接入Nacos注册中心
将Spring Cloud应用快速接入Nacos注册中心,集成Nacos服务注册发现功能,可遵循如下步骤。
前提条件
- 下载Maven并设置Maven环境变量。
- 已有Spring Cloud应用。
- 已创建MSE Nacos引擎。
在控制台创建用户
- 进入MSE注册配置中心控制台,点击实例ID进入您创建的Nacos实例,为prod命名空间建立读写权限用户。
- 点击权限控制->用户管理,点击创建用户,填写您的用户名密码,点击确认。
- 点击权限控制->角色管理,点击添加角色,填写角色名为PROD_ADMIN,用户名下拉框选中您刚才所创建的用户,点击确认。
- 点击权限控制->权限管理,点击添加权限,角色名选择PROD_ADMIN,命名空间选择prod,动作选择“读写”,点击确认。
服务提供者接入注册中心
在您的Spring Cloud应用中引入如下依赖,替换其中{spring-cloud-starter.version}为与当前应用SpringBoot、SpringCloud版本适配的spring-cloud-starter-alibaba-nacos-discovery版本,替换其中{nacos-client.version}为当前开源nacos-client的最新稳定版,推荐替换为版本2.3.2。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-starter.version}</version>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos-client.version}</version>
</dependency>
在应用配置application.properties(或yml)中添加Nacos相关参数,其中{your_nacos_addr}填写ip:port格式的Nacos服务端节点地址,多个节点用英文逗号分隔。
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr={your_nacos_addr}
spring.cloud.nacos.discovery.namespace=prod
spring.cloud.nacos.discovery.username={your_nacos_username}
spring.cloud.nacos.discovery.password={your_nacos_password}
注意此处配置参数namespace需要填写命名空间ID
在应用代码中添加如下Controller,暴露服务提供者的服务路径/getCarInfo:
@RestController
public class ProviderController {
@GetMapping("/getCarInfo")
public String getCarInfo() {
return "Benz";
}
}
启动应用。应用启动成功后,会自动连接到Nacos注册中心。
进入MSE注册配置中心控制台,点击实例ID进入您创建的Nacos实例,点击服务管理->服务列表,选定prod命名空间,可以看到您所注册的nacos-provider服务,其下存在一个健康状态实例。
服务消费者接入注册中心
在您的Spring Cloud应用中引入如下依赖,替换其中{spring-cloud-starter.version}为与当前应用SpringBoot、SpringCloud版本适配的spring-cloud-starter-alibaba-nacos-discovery版本,替换其中{nacos-client.version}为当前开源nacos-client的最新稳定版,推荐替换为版本2.3.2。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-starter.version}</version>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos-client.version}</version>
</dependency>
在应用配置application.properties(或yml)中添加Nacos相关参数,其中{your_nacos_addr}填写ip:port格式的Nacos服务端节点地址,多个节点用英文逗号分隔。
spring.application.name=nacos-consumer
spring.cloud.nacos.discovery.server-addr={your_nacos_addr}
spring.cloud.nacos.discovery.namespace=prod
spring.cloud.nacos.discovery.username={your_nacos_username}
spring.cloud.nacos.discovery.password={your_nacos_password}
注意此处配置参数namespace需要填写命名空间ID
在应用中添加如下代码,定义指向nacos-provider服务的FeignClient,并暴露/getCarInfo路径,内部逻辑调用nacos-provider服务的/getCarInfo路径:
@FeignClient(value = "nacos-provider")
public interface NacosProviderFeignClient {
@GetMapping("/getCarInfo")
String getCarInfo();
}
@RestController
public class ConsumerController {
@Autowired
private NacosProviderFeignClient nacosProviderFeignClient;
@GetMapping("/getCarInfo")
public String getPersonInfo() {
return nacosProviderFeignClient.getCarInfo();
}
}
启动应用。应用启动成功后,会自动连接到Nacos注册中心。
进入MSE注册配置中心控制台,点击实例ID进入您创建的Nacos实例,点击服务管理->服务列表,选定prod命名空间,可以看到您所注册的nacos-consumer服务,其下存在一个健康状态实例。
确保上述部署的服务提供者和服务消费者的网络连通,在服务消费者应用所部署机器使用如下curl指令进行访问:
curl 'localhost:{your_demo_port}/getCarInfo'
此时nacos-consumer会自动到Nacos服务端获取nacos-provider的地址进行访问,完成服务发现。返回“Benz”则证明服务发现和调用成功。
