SpringCloudAlibaba之服务治理:Nacos如何实现微服务服务治理
前⽂我们学习了通⽤的微服务架构应包含哪些组件以及 Spring Cloud Alibaba ⽣态中对应的技术实现,其中整个架构体系最核⼼的组件是服务注册中⼼ Alibaba Nacos。本讲我们就对 Nacos 展开探讨,学习它的使⽤办法。在本讲我们会讲解三⽅⾯内容:
介绍 Nacos 注册中⼼的特性;
微服务如何在 Nacos 进⾏注册登记;
Nacos 注册中⼼的⼼跳机制与健康检查。
Nacos 注册中⼼的特性
我们以现实业务为例,某超市会员线上购物送等额积分,此积分在下次购物时可抵⽤现⾦,其中涉及订单服务、会员服务、积分服务等多个微服务模块。
在以往单实例情况下,服务间通常采⽤点对点通信,即采⽤ IP+端⼝+接⼝的形式直接调⽤。但考虑避免单点负载压⼒过⼤以及⾼可⽤的性能要求,通常会部署多实例节点保障系统的性能,但增加多实例后,调⽤⽅该如何选择哪个服务提供者进⾏处理呢?还有当服务提供者出现故障后,如何将后续请求转移到
其他可⽤实例上呢?⾯对这些问题,微服务架构必须要引⼊注册中⼼对所有服务实例统⼀注册管理、有组织地进⾏健康检查来保障服务的可⽤性。
在 Spring Cloud Alibaba ⽣态中,由 Nacos 中间件承担注册中⼼职责,需要独⽴部署。下⾯我们先来认识⼀下 Nacos。
⼀个更易于构建云原⽣应⽤的动态服务发现、配置管理和服务管理平台。
Nacos 具备以下职能:
服务发现及管理;
动态配置服务;
动态 DNS 服务。
下图是Nacos 的核⼼特征:
因为官⽹有完整的功能介绍,这⾥不再赘述。微服务注册中心有哪些
Nacos 的快速部署
在微服务架构中,Nacos 注册中⼼处于核⼼地位,通常我们会采⽤⾼性能服务器独⽴部署。下⾯我来演⽰ Nacos 的部署过程。
环境准备
Nacos 同时⽀持 Windows 与 Linux 系统。因⼤多数服务器会选择安装 Linux 操作系统,为了模拟真实环境,建议你搭建⼀个 CentOS 7/8 的虚拟机,我这⾥的服务器地址为:192.168.31.102。Nacos 采⽤ Java 进⾏开发,要求 JDK8+,如果 CentOS 系统中没有安装JDK,可使⽤下⾯流程进⾏基础环境准备。
利⽤ yum 命令安装 OpenJDK 8。
yum -y install java-1.8.0-openjdk-devel.x86_64
#安装成功后验证Java版本
java -version
Nacos 要求 JDK8 以上版本
*配置 JAVA_HOME 环境变量。
安装后 JDK 不要忘记设置 JAVA_HOME 环境变量,OpenJDK 默认安装在 /usr/lib/jvm/ 路径下,之后通过编辑 profile 设置
JAVA_HOME 环境变量。
[root@server-1 ~]# vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@server-1 ~]# source /etc/profile
最后要确认 JAVA_HOME 环境变量是否配置正确。
[root@server-1 ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
JDK安装后,正式进⼊ Nacos 的安装过程。
安装过程
第⼆步,上传 nacos-server-1.4. 到 CentOS 系统,对安装包解压缩。
root@server-1 local]#  tar -xvf nacos-server-1.4.
解压后 Nacos ⽬录结构如下。
bin:保存启⽤/关闭 Nacos Server 脚本;
conf:Nacos Server 配置⽬录;
data:Nacos 数据⽬录;
logs:存放⽇志⽬录;
target:Nacos Jar 包存放⽬录;
第三步,以单点⽅式启动 Nacos。
[root@server-1 local]# cd nacos/bin
[root@server-1 bin]# sh startup.sh -m standalone
启动⽇志如下:
nacos is starting with standalone
nacos is starting, you can check the /usr/local/nacos/nacos/logs/start.out
默认 Nacos 以后台模式启动,利⽤ tail 命令查看启动⽇志。可以看到 Nacos 默认端⼝为 8848,下⾯⽇志说明 Nacos 单机模式已启动成功。
[root@server-1 bin]# tail -f /usr/local/nacos/logs/start.out
2020-12-06 21:03:18,759 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos'
2020-12-06 21:03:18,766 INFO Nacos Log files: /usr/local/nacos/nacos/logs
2020-12-06 21:03:18,766 INFO Nacos Log files: /usr/loca/nacos/nacos/conf
2020-12-06 21:03:18,766 INFO Nacos Log files: /usr/local/nacos/nacos/data
2020-12-06 21:03:18,767 INFO Nacos started successfully in stand alone mode. use embedded storage
第四步,默认 CentOS 系统并没有对外开放 7848/8848 端⼝,需要设置防⽕墙对 7848/8848 端⼝放⾏。
其中,8848 端⼝是 Nacos 对客户端提供服务的端⼝,7848 是 Nacos 集通信端⼝,⽤于Nacos 集间进⾏选举,检测等。
[root@server-1 bin]# firewall-cmd --zone=public --add-port=8848/tcp --permanentsuccess[root@server-1 bin]# firewall-cmd --zone=public --add-port=7848/ tcp --permanentsuccess[root@server-1 bin]# firewall-cmd  --reloadsuccess
此时,Nacos 已单机部署完毕。
第五步,进⼊ Nacos 管理界⾯,打开浏览器,地址栏输⼊:
其中 192.168.31.102 就是 Nacos 服务器的IP地址,端⼝号 8848。
管理界⾯默认⽤户名与密码均为nacos,提交后进⼊⾸页。点击左侧菜单“服务管理->服务列表”,这个功能⽤于查看已注册微服务列表。
⽬前因为没有任何微服务注册,右侧服务列表是空的。那如何让微服务在 Nacos 中注册呢?下⼀⼩节咱们继续讲解。
微服务如何接⼊ Nacos
Spring Cloud Alibaba 作为 Spring Cloud ⼦项⽬,开发框架仍基于 SpringBoot,只是在构建项⽬时需要选择不同的 starter 接⼊注册中⼼,下⾯我们通过实操完成微服务与 Nacos 服务器的接⼊⼯作。
开发⼯具强烈推荐 IDEA Ultimate,Ultimate 内置 SpringBoot ⼯程向导,可以⾮常⽅便地实现 Spring Cloud 微服务的快速创建。
1. 创建新⼯程,⼯程类型选择 Spring Initializr。
下图是 SpringBoot ⼯程向导,右侧选中 Custom,写⼊阿⾥云地址start.aliyun,默认的
start.spring.io。 这⾥需要连接 spring 官⽅服务器,因为⽹络原因经常⽆法访问,所以采⽤国内阿⾥云镜像⽣成⼯
程初始代码。
Project Metadata ⾯板,设置 Maven Group 与 Artifact,⼀般 Artifact 即为微服务名称,约定俗成以 service 单词结尾。
2. 在向导后⾯的依赖页⾯,要接⼊ Nacos 有⼀项是必选的,请⼤家注意。
Spring Cloud Alibaba -> Nacos Service Discovery。
Nacos Service Discovery 是在当前SpringBoot⼯程内置 Nacos 客户端,在微服务应⽤启动时通过 Nacos 客户端向 Nacos 服务器发送注册信息。
3. ⼯程创建成功,打开 l ⽂件,确认 Maven 依赖 nacos-discovery,说明服务已内置 Nacos 客户端成功。
此外,我们需要在当前微服务增加 Spring-Web 依赖。因为微服务默认通过 RESTful API 对外暴露接⼝,增加 Spring-Web 会在应⽤中内嵌 Tomcat,使微服务具备 HTTP 响应能⼒。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
4. 在 application.properties 配置 Nacos 注册中⼼通信地址。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。