配套资料,免费下载
链接:https://pan.baidu.com/s/1-eRFozbFIShqbqNRFD9KDw
提取码:rt3w
复制这段内容后打开百度网盘手机App,操作更方便哦
第一章 Nacos的介绍
1.1、Nacos是什么
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
简单来说,Nacos 就是Eureka + Spring Cloud Config + Spring Cloud Bus的增强版本,融合了众多技术于一身,更简单,更易用,更强大。
官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
源码地址:https://github.com/alibaba/nacos
1.2、Nacos的特性
-
服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
-
动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
-
动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.
-
服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
第二章 Nacos安装与运行
2.1、下载Nacos
下载地址:https://github.com/alibaba/nacos/releases/download/1.4.1/nacos-server-1.4.1.zip
2.2、解压Nacos
解压软件:请解压到路径中不包含中文以及空格的目录,Java运行环境为JDK1.8+。
2.3、运行Nacos
单机运行:startup.cmd -m standalone
2.4、访问Nacos
访问地址:http://localhost:8848/nacos/,登录账号:nacos,登录密码:nacos
第三章 Nacos作注册中心
3.1、服务提供者
3.1.1、创建工程
在父工程spring-cloud-alibaba-study
下创建子项目service-goods
3.1.2、导入依赖
pom.xml
<dependencies>
<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.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
3.1.3、编写配置
application.yaml
server:
port: 7001
management:
endpoints:
web:
exposure:
include: '*'
spring:
application:
name: service-goods
cloud:
nacos:
discovery:
server-addr: http://localhost:8848
3.1.4、主启动类
com.caochenlei.ServiceGoodsApplication
@SpringBootApplication
public class ServiceGoodsApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceGoodsApplication.class, args);
}
}
3.1.5、控制器类
com.caochenlei.controller.GoodsController
@RestController
public class GoodsController {
@Value("${server.port}")
private Integer port;
@RequestMapping("/goods/findByGid")
public String findByGid(@RequestParam("gid") String gid) {
return "server port:" + port + ",findByGid:" + gid;
}
}
3.1.6、启动测试
启动程序:com.caochenlei.ServiceGoodsApplication
访问地址:http://localhost:8848/nacos
3.1.7、服务集群
3.2、服务消费者
3.2.1、创建工程
在父工程spring-cloud-alibaba-study
下创建子项目service-order
3.2.2、导入依赖
pom.xml
<dependencies>
<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.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
3.2.3、编写配置
application.yaml
server:
port: 8001
management:
endpoints:
web:
exposure:
include: '*'
spring:
application:
name: service-order
cloud:
nacos:
discovery:
server-addr: http://localhost:8848
3.2.4、主启动类
com.caochenlei.ServiceOrderApplication
@SpringBootApplication
public class ServiceOrderApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceOrderApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
3.2.5、控制器类
com.caochenlei.controller.OrderController
@RestController
public class OrderController {
@Value("${server.port}")
private Integer port;
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/order/findByOid")
public String findByGid(@RequestParam("oid") String oid) {
String goods = restTemplate.getForObject("http://service-goods/goods/findByGid?gid=1", String.class);
return "server port:" + port + ",findByOid:" + oid + ",goods:" + goods;
}
}
3.2.6、启动测试
启动程序:com.caochenlei.ServiceOrderApplication
访问地址:http://localhost:8848/nacos
访问地址:http://localhost:8001/order/findByOid?oid=0
访问地址:http://localhost:8001/order/findByOid?oid=0
通过上边的演示,我们发现,默认就已经有了负载均衡的能力了。
第四章 Nacos作配置中心
4.1、创三个配置文件
application-dev.yaml
application-test.yaml
application-prod.yaml
4.2、修改服务提供者
4.2.1、导入依赖
pom.xml
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
...
...
</dependencies>
4.2.2、添加配置
bootstrap.yaml
spring:
application:
name: service-goods
profiles:
active: dev #激活开发环境配置
cloud:
nacos:
discovery:
server-addr: http://localhost:8848
config:
server-addr: http://localhost:8848
prefix: application #指定配置文件的前缀
file-extension: yaml #指定配置文件的拓展名
group: DEFAULT_GROUP #指定配置文件所在组
namespace: public #指定配置文件所在命名空间
4.2.3、修改配置
application.yaml
server:
port: 7001
management:
endpoints:
web:
exposure:
include: '*'
4.2.4、写控制类
com.caochenlei.controller.ReadConfigController
@RestController
@RefreshScope
public class ReadConfigController {
@Value("${myinfo}")
private String myinfo;
@RequestMapping("/myinfo")
public String myinfo() {
return myinfo;
}
}
4.2.5、启动测试
重启服务:ServiceGoodsApplication7001
重启服务:ServiceGoodsApplication7002
访问地址:http://localhost:7001/myinfo
修改配置:myinfo: application-dev.yaml,version=2
访问地址:http://localhost:7001/myinfo
4.3、配置的数据模型
Data Id
Nacos中的某个配置集合的ID,配置集合ID是组织划分配置的维度之一,Data ID通常用于组织划分系统的配置集合,一个系统或者应用可以包含多个配置集合,每个配置集都可以被一个有意义的名称标识。
Group
Nacos中的一组配置集合,是组织配置的维度之一,通过一个有意义的字符串(如 Buy 或 Trade)对一组配置集合进行分组,从而区分Data ID相同的配置集合,当在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP,配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如database_url配置和MQ_topic配置。
Namespace
用于配置隔离,不同命名空间下,可以存在相同的Group或Data ID配置,Namespace的常用场景之一是不同环境的配置进行区分隔离,例如开发环境、测试环境和生产环境的资源(如配置、服务)隔离等。
第五章 Nacos数据持久化
5.1、持久化介绍
Nacos默认情况下是采用Apache Derby内嵌数据库进行数据存储,在单机模式时可以使用Nacos嵌入式数据库实现数据存储,但是derby数据库不方便观察数据存储的基本情况,另外,在Nacos集群环境下,如果使用内嵌数据库,就不能保证数据库的一致性,因此,从Nacos 0.7版本开始增加了支持Mysql数据源能力。
5.2、持久化配置
5.2.1、安装数据库
安装数据库,版本要求:5.6.5+,这里我才用官方最新的版本mysql-5.7.33-winx64.zip
,在安装之前一定要确保当前计算机中没有安mysql
,否则会失败。
下载mysql
下载地址,32位:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.33-win32.zip
下载地址,64位:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.33-winx64.zip
安装mysql
(1)解压mysql目录
C:\DevTools\mysql-5.7.33-winx64
(2)创建mysql配置
C:\DevTools\mysql-5.7.33-winx64\my.ini
[mysql]
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
default-storage-engine=INNODB
basedir=C:\\DevTools\\mysql-5.7.33-winx64
datadir=C:\\DevTools\\mysql-5.7.33-winx64\\data
(3)创建data目录
C:\DevTools\mysql-5.7.33-winx64\data
(4)使用管理员启动cmd,然后进入到bin
目录
C:\WINDOWS\system32>cd C:\DevTools\mysql-5.7.33-winx64\bin
C:\DevTools\mysql-5.7.33-winx64\bin>
(5)安装mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>mysqld -install mysql
Service successfully installed.
(6)初始mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>mysqld --initialize --user=mysql --console
...
...
...
2021-02-17T03:55:21.178240Z 1 [Note] A temporary password is generated for root@localhost: Jl3;h1WCnOoS
注意:密码在
A temporary password is generated for root@localhost: Jl3;h1WCnOoS
(7)启动mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>net start mysql
mysql 服务正在启动 .
mysql 服务已经启动成功。
(8)登录mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>mysql -uroot -pJl3;h1WCnOoS
(9)修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
(10)退出mysql服务
exit
(11)登录mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>mysql -uroot -p123456
卸载mysql
(1)停止mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>net stop mysql
(2)删除mysql服务
C:\DevTools\mysql-5.7.33-winx64\bin>sc delete mysql
(3)删除mysql目录
删除 C:\DevTools\mysql-5.7.33-winx64
注意:如果说删除目录不成功,请把所有cmd窗口、文件打开全部关闭,再重新尝试一次。
5.2.2、导入数据表
初始化数据库:CREATE DATABASE nacos_config; USE nacos_config;
导入数据库表:C:\DevTools\nacos\conf\nacos-mysql.sql
5.2.3、改配置文件
修改nacos\conf\application.properties
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
5.2.4、重启Nacos
请重新启动Nacos。
5.2.5、创配置文件
application-dev.yaml
application-test.yaml
application-prod.yaml
5.2.6、查看数据库
第六章 Nacos高可用集群
6.1、高可用集群介绍
我们可以看到上边这是一个高可用的Nacos的架构图,而且一般来说,软件是安装到Linux环境中的,且一台机器安装一个软件,端口都是默认的8848。
但是为了教学的方便,Nginx的集群搭建和Mysql的集群搭建这里就不演示了,我们搭建一个Windows版本的高可用集群:1台Nginx+1台Nacos+1台Mysql。
Nginx的学习:https://caochenlei.blog.csdn.net/article/details/108300342
Mysql的学习:https://caochenlei.blog.csdn.net/article/details/107640904
我们现在已经安装好了mysql数据库,并且也已经配置好了nacos,nacos也已经连接了mysql数据库,而集群版的nacos只需要多一个配置文件就行了,这个配置文件就代表了所有nacos的ip:port。
6.2、高可用集群搭建
6.2.1、Nacos集群配置
将cluster.conf.example
拷贝一份为cluster.conf
#it is ip
#example
#192.168.16.101:8847
#192.168.16.102
#192.168.16.103
#这里存放的就是所有安装nacos的服务地址,也就是IP:PORT列表,这里只有一台,我就写一个,你有几台就写几,集群最少是3台,这里只是为了演示如何配
192.168.1.3:8848
6.2.2、Nacos重新启动
重新启动nacos,启动命令为:startup.cmd
6.2.3、Nginx负载均衡
修改文件nginx.conf
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#这里写nacos的各个服务器的ip地址和端口号,理论上,最少三台,这里为了演示,就写了一台
upstream nacos-cluster{
server 192.168.1.3:8848;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://nacos-cluster;
}
}
}
6.2.4、Nginx软件启动
C:\DevTools\nginx-1.18.0>nginx.exe -c ./conf/nginx.conf
6.2.5、Nginx访问测试
浏览器输入:http://localhost/nacos/#/login
6.2.6、Nginx地址修改
spring:
application:
name: service-goods
profiles:
active: dev #激活开发环境配置
cloud:
nacos:
discovery:
##正常来说,这个地址你需要修改,但是,这里就不修改了
server-addr: http://localhost
config:
##正常来说,这个地址你需要修改,但是,这里就不修改了
server-addr: http://localhost
prefix: application #指定配置文件的前缀
file-extension: yaml #指定配置文件的拓展名
group: DEFAULT_GROUP #指定配置文件所在组
namespace: public #指定配置文件所在命名空间
原文地址:https://caochenlei.blog.csdn.net
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。