Alibaba微服务组件-Nacos注册中心-初始Nacos

目录

  • SpringCloud Alibaba微服务架构图
  • Nacos官方文档
  • 简介
    • 1、什么是Nacos
    • 2、Nacos的特性
  • 一、Nacos注册中心
      • 1.1 核心功能
    • 1.2 主流的注册中心
  • 三、Nacos Serevr部署
    • 3.1 下载源码编译
    • 3.2 安装
      • Linux版本安装
      • windows版本安装
  • 四、Nacos Client部署
    • 4.1 引入依赖

SpringCloud Alibaba微服务架构图

Alibaba微服务组件-Nacos注册中心-初始Nacos_第1张图片

Nacos官方文档

官方参考文档:https://nacos.io/zh-cn/docs/quick-start.html

简介

1、什么是Nacos

官方定义:一个更有利于构建云原生的应用的动态服务发现(Nacos Discovery)、服务配置(Nacos Config)和服务管理平台。
集【注册中心】+【配置中心】+【服务管理】平台

2、Nacos的特性

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态DNS服务
  • 服务及其元数据管理

一、Nacos注册中心

1.1 核心功能

Nacos Descovery
服务注册: Nacos Client 会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如IP地址,端口等信息。NacosServer接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。
服务心跳: 在服务注册后,Nacos会维护一个定时心跳来持续通知Nacos Server,说明服务时一直处于可用状态,防止被剔除。默认是5s发送一次心跳
服务同步: Nacos Server集群之间会相互同步服务实例,用来保证服务信息的一致性。leader,raft
服务发现: 服务消费者(Nacos Client) 再调用服务提供者提供的服务的时候,会先发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client的本地,同时会在Nacos Client本地开启一个定时拉去服务端的注册的表信息更新本地缓存
服务健康检查: nacos Server会开启一个定时任务来检查注册服务实例的健康状况,对于 超过15s 没有收到客户端心跳的实例会将他的 healthy属性 设置成 false(客户端发现时不会发现这个服务)如果这个实力 超过30s 没有收到客户端的心跳,直接删除该实例,被删除的实例如果恢复了心跳则恢复注册。

1.2 主流的注册中心

CAP C:一致性;A:可用性;P:分区容错性

大多数主流的注册中心都是实现了AP Nacos 支持CP 和AP的切换,你默认是AP

Alibaba微服务组件-Nacos注册中心-初始Nacos_第2张图片

三、Nacos Serevr部署

这里为了方便我在日后学习Springloud Alibaba2.2.5RELEASE版本
所以这里需要找到与之对应的版本组件,具体参考如下:

SpringCloud Alibaba Version Sentinal Version Nacos version RocketMQ Version Dubbo version Seata Version
2.2.5RELAEASE 1.8.0 1.4.1 4.4.0 2.7.8 1.3.0

3.1 下载源码编译

源码下载地址: https://github.com/alibaba/nacos/releases,自行选择源码或者编译过的安装包

3.2 安装

安装

Linux版本安装

1、安装jdk

[root@gitlab ~]# yum -y install java-1.8.0-openjdk*

2、安装nacos-启动命令(standalone代表着单机模式运行,非集群模式)

  • 解压:进入到Naocs的目录下
[root@gitlab ~]# tar zxf nacos-server-1.3.1.tar.gz 
[root@gitlab ~]# cd nacos/bin/
  • 单机启动Nacos
[root@gitlab bin]# sh startup.sh -m standalone

windows版本安装

  • 解压安装包
  • 进入到bin目录下,修改startup.cmd文件里的启动方式:Nacos默认的启动方式是集群(cluster)的方式,修改为的单机的方式(standalone)
    Alibaba微服务组件-Nacos注册中心-初始Nacos_第3张图片
  • 启动Nacos,双击startup.cmd 关闭Nacos 双击shutdown.cmd
    Alibaba微服务组件-Nacos注册中心-初始Nacos_第4张图片

启动完成后会输出一句话:
在这里插入图片描述

  • 登录Nacos的网址查看,Nacos管理平台的登录页面
    Alibaba微服务组件-Nacos注册中心-初始Nacos_第5张图片

默认的登录密码和账号:nacos

Alibaba微服务组件-Nacos注册中心-初始Nacos_第6张图片
也可以修好该默认的启动方式

Nacos默认端口为8848

四、Nacos Client部署

Alibaba微服务组件-Nacos注册中心-初始Nacos_第7张图片

4.1 引入依赖

1️⃣在Eclipse里面新建一个Maven的父级工程,以及搭建两个子服务的工程分别为:1、order订单2、stock库存:目录如下:

Alibaba微服务组件-Nacos注册中心-初始Nacos_第8张图片

父Pom文件中支持SpringCloud& SpringCloud Alibaba 引入依赖

<parent>
		<groupId>org.springframework.bootgroupId>
		<artifactId>spring-boot-starter-parentartifactId>
		<version>2.3.11.RELEASEversion>
		<relativePath /> 
	parent>


	<properties>
		<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
		<java.version>1.8java.version>
		<spring.cloud-version>Hoxton.SR8spring.cloud-version>
	properties>

	
	<modules>
		<module>DHC_SpringCloud_NacosConfigurationmodule>
		<module>DHC_SpringCloud_NacosOrdermodule>
		<module>DHC_SpringCloud_NacosStockmodule>
	modules>

	<dependencyManagement>
		<dependencies>
			
			<dependency>
				<groupId>org.springframework.cloudgroupId>
				<artifactId>spring-cloud-dependenciesartifactId>
				<version>${spring.cloud-version}version>
				<type>pomtype>
				<scope>importscope>
			dependency>

			
			<dependency>
				<groupId>com.alibaba.cloudgroupId>
				<artifactId>spring-cloud-alibaba-dependenciesartifactId>
				<version>2.2.5.RELEASEversion>
				<type>pomtype>
				<scope>importscope>
			dependency>

		dependencies>
	dependencyManagement>

	<dependencies>
		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starterartifactId>
		dependency>
		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
			<version>2.0.4.RELEASEversion>
		dependency>
		
		<dependency>
			<groupId>com.alibabagroupId>
			<artifactId>fastjsonartifactId>
			<version>1.2.47version>
		dependency>
	dependencies>

3️⃣在子模块中 添加相关的nacos依赖

<dependencies>
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
		dependency>
		
		<dependency>
			<groupId>com.alibaba.cloudgroupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
		dependency>
	dependencies>

4️⃣编写相应的Nacos连接参数配置以及SpringBoot服务的相关配置
Nacos-Order.yml

server:
  port: 8010 # 服务访问端口
# 应用程序名称 nacos会以改名曾在当下服务列表里注册服务
spring:
  application:
    name: order-service # 服务的名称
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 # nacos登陆的ip地址
      discovery:
        username: user # 登录nacos的管理页面的账号
        password: user # 登录密码
        namespace: public # 默认是public 也可以不配置

Nacos-Stock.yml

server:
  port: 8011 # 服务访问端口
# 应用程序名称 nacos会以改名曾在当下服务列表里注册服务
spring:
  application:
    name: stock-service # 服务的名称
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 # nacos登陆的ip地址
      discovery:
        username: user # 登录nacos的管理页面的账号
        password: user # 登录密码
        namespace: public # 默认是public 也可以不配置

5️⃣编写Nacos的服务端的相关服务以及服务消费者的相关接口调用操做
StockController

@RestController
@RequestMapping("/stock")
public class StockController {
	
	@RequestMapping("/reduct")
	public String name() {
		return "减扣库存";
	}
}

OrderController

@RestController
@RequestMapping("/order")
public class OrderController {

	@Autowired
	RestTemplate restTemplate;
	
	@RequestMapping("/add")
	public String add() {
		System.out.println("下单成功!");
		String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class); 
//		String msg = "你好 Nacos";
		return "hello world"+msg;
	}
}

在服务的调用者(消费者的启动类上注意有的版本需要写一个注解@@EnableDiscoveryClient

注意:在Nacos1.4版本以后,就不需要使用@EnableDiscoveryClient的注解

@SpringBootApplication
@EnableDiscoveryClient // nacos版本在1.4以后就可以不用添加 表示nacos启动客户端
public class OrderApplication {

	public static void main(String[] args) {
		SpringApplication.run(OrderApplication.class, args);
	}
	
	@Bean
	@LoadBalanced // Nacos所提供的负载均衡器的注解
	public RestTemplate restTemplate(RestTemplateBuilder builder) {
		RestTemplate restTemplate = builder.build();
		return restTemplate;
	}
}

6️⃣启动服务
Alibaba微服务组件-Nacos注册中心-初始Nacos_第9张图片
访问localhost:8010/order/add查看:
在这里插入图片描述
Alibaba微服务组件-Nacos注册中心-初始Nacos_第10张图片

你可能感兴趣的:(SpringCloud,Alibaba,微服务,spring,cloud,java)