springcloud之nacos服务治理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: springcloud之nacos服务治理

文章目录

简介

服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

上篇中,服务调用的地址是写的固定的,如果服务地址变更需要手动修改地址,在程序开发中比较费劲,比较难管理。于是需要一个统一管理服务的组件,服务注册中心很多,如Zookeeper,Eureka,Consul,Nacos,本篇介绍Nacos,是SpringCloud Alibaba 的一个组件,负责服务注册发现和服务配置

bce0814621b64d8bba30c7d749f97871.png

服务注册中心具有以下功能:


服务发现:

服务注册:保存服务提供者和服务调用者的信息

服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息

服务配置:

配置订阅:服务提供者和服务调用者订阅微服务相关的配置

配置下发:主动将配置推送给服务提供者和服务调用者

服务健康检测

检测服务提供者的健康情况,如果发现异常,执行服务剔除

naocs搭建

镜像拉取

docker pull nacos/nacos-server

nacos数据库脚本

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

3fe756f6eef346278ac97e2431eb1342.png

创建容器

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

端口问题8848未开放。

#开放端口

firewall-cmd --zone=public --add-port=8848/tcp --permanent

#重启防火墙

systemctl restart firewalld.service

#重启配置

firewall-cmd --reload

#查询已开放的端口(已开放的端口号集合):

firewall-cmd --zone=public --list-ports

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

访问nacos

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

f81ceae51b254fa3af4031bbe45d5502.png

项目搭建

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);

   }

}

服务注册是否成功

5a0b17bd22b74cf4945faf4caad7c70b.png

调用测试

日志

fb21accd28a340e3a915cc7bb267aa8b.png


网页测试

af735d9b5d3c46b58493b493296344c5.png

下篇讲解,负载均衡调用

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
66 0
|
6天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
206 0
|
6天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
128 0
|
6天前
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
1375 0
|
6天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
6天前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
|
6天前
|
开发框架 负载均衡 Java
Spring boot与Spring cloud之间的关系
总之,Spring Boot和Spring Cloud之间的关系是一种构建和扩展的关系,Spring Boot提供了基础,而Spring Cloud在此基础上提供了分布式系统和微服务架构所需的扩展和工具。
23 4
Spring boot与Spring cloud之间的关系
|
6天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
77 1
|
6天前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
246 0
|
6天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
797 0

热门文章

最新文章