# Spring Cloud Alibaba Nacos_配置中心与服务发现(六)--综合架构实战(1)
Spring Cloud Alibaba Nacos_配置中心与服务发现(六)–综合架构实战(1)
一、Nacos 服务发现-Spring Cloud Alibaba 综合架构实战-总体架构介绍
1、spring cloud 是一个较为全面的微服务框架集。
spring cloud 集成了如服务注册发现、配置中心、消息总线、负载均衡、断路器、API 网关等功能实现。
2、阿里巴巴的 Dubbo 只是服务治理与 RPC 实现方案。
3、传统的 spring cloud 应用,使用 Ribbon 或 Feign 在微服务之间协作。
Feign 是基于 Http Restful 的调用,在高并发下的性能不够理想。
4、spring cloud alibaba 集成 Nacos 与 spring cloud 应用,它的组件说明:
1)API 网关:系统统一入口,屏蔽架构内部结构,统一安全拦截,采用 Zuul 实现。
2)application-1 :应用1,模拟应用,提供 http 接口服务。
3)service-1 :微服务1,模拟微服务,提供 dubbo 接口服务。
4)service-2 :微服务2,模拟微服务,提供 dubbo 接口服务。
5、spring cloud alibaba 调用流程:
所有访问系统的请求,都要经过网关,网关转发 Http 请求至 application-1
application-1 使用 dubbo 调用 service-1 完成自身业务,而后 service-1 调用 service-2 完成自身业务。至此,完成所有组件贯穿。

二、Nacos 服务发现-Spring Cloud Alibaba 综合架构实战-创建工程结构
1、工程结构:采用 maven 工程
1)nacos-micro-service 整体父工程
2)api-gateway API 网关,端口:56010
3)application-1 应用1,端口:56020
4)service-1 服务1父工程
5)service-1-api 服务1 API
6)service-1-server 服务1 实现,端口:56030
7)service-2 服务2父工程
8)service-2-api 服务2 API
9)service-2-server 服务2 实现,端口:56040
2、创建父工程
创建 artifactId 名为 nacos-micro-service 的 maven 工程,此父工程继承 nacos-discovery 父工程,间接指定了 spring boot, spring cloud 以及 spring-cloud-alibaba 的依赖版本。
--> 右键 nacos_discovery 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( nacos-micro-service )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( nacos-micro-service )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service )
--> Finish
3、在父工程 nacos-micro-service 下,创建各个子工程(子模块)
1)创建 api-gateway 子工程(子模块)API 网关,端口:56010
--> 右键 nacos-micro-service 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( api-gateway )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( api-gateway )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\ api-gateway)
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\api-gateway )
--> Finish
2)创建 application-1 子工程(子模块)应用1,端口:56020
--> 右键 nacos-micro-service 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( application-1 )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( application-1 )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\application-1 )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\application-1 )
--> Finish
3)创建 service-1 子工程(子模块)服务1父工程
--> 右键 nacos-micro-service 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( service-1 )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service-1 )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1 )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1 )
--> Finish
4)创建 service-2 子工程(子模块)服务2父工程
--> 右键 nacos-micro-service 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( service-2 )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service-2 )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2 )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2 )
--> Finish
4、在服务1父工程 service-1 子工程(子模块)再创建二级子工程(子模块)
1)创建 service-1-api 子工程(子模块) 服务1 API
--> 右键 service-1 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( service-1-api )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service-1-api )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1\service-1-api )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1\service-1-api )
--> Finish
2)创建 service-1-server 子工程(子模块) 服务1 实现,端口:56030
--> 右键 service-1 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( service-1-server )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service-1-server )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1\service-1-server )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1\service-1-server )
--> Finish
5、在服务2父工程 service-2 子工程(子模块)再创建二级子工程(子模块)
1)创建 service-2-api 子工程(子模块) 服务2 API
--> 右键 service-2 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( service-2-api )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service-2-api )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-api )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-api )
--> Finish
2)创建 service-2-server 子工程(子模块) 服务2 实现,端口:56040
--> 右键 service-2 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( service-2-server )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service-2-server )
Content root : ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-server )
Module file location: ( C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-server )
--> Finish

三、Nacos 服务发现-Spring Cloud Alibaba 综合架构实战-实现 application1 子模块。
1、在 application-1 子工程(子模块)应用1 中的 pom.xml 文件中,导入依赖项。
application1 属于 应用层,提供 http 接口服务。所以需要导入以下包。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacos-micro-service</artifactId>
<groupId>djh.it</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>application-1</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
<!-- C:\java-test\idea2019\nacos_discovery\nacos-micro-service\application-1\pom.xml -->
**2、在 application-1 子工程(子模块)中,实现 application-1 功能,
创建 Controller 类 Application1Controller.java**
/**
* C:\java-test\idea2019\nacos_discovery\nacos-micro-service\application-1\src\main\java\djh\it\microservice\application1\controller\Application1Controller.java
*
* 2024-4-12 application-1 子工程(子模块)创建 Controller 类 Application1Controller.java
* application1 属于 应用层,提供 http 接口服务。
*/
package djh.it.microservice.application1.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Application1Controller {
// 需要注入 service(基于 dubbo 协议)
@GetMapping("/service")
public String service(){
return "test";
}
}
**3、在 application-1 子工程(子模块)中,实现 application-1 配置功能,
创建 bootstrap.yml 配置文件,(纯粹的 dubbo 服务消费者,配置起来更简单)**
##C:\java-test\idea2019\nacos_discovery\nacos-micro-service\application-1\src\main\resources\bootstrap.yml
server:
port: 56020 # 启动端口 命令行注入
servlet:
context-path: /application1
spring:
application:
name: application1 #spring应用名, # 注意 FeignClient 不支持名字带下划线
main:
allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。
cloud:
nacos:
config: # 表示配置管理
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yaml # 配置文件后缀名。
namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960 # dev开发环境(nacos-1.1.3)。
group: NACOS_MICROSERVICE_GROUP # xx业务组。
discovery: # 表示服务发现
server-addr: 127.0.0.1:8848 # nacos服务器地址
namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960 # dev开发环境(nacos-1.1.3)
cluster-name: DEFAULT
**4、浏览器地址栏输入:http://127.0.0.1:8848/nacos
登录 nacos 服务,在配置列表的,dev 开发环境,创建新配置**
Data ID : application1.yaml
Group : NACOS_MICROSERVICE_GROUP
配置格式 :YAML
配置内容 :test

5、在 application-1 子工程(子模块)中,创建启动类 Application1Bootstrap.java
/**
* C:\java-test\idea2019\nacos_discovery\nacos-micro-service\application-1\src\main\java\djh\it\microservice\application1\Application1Bootstrap.java
*
* 2024-4-12 在 application-1 子工程(子模块)中,创建启动类 Application1Bootstrap.java
*/
package djh.it.microservice.application1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class Application1Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Application1Bootstrap.class, args);
}
}
6、浏览器地址栏输入:http://localhost:56020/application1/service
输出结果:test


上一节关联链接请点击
# Spring Cloud Alibaba Nacos_配置中心与服务发现(五)-- Nacos 服务发现 – 快速入门(3)
更多推荐


所有评论(0)