Spring Cloud Alibaba nacos 配置中心使用
背景
上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心
spring-cloud-alibaba-basis 创建基础依赖
首先我们创建一个spring-cloud-alibaba-basis 基础依赖 工程里面制定我们要用到的公用的版本
- spring boot 版本 2.1.7.RELEASE
- spring cloud 版本 Greenwich.RELEASE
- spring cloud 阿里巴巴的版本 2.1.0.RELEASE
- Spring IO Platform 版本依赖
<modelVersion>4.0.0</modelVersion>
<groupId>com.xian.cloud</groupId>
<artifactId>spring-cloud-alibaba-basis</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>spring cloud alibaba 总pom</name>
<description>spring cloud alibaba 教程总pom版本控制</description>
<modules>
<module>cloud-discovery-server</module>
<module>cloud-discovery-client-common</module>
</modules>
<!--<parent>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-parent</artifactId>-->
<!--<version>2.1.7.RELEASE</version>-->
<!--<relativePath/> <!– lookup parent from repository –>-->
<!--</parent>-->
<properties>
<!-- 基本属性 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<!-- 版本属性 -->
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
<spring-boot.version>2.1.7.RELEASE</spring-boot.version>
<spring-platform.version>Cairo-SR8</spring-platform.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring-cloud-alibaba 总依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--支持Spring Boot 2.1.X-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Greenwich.RELEASE-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--
Spring IO Platform,简单的可以认为是一个依赖维护平台,该平台将相关依赖汇聚到一起,针对每个依赖,都提供了一个版本号
完整的依赖列表 https://docs.spring.io/platform/docs/current/reference/html/appendix-dependency-versions.html
-->
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>${spring-platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 子项目公共依赖的jar包 -->
<dependencies>
<!-- nacos discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
Spring IO Platform 这个jar包有兴趣的同学可以去关注一下他里面进行了第三方常用jar包的版本管理。每个spring 对应的第三方jar版本都罗列在上面了。这样方便我们对于第三方jar包的版本管理。#为了解决jar包版本冲突而存在
sping boot 除了提供我们熟知的 方式以外 还有spring-boot-dependencies 依赖方式。
这样我们在新建俩个module
服务提供者 cloud-discovery-server
<parent>
<groupId>com.xian.cloud</groupId>
<artifactId>spring-cloud-alibaba-basis</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>cloud-discovery-server</artifactId>
<description>服务提供者</description>
<name>服务提供者</name>
因为我们在父类的pom里面定义了公共依赖的jar包,所以我们不需要再次引入jar包只需要制定parent pom就可以继承这些jar包。同样下面的消费者服务我也会同样如此利用maven的jar包传递方式进行案例的开发
创建服务启动类 和对外服务的controller 类
- 启动类
package com.xian.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: xlr
* @Date: Created in 2:44 PM 2019/10/27
*/
@EnableDiscoveryClient
@SpringBootApplication
public class DiscoveryServerApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryServerApplication.class, args);
}
}
- 对外提供服务的http接口
package com.xian.cloud.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: xlr
* @Date: Created in 2:57 PM 2019/10/27
*/
@RestController
@RequestMapping("server")
@Slf4j
public class DiscoverCotroller {
/**
* 对外提供的服务 HTTP接口
* @param name
* @return
*/
@GetMapping("/hello")
public String hello(@RequestParam String name) {
log.info("invoked name = " + name);
return "hello " + name;
}
}
编写YAML文件
server:
port: 9012
spring:
profiles:
active: dev
application:
name: cloud-discovery-server
cloud:
nacos:
discovery:
server-addr: 47.99.209.72:8848
服务消费者 cloud-discovery-client
<parent>
<artifactId>spring-cloud-alibaba-basis</artifactId>
<groupId>com.xian.cloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-discovery-client</artifactId>
<name>服务消费者</name>
创建服务启动类 和调用服务提供者的的controller http接口
- 启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: xlr
* @Date: Created in 3:03 PM 2019/10/27
*/
@EnableDiscoveryClient
@SpringBootApplication
public class DiscoveryClientApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryClientApplication.class, args);
}
}
- 消费者服务接口
package com.xian.cloud.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @Author: xlr
* @Date: Created in 3:04 PM 2019/10/27
*/
@RequestMapping("client")
@RestController
@Slf4j
public class DiscoveryClientController {
//服务提供者 项目名称 spring.application.name
public static final String CLOUD_DISCOVERY_SERVER = "cloud-discovery-server";
/**
* 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、LoadBalancerClient等。
* 从LoadBalancerClient接口的命名中,是一个负载均衡客户端的抽象定义
*/
@Autowired
private LoadBalancerClient loadBalancerClient;
@RequestMapping(value = "/test",method = RequestMethod.GET)
public String test() {
ServiceInstance serviceInstance = loadBalancerClient.choose(CLOUD_DISCOVERY_SERVER);
log.info( "ServiceInstance :{}",serviceInstance );
String url = serviceInstance.getUri() + "/server/hello?name=" + "tom";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(url, String.class);
return "调用 " + url + ", 返回 : " + result;
}
}
编写YAML文件
server:
port: 9011
spring:
profiles:
active: dev
application:
name: cloud-discovery-client
cloud:
nacos:
discovery:
server-addr: 47.99.209.72:8848
然后启动服务
查看nacos控制台
显示俩个服务都已经注册到了 nacos注册中心
然后我们就请求http://localhost:9011/client/test 看看是否能够显示我们想要的结果
到此时已经完成了我们注册中心。可以在提供服务者处改变端口是否能进行负载均衡
服务端又分别启动了 9013、9014俩个端口 服务
再次进行测试http://localhost:9011/client/test
到此时我的注册中心、负载均衡已经全部实现完毕。
参考资料
示例代码
如何喜欢可以关注分享本公众号。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。转载请附带公众号二维码
Spring Cloud Alibaba nacos 配置中心使用的更多相关文章
- Spring Cloud Alibaba (nacos 注册中心搭建)
[nacos下载地址](https://github.com/alibaba/nacos/releases) ### 什么是 Nacos? - nacos主要起到俩个作用一个是注册中心,另外一个是配置 ...
- Spring Cloud 系列之 Alibaba Nacos 配置中心
Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...
- Spring Cloud Alibaba | Nacos服务中心初探
目录 Spring Cloud Alibaba | Nacos服务中心初探 1. 什么是Nacos? 1.1 Nacos 1.0 1.2 Nacos 2.0 2. Nacos 架构及概念 2.1 服务 ...
- Spring Cloud Alibaba | Nacos服务注册与发现
目录 Spring Cloud Alibaba | Nacos服务注册与发现 1. 服务提供者 1.1 pom.xml项目依赖 1.2 配置文件application.yml 1.3 启动类Produ ...
- Spring Cloud Alibaba | Nacos配置管理
目录 Spring Cloud Alibaba | Nacos配置管理 1. pom.xml 项目依赖 2. 在 bootstrap.properties 中配置 Nacos server 的地址和应 ...
- Spring Cloud Alibaba | Nacos集群部署
目录 Spring Cloud Alibaba | Nacos集群部署 1. Nacos支持三种部署模式 2. 集群模式下部署Nacos 2.1 架构图 2.2 下载源码或者安装包 2.3 配置集群配 ...
- 0.9.0.RELEASE版本的spring cloud alibaba nacos实例
简而言之,nacos与eureka的不同之处有三:后台老板.部署方式.功能.nacos是阿里的,eureka是奈飞的:nacos有自己的安装包,需要独立部署,eureka仅作为一个服务组件,引入jar ...
- Spring Cloud Alibaba+Nacos搭建微服务架构
1. Spring Cloud Alibaba 简介 Spring Cloud Alibaba是阿里巴巴为分布式应用提供的一站式解决方案,能够更方便快捷地搭建分布式平台,nacos拥有着替换eu ...
- Spring Cloud Alibaba Nacos Config 的使用
Spring Cloud Alibaba Nacos Config 的使用 一.需求 二.实现功能 1.加载 product-provider-dev.yaml 配置文件 2.实现配置的自动刷新 3. ...
随机推荐
- QTableWidget懒加载(动态加载)实现
在QTableWidget中加入一行行的数据,如果数据数量过多,滚动起来就会卡顿,插入数据时也会影响性能,为了解决这个问题,采用懒加载的方式,只在界面上显示10几条数据,填满界面.同时增加而外的竖直滚 ...
- Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题
1.为什么需要ModelDriven? 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2 ...
- Linux 相关系统日志查看
1. 登录日志 cat /var/log/secure 涉及到账号登录的日志信息都会记录在此文件中. 2. Unit 的启动日志 journalctl 可以查看所有 unit 的启动日志,日志的配置文 ...
- Delphi之TClientSocket和TServerSocket使用tcp keepalive心跳机制实现“断网”、"断电"检测
开发环境:Delphi7 测试环境:WinXP,Win7 32bit,Win7 64bit 使用TClientSocket和TServerSocket实现TCP长连接通讯,经常因为断电断网等原因导致 ...
- pyqt5在QMainWindow中布局的问题
在pyqt5中使用了父类为QMainWindow的话,在里面使用布局类,QGridLayout, QHBoxLayout ,QVBoxLayout 时,发现不好用. 解决: 如果是在以QWidget为 ...
- 重启 hdfs and yarn datanode
1- start-all.sh and stop-all.sh: Used to start and stop hadoop daemons all at once. Issuing it on th ...
- Oracle:常用操作(定时作业,逻辑导入,数据泵导入)
1.逻辑导入: /*第1步:创建临时表空间 **/ create temporary tablespace user_temp1 tempfile 'D:\app\Administrator\orad ...
- Linux进程间通信(IPC)之信号量
[Linux]进程间通信(IPC)之信号量详解与测试用例 2017年03月22日 17:28:50 阅读数:2255 学习环境centos6.5 Linux内核2.6 进程间通信概述 1. 进程通信机 ...
- 如何在WIN7下安装虚拟机linux系统
需要支持多个平台的IT管理员经常会遇到如何在Windows 7计算机上安装Linux的问题.幸运的是有多种方法可供选择:双系统.Linux虚拟机和U盘引导. 当需要用到Windows 7和Linux时 ...
- CTF—攻防练习之HTTP—SQL注入(X-forwarded-For)
主机:192.168.32.152 靶机:192.168.32.162 nmap,dirb扫ip,扫目录 在后台发现一个login,登录界面 然后直接上扫描器AVWS,发现存在X—Forwarded— ...