微服务SpringCloud Alibaba ------(四)环境搭建并集成nacos-discovery

Spring Cloud Alibaba中文文档地址
https://github.com/alibaba/spring-cloud-alibaba/wiki

1. 本次使用版本

Spring Cloud Version Hoxton.SR9
Spring Cloud Alibaba Version 2.2.6.RELEASE
Spring Boot Version 2.3.2.RELEASE
版本关系见

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

2. 引入依赖

修改项目的pom.xml,原parent标签可以删除

<dependencyManagement>
		<dependencies>
			<!--Spring Cloud Alibaba的版本管理,通过dependencyManagement完成继承-->
			<dependency>
				<groupId>com.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>${spring.cloud.alibaba.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<!--Spring Boot的版本管理,通过dependencyManagement完成继承-->
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-parent</artifactId>
				<version>${spring.boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<!--Spring Cloud的版本管理,通过dependencyManagement完成继承-->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring.cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

另一种初始化方式

浏览器地址https://start.aliyun.com/bootstrap.html或在idea中通过https://start.aliyun.com来创建
idea中创建

3. nacos服务端

3.1. 什么是nacos

官方: 一个更易于构建云原生应用的动态服务发现(Nacos Discovery)、服务配置(Nacos Config)和服务管理平台。

3.2. nacos文档

官网

Spring Cloud Alibaba Nacos Discovery

Spring Cloud Alibaba Nacos Config

3.2. 注册中心演变及其设计思想

  1. 服务存在ip:port变更可能以及水平扩容后的地址管理。
    手动使用注册表配合nginx负载均衡来解决
  2. 服务宕机,nginx自身无服务监控(可搭配中间件实现),另一方面,大量的配置服务带来的配置文件,运维变得困难。
    使用注册中心

3.2.1. 注册中心设计思想

参考图片

通过Mysql存储服务信息

  1. 服务启动时调用注册接口,insert注册表
  2. 定时任务去注册中心获取服务列表,select注册表并缓存
  3. 根据上一步获取的列表来进行服务调用
  4. 服务定时发送心跳至注册中心
  5. 服务关闭时调用注销接口

3.2.2. 主流注册中心对比

在这里插入图片描述

3.2. 下载地址

nacos版本参考官方版本关系
https://github.com/alibaba/nacos/releases

3.3. 启动nacos

本次使用windos版本的nacos
nacos默认使用集群模式启动,单机模式在bin目录下使用下方命令

startup.cmd -m standalone

或者修改bin目录下修改startup.cmd

set MODE="standalone"

之后直接双击startup.cmd

3.3.1. 控制台地址

默认地址 http://192.168.0.102:8848
默认账号 nacos
默认密码 nacos

3.3.2. 通过mysql保存数据

  1. 修改conf目录下application.properties
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
  1. 创建数据库后执行conf目录下的nacos-mysql.sql

4.项目集成nacos-discovery

4.1. 服务注册发现

  1. 修改项目pom.xml添加依赖
<!--nacos服务发现依赖-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>${spring.cloud.alibaba.version}</version>
</dependency>
  1. 启动类添加@EnableDiscoveryClient注解
@SpringBootApplication
//Spring Cloud 原生注解 ,开启服务注册发现功能
@EnableDiscoveryClient
public class StockApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run( StockApplication.class, args );
    }

}
  1. application.yml中添加配置
spring:
  cloud:
    # 参考 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc#%E5%85%B3%E4%BA%8E-nacos-discovery-starter-%E6%9B%B4%E5%A4%9A%E7%9A%84%E9%85%8D%E7%BD%AE%E9%A1%B9%E4%BF%A1%E6%81%AF
    nacos:
      discovery:
        # Nacos Server 启动监听的ip地址和端口
        server-addr: 127.0.0.1:8848
        # 注册的服务名
        service: stock-service
        # 命名空间ID,Nacos通过不同的命名空间来区分不同的环境,进行数据隔离,服务消费时只能消费到对应命名空间下的服务。
        namespace: public
        # 是否为临时实例,如果不是临时实例那么宕机后实例不会被删除
#        ephemeral: true
        # 当要上阿里云时,阿里云上面的一个云账号名
#        access-key:
        # 当要上阿里云时,阿里云上面的一个云账号密码
#        secret-key:
        # 使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息
#        metadata:
        # 注册的端口,默认情况下不用配置,会自动探测,默认值-1
#        port: -1
        # 注册的IP地址,优先级最高
#        ip:
        # 当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
#        network-interface:
        # 取值范围 1 到 100,数值越大,权重越大,默认1
#        watch: 1
        # 日志文件名
#        log-name:
        # Nacos集群名称
#        cluster-name:
        # 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
#        endpoint:
        # 是否集成Ribbon,一般都设置成true即可
#        enabled: true
  1. 启动服务后在nacos控制台可以查看到该服务
    在这里插入图片描述

4.2. 通过服务名称调用服务以及负载均衡

在4.1.的基础上进行修改

  1. 修改启动类,添加代码
// ribbon客户端负载均衡注解
@LoadBalanced
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder){
    
    
    RestTemplate restTemplate = builder.build();
    return restTemplate;
}
  1. 调用服务的代码通过服务名称调用
String result = restTemplate.getForObject("http://服务名称/*/*", String.class);

可以通过启动多个服务实例后调用测试负载均衡

5. 代码

https://download.csdn.net/download/qq_42017523/44992268

猜你喜欢

转载自blog.csdn.net/qq_42017523/article/details/121409632