下载与安装:
1、Nacos下载:
可在浏览器直接输入如下地址:
https://github.com/alibaba/nacos/releases
选择对应版本,直接下载,
2、解压Nacos
初始化配置:
第一步:找到/conf/nacos-mysql.sql文件里的sql脚本,然后登陆mysql,然后基于脚本文件中的描述创建数据库(名字nacos_config,编码方式utf8mb4),并执行脚本文件,脚本执行成功会创建一些表,如图所示:
说明:在执行此文件时,要求mysql的版本大于5.7版本(MariaDB最好10.5.11),否则会出现如下错误
第二步:打开/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码(假如前面有"#"要将其去掉):
服务器启动与访问
启动nacos:
在bin目录下面启动(cmd)
Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式): ./startup.sh -m standalone
Windows启动命令(standalone代表着单机模式运行,非集群模式): startup.cmd -m standalone
说明:
1)执行执行令时要么配置环境变量,要么直接在nacos/bin目录下去执行.
2)nacos启动时需要本地环境变量中配置了JAVA_HOME(对应jdk的安装目录),
访问Nacos服务
(浏览器):http://localhost:8848/nacos
服务注册与调用
创建Maven父级工程(01-sca)
依赖:
<properties>
<spring.cloud>Hoxton.SR8</spring.cloud>
<spring.cloud.alibaba>2.2.5.RELEASE</spring.cloud.alibaba>
</properties>
<!--依赖版本管理-->
<dependencyManagement>
<dependencies>
<!--spring cloud 依赖,此依赖需要springboot的支持,
此依赖中定义了spring cloud微服务规范-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud}</version>
<!--import表示此工程下的子工程可以直接引用这个依赖中版本-->
<scope>import</scope>
<!--当scope为import时,这里的类型必须为pom类型-->
<type>pom</type>
</dependency>
<!--spring cloud alibaba 依赖,此依赖依赖于 spring cloud,
当前依赖中是基于微服务规范做了具体实现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
其中的版本可参考如下网址(涉及到一个兼容性问题,不能随意指定其版本):
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
说明:父工程资源初始化完成以后,将src目录删除,因为父工程只负责依赖管理.
生产者服务创建及注册 (sca-provider)
第一步:创建服务提供者继承parent工程
第二步:添加项目依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
第三步:创建并修改配置文件application.yml(或者application.properties),实现服务注册
server:
port: 8081
spring:
application:
name: sca-provider
cloud:
nacos:
server-addr: localhost:8848
第四步:创建启动类,并定义处理请求的控制层对象和方法
package com.cy;
@SpringBootApplication
public class ScaProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ScaProviderApplication.class, args);
}
@Value("${server.port}")
private String server;
@RestController
public class ProviderController {
@GetMapping(value = "/provider/echo/{msg}")
public String doEcho(@PathVariable String msg) {
return server+"say:Hello Nacos Discovery " + msg;
}
}
}
第五步:启动启动类,然后刷先nacos服务,检测是否服务注册成功
第六步:打开浏览器,输入http://localhost:8081/provider/echo/msa,然后进行访问。
消费者服务发现及调用(sca-consumer)
第一步:创建服务消费者继承parent工程
第二步:添加项目依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
第三步:修改配置文件application.yml
server:
port: 8090
spring:
application:
name: sca-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848 #从哪里去查找服务
第四步:创建启动类并实现服务消费
package com.cy;
@SpringBootApplication
public class ScaConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ScaConsumerApplication.class,args);
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
@RestController
public class ConsumerController{
@Value("${spring.application.name}")
private String appName;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer/doRestEcho1")
public String doRestEcho01(){
String url = "http://localhost:8081/provider/echo/"+appName;
System.out.println("request url:"+url);
return restTemplate.getForObject(url, String.class);
}
}
}
第五步:启动消费者服务,并在浏览器输入http://localhost:8090/consumer/doRestEcho1地址进行访问