Spring Cloud Alibaba(一) Nacos
Spring Cloud Alibaba
Spring Cloud Alibaba简介
Spring Cloud Alibaba的官网:https://spring-cloud-alibaba-group.github.io/github-pages/2021/zh-cn/
Spring Cloud Alibaba致力于提供为微服务开发的一站式解决方案。Spring Cloud Alibaba包含开发分布式应用服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。
基于Spring Cloud Alibaba,我们只需要添加一些注解和少量配置,就可以将Spring Cloud应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。
Spring Cloud Alibaba功能
- 服务限流降级:支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Dubbo 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
- 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
- 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
- Rpc服务:扩展 Spring Cloud 客户端 RestTemplate 和 OpenFeign,支持调用 Dubbo RPC 服务
- 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
- 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
- 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
- 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
Spring Cloud Alibaba Nacos
Nacos简介
Nacos(Naming Configuration Service)是一款阿里巴巴开源的核心组件之一,可以作为注册中心和配置中心使用,是一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Spring Cloud Alibaba Nacos Discovery
使用 Spring Cloud Alibaba Nacos Discovery,可基于 Spring Cloud 的编程模型快速接入 Nacos 服务注册功能。
本章即之后的章节项目将从微服务实战项目开始实现
服务注册/发现:Nacos Discovery
传统手动的法师来给每一个客户端来配置所有服务提者的服务列表是一件非常困难的事,而且不利于服务的动态扩缩容。
Nacos Discovery帮助您将服务自动注册到Nacos服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery 也将服务实例自身的一些元数据信息-例如 host,port, 健康检查URL,主页等内容注册到 Nacos
安装并运行Nacos
下载安装包
下载地址:https://github.com/alibaba/nacos/releases
这里演示的是Release 1.4.3: https://github.com/alibaba/nacos/releases/tag/1.4.3
解压安装包
运行
方法一:直接运行bin
目录下的startup.cmd
方法二:命令行方式启动
1 | startup.cmd -m standalone |
登录
账号:nacos 密码:nacos
IDEA运行Nacos
导入nacos文件夹
终端方式启动
编辑配置
通过配置启动
服务注册
父项目添加配置
1 | <dependencyManagement> |
子项目添加配置
1 | <dependencies> |
修改配置文件
1 | spring: |
其他微服务同样配置
启动项目
服务发现
基于OpenFeign实现服务发现调用以及负载均衡
导入依赖
1 | <dependency> |
添加服务绑定接口和服务降级实现类
启动服务测试
负载均衡
编辑配置
服务启动
集群分区
拷贝配置文件
编辑配置
运行服务
配置文件
可以看到远程调用会优先调用同区域的服务
配置中心
新建配置
模块导入依赖
1 | <dependency> |
添加bootstrap.yml文件
1 | spring: |
动态配置刷新
添加测试接口
@RefreshScope开启配置热更新
接口测试
命名空间
创建命名空间
修改配置文件
搭建集群
集群部署架构图
Docker拉取Nacos镜像
1 | docker pull nacos/nacos-server |
导入镜像数据库
新建数据库
运行SQL文件
创建用户
配置角色权限
创建自定义网络
Docker集群部署Nacos时要注意,创建的Nacos容器填写的ip都是外部ip,但是创建的网段却是docker内部的网段,因此 我们需要只能在同一网段的ip
1 | docker network ls |
创建Nacos容器集群
my-nacos1
1 | docker run -d \ |
my-nacos2
1 | docker run -d \ |
访问my-nacos1地址:http://{ip}:8848/nacos/index.html
访问my-nacos2地址:http://{ip}:8849/nacos/index.html
输入默认的账户密码nacos登录成功则说明集群部署成功
使用Nginx反向代理Nacos集群
拉取nginx镜像并创建nginx容器
1 | docker pull nginx |
1 | docker run --name nginx -p 8080:80 -d nginx |
将容器中的nginx配置文件拷贝到宿主机/usr/local/nginx/conf目录下
1 | mkdir -p /usr/local/nginx/conf/nginx.conf |
停止并删除之前的nginx容器
1 | docker stop |
修改nginx.conf配置
1 | http { |
数据挂载运行docker容器
1 | docker run --name nginx --network=mynetwork -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8080:8080 -d nginx |
访问:http://{ip}:8080/nacos/
修改配置文件
1 | cloud: |
运行服务