预计需要,1个Nginx+3个nacos注册中心+1个mysql
请确保是在环境中安装使用:
-
64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
-
64 bit JDK 1.8+;
-
Maven 3.2.x+;
-
3个或3个以上Nacos节点才能构成集群。
Nacos下载Linux版
-
nacos-server-1.1.4.tar.gz 解压后安装
109_Nacos集群配置(上)
集群配置步骤(重点)
1.Linux服务器上mysql数据库配置
SQL脚本在哪里 - 目录nacos/conf/nacos-mysql.sql
自己Linux机器上的Mysql数据库上运行
2.application.properties配置
位置
添加以下内容,设置数据源
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
3.Linux服务器上nacos的集群配置cluster.conf
梳理出3台nacos集器的不同服务端口号,设置3个端口:
-
3333
-
4444
-
5555
复制出cluster.conf
内容
192.168.111.144:3333 192.168.111.144:4444 192.168.111.144:5555
注意,这个IP不能写127.0.0.1,必须是Linux命令hostname -i
能够识别的IP
4.编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口
/mynacos/nacos/bin目录下有startup.sh
平时单机版的启动,都是./startup.sh即可
但是,集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。 命令: ./startup.sh -p 3333表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。
修改内容
执行方式 - startup.sh - p 端口号
110_Nacos集群配置(下)
5.Nginx的配置,由它作为负载均衡器
修改nginx的配置文件 - nginx.conf
修改内容
按照指定启动
截止到此处,1个Nginx+3个nacos注册中心+1个mysql
测试
-
启动3个nacos注册中心
-
startup.sh - p 3333
-
startup.sh - p 4444
-
startup.sh - p 5555
-
查看nacos进程启动数
ps -ef | grep nacos | grep -v grep | wc -l
-
-
启动nginx
-
./nginx -c /usr/local/nginx/conf/nginx.conf
-
查看nginx进程
ps - ef| grep nginx
-
-
测试通过nginx,访问nacos - http://192.168.111.144:1111/nacos/#/login
-
新建一个配置测试
-
新建后,可在linux服务器的mysql新插入一条记录
-
让微服务cloudalibaba-provider-payment9002启动注册进nacos集群 - 修改配置文件
server
-
启动微服务cloudalibaba-provider-payment9002
-
访问nacos,查看注册结果
高可用小总结
111_Sentinel是什么
Sentinel 是什么?
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 具有以下特征:
-
丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
-
完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
-
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
-
完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
Sentinel 的主要特性:
—句话解释,之前我们讲解过的Hystrix。
Hystrix与Sentinel比较:
-
Hystrix
-
需要我们程序员自己手工搭建监控平台
-
没有一套web界面可以给我们进行更加细粒度化得配置流控、速率控制、服务熔断、服务降级
-
-
Sentinel
-
单独一个组件,可以独立出来。
-
直接界面化的细粒度统一配置。
-
约定 > 配置 > 编码
都可以写在代码里面,但是我们本次还是大规模的学习使用配置和注解的方式,尽量少写代码
112_Sentinel下载安装运行
服务使用中的各种问题:
-
服务雪崩
-
服务降级
-
服务熔断
-
服务限流
Sentinel 分为两个部分:
-
核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
-
控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
安装步骤:
-
下载
-
下载到本地sentinel-dashboard-1.7.0.jar
-
运行命令
-
前提
-
Java 8 环境
-
8080端口不能被占用
-
-
命令
-
java -jar sentinel-dashboard-1.7.0.jar
-
-
-
访问Sentinel管理界面
-
localhost:8080
-
登录账号密码均为sentinel
-
113_Sentinel初始化监控
启动Nacos8848成功
新建工程 - cloudalibaba-sentinel-service8401
POM
<dependencies>
<dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<!--SpringCloud ailibaba sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- SpringBoot整合Web组件+actuator -->
<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>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.3</version>
</dependency>
<dependency>