概述
注册配置中心提供多种类型的引擎,您可以按需创建满足您需求的服务实例,不需要实现和维护这些基础微服务组件,开发者可以完全专注微服务应用本身的开发。
以下步骤将演示创建一个注册配置中心实例,并改造一个微服务快速接入您创建的注册配置中心。演示中开通的引擎类型为Nacos。
创建一个注册配置中心实例
- 首先,从天翼云官网控制中心> 微服务工具与平台 > 微服务引擎MSE,点击进入产品页面。
- 左上角选择目标资源,这里以华东1为例,进入微服务引擎控制台。
- 左侧菜单栏点击注册配置中心> 实例列表,进入注册配置中心控制台实例列表页面。
- 点击实例列表左上角的创建实例跳转至产品订购页面。
- 选择系列/引擎类型,实例规格,选择节点数量,选择子网、VPC和安全组后,点击确认订单。不同资源池节点订购方式有所不同,以具体功能页面为准。
- 点击下一步、跳转至订单确认页面,点击确认提交订单,支付完成后等待5~10分钟,可以在控制台页面看到开通成功的实例。
进入实例的管理页面
实例开通完成后,进入实例列表页面,点击实例ID或者实例名称,即可进入实例的管理页面。
获取实例的内网连接地址,该地址就是您在VPC内部连接该Nacos引擎的访问地址。
另外基础信息还包括规格、磁盘、网络以及节点状态等一系列信息。
将SpringBoot类型的微服务集成Nacos
配置管理
为您的Spring Boot 应用集成Nacos配置管理功能,在工程中引入nacos-config-spring-boot-starter和nacos-discovery-spring-boot-starter的 Maven坐标。
注意版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
在application.properties 中配置 实例配置中心的连接地址,即前述步骤的内网地址。
nacos.config.server-addr=127.0.0.1:8848
配置管理示例:使用@NacosPropertySource 加载 dataId 为 example 的配置源,并开启自动更新,通过 Nacos 的 @NacosValue 注解设置属性值。
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public List get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
@SpringBootApplication
public class NacosDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryApplication.class, args);
}
}
启动NacosConfigApplication,调用 curl http://localhost:8080/config/get,返回内容是 false。通过控制台向Nacos server 发布配置:dataId 为example,内容为useLocalCache=true。可参考:Nacos-配置管理
再次访问http://localhost:8080/config/get,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了。
服务发现
如果需要在Spring Boot 应用集成Nacos服务发现和管理功能,在工程中引入nacos-discovery-spring-boot-starter的 Maven坐标。
注意版本 0.2.x.RELEAS 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
在application.properties 中配置 实例注册中心的连接地址,即前述步骤的内网地址。
nacos.discovery.server-addr=127.0.0.1:8848
服务发现示例:使用@NacosInjected 注入 Nacos 的 NamingService 实例。
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public List get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
@SpringBootApplication
public class NacosDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryApplication.class, args);
}
}
启动NacosDiscoveryApplication,调用 curl http://localhost:8080/discovery/get?serviceName=example,此时返回为空 JSON 数组[]。
通过调用Nacos Open API 向 Nacos server 注册一个名称为 example 服务:
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'
再次访问curl http://localhost:8080/discovery/get?serviceName=example,此时返回内容为:
[
{
"instanceId": "127.0.0.1-8080-DEFAULT-example",
"ip": "127.0.0.1",
"port": 8080,
"weight": 1.0,
"healthy": true,
"cluster": {
"serviceName": null,
"name": "",
"healthChecker": {
"type": "TCP"
},
"defaultPort": 80,
"defaultCheckPort": 80,
"useIPPort4Check": true,
"metadata": {}
},
"service": null,
"metadata": {}
}
]
服务管理
进入实例控制台页面,即可查看和管理已经注册的服务。若上个步骤中客户端注册成功,即可在服务列表中查看到对应的服务。详细内容请参见管理服务。