1. Spring Cloud Alibaba 介绍
下图是 Spring Cloud 官网给出的架构图,可以看到这个图中间就是各个微服务的实现,周边是去围绕这些微服务进行治理的支持性功能,例如分布式追踪、服务注册、配置服务等。
Spring Cloud 是以微服务为核心的分布式系统的一个构建标准,而Spring Cloud Alibaba是 Spring Cloud 标准的实现,目前 Spring Cloud Alibaba 成为了 Spring Cloud 家族中最受关注的框架。
上图中深色的部分,其实它就是 Spring Cloud 标准,一共有 3 层。
- 中间颜色最深的部分就是及整个微服务最核心的内容,包括了“ RPC 调用”以及“服务注册与发现”。
- 第二层,也就是围绕着核心的这一圈,是一些辅助微服务更好的工作功能,包括了负载均衡、路由、网关、断路器,还有分布式追踪等等这些内容。
- 再外层的话,主要是些分布式云环境里通用能力。
最外面这一圈,是 Spring Cloud Alibaba 对 Spring Cloud 的实现。
- 右上部分是对于 Spring Cloud 标准的实现。例如,我们通过 Dubbo 实现了 RPC 调用功能,通过 Nacos 实现了“服务注册与发现”、“分布式配置”,通过 Sentinel 实现了断路器等等,这里就不一一列举了。
- 左下部分是我们 Spring Cloud Alibaba 对阿里云各种服务的集成。
Spring Cloud Alibaba 组件
-
Sentinel
阿里巴巴开源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 -
Nacos
阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 -
RocketMQ
Apache RocketMQ™ 基于 Java 的高性能、高吞吐量的分布式消息和流计算平台。 -
Dubbo
Apache Dubbo™ 是一款高性能 Java RPC 框架。 -
Seata
阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。 -
Alibaba Cloud OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 -
Alibaba Cloud SchedulerX
阿里中间件团队开发的一款分布式任务调度产品,支持周期性的任务与固定时间点触发任务。 -
Alibaba Cloud SMS
覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
2. Nacos Server 准备
参考 Nacos 官网:https://nacos.io/zh-cn/docs/quick-start.html
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
2.1 预备环境准备
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+。
- Maven 3.2.x+。
2.2 下载源码或者安装包
你可以通过源码和发行包两种方式来获取 Nacos。
2.2.1 从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
2.2.2 下载编译后压缩包方式
您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
2.3 启动服务器
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式),参数 -m 指定启动模式:
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示"符号找不到",可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
2.4 关闭服务器
Linux/Unix/Mac
sh shutdown.sh
Windows
shutdown.cmd
或者双击shutdown.cmd运行文件。
2.5 演示启动nacos-server
准备
- nacos-server-1.4.2.tar.gz
- Linux Centos7,ip: 192.168.42.51
解压并启动nacos-server
[root@localhost ~]# ll nacos-server-1.4.2.tar.gz
-rw-r--r--. 1 root root 77982774 6月 8 2021 nacos-server-1.4.2.tar.gz
[root@localhost ~]# tar -zxvf nacos-server-1.4.2.tar.gz
[root@localhost ~]# cd nacos
[root@localhost nacos]# bin/startup.sh -m standalone
......
nacos is starting with standalone
nacos is starting,you can check the /root/nacos/logs/start.out
[root@localhost nacos]# tail -f -n 100 /root/nacos/logs/start.out
/home/tag/jdk1.8.0_231//bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Djava.ext.dirs=/home/tag/jdk1.8.0_231//jre/lib/ext:/home/tag/jdk1.8.0_231//lib/ext -Xloggc:/root/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/root/nacos/plugins/health,/root/nacos/plugins/cmdb -Dnacos.home=/root/nacos -jar /root/nacos/target/nacos-server.jar --spring.config.additional-location=file:/root/nacos/conf/ --logging.config=/root/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
,--.
,--.'|
,--,: : | Nacos 1.4.2
,`--.'`| ' : ,---. Running in stand alone mode, All function modules
| : : | | ' ,'\ .--.--. Port: 8848
: | \ | : ,--.--. ,---. / / | / / ' Pid: 10428
| : ' '; | / \ / \. ; ,. :| : /`./ Console: http://192.168.42.51:8848/nacos/index.html
' ' ;. ;.--. .-. | / / '' | |: :| : ;_
| | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io
' : | ; .' ," .--.; |' ; :__| : | `----. \
| | '`--' / / ,. |' | '.'|\ \ / / /`--' /
' : | ; : .' \ : : `----' '--'. /
; |.' | , .-./\ \ / `--'---'
'---' `--`---' `----'
2021-06-08 16:17:03,014 INFO Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7af41b' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-06-08 16:17:03,023 INFO Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-06-08 16:17:03,609 INFO Tomcat initialized with port(s): 8848 (http)
2021-06-08 16:17:04,184 INFO Root WebApplicationContext: initialization completed in 5552 ms
.......
浏览器上访问 http://192.168.42.51:8848/nacos/index.html ,输入默认的用户名密码 nacos/nacos,成功访问Naocs控制台,到此,我们的 nacos-server 搭建成功。
3. Nacos Naming Service 服务注册与发现 快速上手
Nacos Discovery用于服务注册与发现,功能类似于在前面的文章中我们介绍的Spring Cloud Eureka 和 Spring Cloud Zookeeper。
服务注册与发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于服务的动态扩缩容。
Nacos Discovery 可以帮助您将服务自动注册到 Nacos 服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery 也将服务实例自身的一些元数据信息-例如 host,port, 健康检查 URL,主页等内容注册到 Nacos。
角色 | 服务名称 | ip:port | 描述 |
---|---|---|---|
Nacos Server | 无 | 192.168.42.51:8848 | Nacos服务端,注册中心 |
Nacos Client | service-provider | 192.168.42.109:8070 192.168.42.109:8071 |
Nacos客户端,服务提供者 |
Nacos Client | service-consumer | 192.168.42.109:8080 | Nacos客户端,服务消费者 |
3.1 父工程添加Spring Cloud Alibaba的依赖管理
<!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
<dependencyManagement>
<dependencies>