服务发现:Spring Cloud Alibaba Nacos

声明:入门级文档,更多内容会持续更新,不足之处,望不吝指点


一、启动Nacos注册中心
  • 下载Nacos
  • 解压后进入到nacos/conf下,修改你想要修改的配置(比如启动的端口号、metric的输出、集群信息、日志信息等等),默认是使用h2内存数据库运行,但是同时也提供了nacos-mysql.sql来进行mysql数据库的配置。示例如下
db.num=2
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.9:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=nacos
  • 进入nacos/bin选择对应的启动文件打开nacos
  • 浏览器访问localhost:8848/nacos/index.html(如果你在本机运行且没有修改配置的情况下),登录的用户名和密码都是nacos
  • 左侧选择命名空间,进行命名空间的配置,如果服务不进行命名空间的配置,那么服务默认注册到public空间之中,命名空间之间的幻境是隔离的,故可以用来隔离不同的应用或者是同应用的不同环境

二、将服务注册到Nacos上
  • 添加nacos-discovery的依赖
<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>
  • 修改配置
server.port=8081
spring.application.name=nacos-client-provider
#配置该服务的服务名,默认是spring.application.name的值
#spring.cloud.nacos.discovery.service=xxx
#配置nacos服务中心的地址,如果是集群,多个地址之间用逗号隔开
spring.cloud.nacos.discovery.server-addr=localhost:8848
#配置该服务索要注册到nacos的命名空间Id,命名空间Id不是命名空间的名字,在创建命名空间后会自动生成
spring.cloud.nacos.discovery.namespace=0d12689e-cd5b-483b-a050-162398ee9482
#配置该服务的权重,权重越高越优先被访问到
#spring.cloud.nacos.discovery.weight=1
#强制配置服务的注册ip
#spring.cloud.nacos.discovery.ip=xxx
#强制配置服务的注册端口
#spring.cloud.nacos.discovery.port=-1
#是否启用内置的ribbon
#ribbon.nacos.enabled=true
  • 使用注解@EnableDiscoveryClient开启服务发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class NacosClientProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosClientProviderApplication.class, args);
    }

}
  • 使用RestTemplate访问指定服务的接口
String result = restTemplate.getForObject("http://nacos-client-provider/provider/getHello" , String.class);

地址名就是http://服务名/接口路径


参考文档:
[1] spring cloud alibaba

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。