1.Nacos服务注册与发现
1.1.什么是Nacos
Nacos致力于帮助您发现,配置和管理微服务;
它提供了一组简单有用的功能,使您能够实现动态服务发现,服务配置,服务元数据和流量管理;
Nacos使构建,交付和管理微服务平台变得更容易,更快捷;
它是通过微服务或云原生方法支持以服务为中心的现代应用程序体系结构的基础架构。
1.2.Nacos服务安装
····下载地址:https://github.com/alibaba/nacos/releases
····解压配置即可用。
1.3.Nacos单机配置
····修改启动
如果不集群,单机使用,修改startup.cmd(windows系统):
set MODE="standalone"
····连接数据保存数据
修改conf/application.properties:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=mysql的账号
db.password.0=mysql的密码
····创建nacos数据库
创建数据库,复制config/nacos-mysql.sql文件到数据库并运行,生成数据库表
2.服务注册
2.1.导入依赖
和Eureka一样,服务也需要导入jar包。
父项目导入SpringCloudAlibaba
<!--SpringBoot-->
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/>
</parent>
<!--SpringCloud-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
各服务导入Nacos-Client
<dependencies>
<dependency>
<groupId>com.alibaba.cloud </groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--加入WEB依赖是为了方便后面写Controller-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.2.主配置类
@SpringBootApplication
@EnableDiscoveryClient
public class UserApp {
public static void main(String[] args) {
SpringApplication.run(UserApp.class, args);
}
}
2.3.配置yaml
server:
port: 1010
#注册到EurekaServer
spring:
application:
name: user-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #注册中心地址
2.4.启动测试
····登录界面,默认账号nacos,密码nacos
····服务页面
····数据库表
服务注册成功了
3.OpenFeign服务调用
····和之前一样,服务之间可以使用OpenFeign相互调用
3.1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
3.2.启动类开启feign注解
@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OrderApp {
public static void main(String[] args) {
SpringApplication.run(OrderApp.class, args);
}
}
3.3.编写Feign接口
@FeignClient
@FeignClient("user-server")
public interface UserFeignClient {
@GetMapping("/user/{id}")
User getUser(@PathVariable("id") Long id);
}
3.4.测试
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private UserFeignClient userFeignClient;
@GetMapping("/{id}")
public User getUser(@PathVariable("id") Long id) {
return userFeignClient.getUser(id);
}
}
4.配置中心
将各个微服务的yaml配置放在nacos,修改nacos动态生效,不用重启项目
4.3.导入依赖
<!-- 配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
4.2.创建yaml文件
4.3.各服务创建bootstrap.yaml关联相应配置
根据bootstrap.yaml才能定位到相应的配置文件
spring:
profiles:
active: dev
cloud:
nacos:
config:
prefix: application-order
file-extension: yaml
server-addr: localhost:8848
extension-configs:
- application-dev.yaml
生效的配置文件环境:dev;
配置文件前缀:application-order;
配置文件后缀:yaml;
映射到的文件就是:application-order-dev.yaml
配置文件地址:localhost:8848;
公共配置文件(各微服务的共同配置):extension-configs:
4.4.其他
命名空间:在nacos创建命名空间,根据命名空间id使用对应的配置文件:
namespace: 8ef8c1e5-6d20-4efc-80c8-2b2c05541fa3 #命名空间的ID
自定义Data ID:支持自定义扩展的 Data Id 配置 :
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config;
开启Nacos认证:开启Nacos认证,需要通知账号和密码进行注册,以及拉取配置:
https://nacos.io/zh-cn/docs/auth.html。