springcloud之nacos服务治理

简介

服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。
上篇中,服务调用的地址是写的固定的,如果服务地址变更需要手动修改地址,在程序开发中比较费劲,比较难管理。于是需要一个统一管理服务的组件,服务注册中心很多,如Zookeeper,Eureka,Consul,Nacos,本篇介绍Nacos,是SpringCloud Alibaba 的一个组件,负责服务注册发现和服务配置。
关系图
服务注册中心具有以下功能:

  1. 服务发现:
    服务注册:保存服务提供者和服务调用者的信息
    服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息
  2. 服务配置:
    配置订阅:服务提供者和服务调用者订阅微服务相关的配置
    配置下发:主动将配置推送给服务提供者和服务调用者
  3. 服务健康检测
    检测服务提供者的健康情况,如果发现异常,执行服务剔除

naocs搭建

镜像拉取
docker pull nacos/nacos-server
nacos数据库脚本

创建数据库,nacos_config,执行脚本创建表。
nacos脚本

创建容器
docker run -d  --env MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.5.130 -e MYSQL_SERVICE_USER=root  -e MYSQL_SERVICE_PASSWORD=123456 -e MYSQL_SERVICE_DB_NAME=nacos_config -e JVM_XMS=256m -e JVM_XMX=256m -e JVM_XMN=256m -p 8848:8848  --network=host  --name nacos --restart=always nacos/nacos-server
查看启动日志
docker logs --since 1m nacos

错误:

Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
	at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:225)
	at com.alibaba.nacos.config.server.service.dump.ExternalDumpService.init(ExternalDumpService.java:52)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
	... 54 common frames omitted
Caused by: java.lang.IllegalStateException: No DataSource set
	at org.springframework.util.Assert.state(Assert.java:76)
	at org.springframework.jdbc.support.JdbcAccessor.obtainD

出现错误可能原因:

  1. mysql连接不上,需要设置配置文件application.properties中db.url的超时时间。原本是1000和3000
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000

2.端口问题8848未开放。

#开放端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
#重启防火墙
systemctl restart firewalld.service
#重启配置
firewall-cmd --reload
#查询已开放的端口(已开放的端口号集合):
firewall-cmd --zone=public --list-ports

3.数据库连接问题。尝试用命令登录数据库试试,在重启启动nacos。

访问nacos

默认的地址:http://nacos的服务ip:8848/nacos/,用户和密码默认都是nacos.
登录成功

项目搭建

nacos依赖引入

需要注意版本对应 nacos1.4.1,nacos-discovery2.1.0.RELEASE,

	<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Hoxton.SR12</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
  <!--nacos客户端-->
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
yml配置服务注册地址

user和product以及order模块都需要配置

spring:
  application:
    name: springcloud-user
  ##nacos服务地址注册
  cloud:
    nacos:
      discovery:
        server-addr: nacos地址:8848
        enabled: true
启动类

启动类都需要加@EnableDiscoveryClient注解。

/**
 * 服务注册
 */
@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudUserApplication.class,args);
    }
}
服务注册是否成功

服务注册

调用测试

日志
日志
网页测试
测试
下篇讲解,负载均衡调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘同学要加油呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值