Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(一)实现 application1 子模块

Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(一)实现 application1 子模块

一、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.ymlserver:port: 56020  # 启动端口 命令行注入servlet:context-path: /application1spring: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

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/309541.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将Ubuntu18.04默认的python3.6升级到python3.8

1、查看现有的 python3 版本 python3 --version 2、安装 python3.8 sudo apt install python3.8 3、将 python3.6 和 3.8 添加到 update-alternatives sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --insta…

【MySQL】事务篇

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 目录 本系列专栏 1. 什么是事务 2. 事务的特征 原子性&#xff08;Atomicity&#xff09; 一致性&#xff08;Consistency&#xff09; 隔离性&…

AI术语大全:AGI、LLM、GenAI、GPT、ChatGPT和AIGC是什么意思?

讲动人的故事,写懂人的代码 自2022年底ChatGPT在全球AI界闪亮登场以后,你是不是经常听到AGI、LLM、GenAI、GPT和AIGC这几个词,但总是分不清它们到底是什么意思? 今天,我就用简单的话来给你讲讲这些词到底是什么意思。 AI,人工智能(Artificial Intelligence),就是让机…

【uniapp】省市区下拉列表组件

1. 效果图 2. 组件完整代码 <template><view class="custom-area-picker"><view

【C 数据结构】双向链表

文章目录 【 1. 基本原理 】【 2. 双向链表的 创建 】实例 - 输出双向链表 【 3. 双向链表 添加节点 】【 4. 双向链表 删除节点 】【 5. 双向链表查找节点 】【 7. 双向链表更改节点 】【 8. 实例 - 双向链表的 增删查改 】 【 1. 基本原理 】 表中各节点中都只包含一个指针&…

在线课程平台LearnDash评测 – 最佳 WordPress LMS插件

在我的LearnDash评测中&#xff0c;我探索了流行的 WordPress LMS 插件&#xff0c;该插件以其用户友好的拖放课程构建器而闻名。我深入研究了各种功能&#xff0c;包括课程创建、测验、作业、滴灌内容、焦点模式、报告、分析和管理工具。 我的评测还讨论了套餐和定价选项&…

链表创建的陷阱与细节

链表是线性表的一种&#xff0c;它在逻辑结构上是连续的&#xff0c;在物理结构上是非连续的。 也就是说链表在物理空间上是独立的&#xff0c;可能是东一块西一块的。如下顺序表和链表在内存空间上的对比&#xff1a; 而链表的每一块空间是如何产生联系实现在逻辑结构上是连续…

欢乐钓鱼大师秒杀源码

gg修改器设置里面单选a内存然后去试试e类型搜索鱼竿的拉杆速度然后点修改点很多增加1然后游戏返回在进去看鱼竿拉速然后在修改器的里面找到拉速一样的数值其他恢复全移除不恢复移除会闪退然后点开保留下来的拉速数值点转到会有一堆数值你得找里面找到鱼竿的伤害距离等数值就可以…

Linux内核常见的丢包场景有哪些

目录 摘要 1 收发包处理流程 2 硬件网卡相关 2.1 ring buffer满 2.2 利用 ntuple 保证关键业务 3 arp丢包 3.1 neighbor table overflow 3.2 unresolved drops 4 conntrack丢包&#xff1a;nf_conntrack: table full 5 udp接收buffer满 6 丢包定位 6.1 dropwatch 查看丢包 6.2…

线程池与工厂模式

线程池 如果我们需要频繁的创建销毁线程,此时创建销毁线程的成本,就不能忽视了.因此就可以使用线程池.即,提前搞好一波线程,后续需要使用线程就直接从池子里拿一个即可.当线程不再使用,就放回池子里. 本来,是需要创建线程/销毁线程.现在是从池子里获取到现成的线程,并且把线程…

BackTrader 中文文档(十)

原文&#xff1a;www.backtrader.com/ 用户自定义佣金 原文&#xff1a;www.backtrader.com/docu/user-defined-commissions/commission-schemes-subclassing/ 重塑 CommInfo 对象到实际形式的最重要部分涉及&#xff1a; 保留原始的 CommissionInfo 类和行为 为轻松创建用户定…

前端三剑客 —— JavaScript (第六节)

目录 内容回顾 BOM编程 DOM编程* document对象 document对象的属性 document对象的方法 DOM对象节点 操作DOM对象内容 操作DOM对象的属性 --- DOM对象.属性名称 --- DOM对象[属性名称] --- 调用系统API &#xff08;Application Program interface&#xff09;&#…

行业模板|DataEase批发零售大屏模板推荐

DataEase开源数据可视化分析平台于2022年6月发布模板市场&#xff08;https://templates-de.fit2cloud.com&#xff09;&#xff0c;并于2024年1月新增适用于DataEase v2版本的模板分类。模板市场旨在为DataEase用户提供专业、美观、拿来即用的大屏模板&#xff0c;方便用户根据…

2024 年江苏省职业院校技能大赛“区块链技术应用” 赛项赛卷(样卷)运维题解析一

运维题 环境: ubuntu20 fisco 2.8.0 前言 准备两台机子,并且可以能相互pin通 192.168.19.133 [M1-A] 192.168.19.137 [M2-B] 子任务 1-2-1: 搭建区块链系统并验证 基于给定服务器环境以及软件,搭建一条双机 1 机构 8 节点 1 群组的区块 链系统(默认端口开始[30300,2020…

最优算法100例之43-包含min函数的栈

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数,在该栈中,调用min,push及pop的时间复杂…

idea 中运行spring boot 项目报 Command line is too long的解决办法。

Command line is too long 在这里选择edit configures 选择shrten command line , 选择 jar manifest 运行即可。

5G网络开通与调测ipv4

要求如下&#xff1a; 1. 勘站规划 1. 【重】首先观察NR频点&#xff0c;完成设备选型 2645--选择N41 3455--选择N78 4725--选择N79 设备选型如下&#xff1a;观察AAU的通道数&#xff0c;最大发射功率&#xff1b;选择N41的选型频段也要选41 2. …

04—常用方法和正则表达式

一、字符串 1.length 属性返回字符串的长度(字符数)。 2.在字符串中查找字符串 indexOf() 字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置 如果没找到对应的字符函数返回-1 lastIndexOf() 方法在字符串末尾开始查找字符串出现的位置。 3.replace() 方…

WordPress 图片压缩插件:Compress JPEG PNG images 使用方法

插件介绍 Compress JPEG & PNG images是一款非常好用的图片压缩插件:&#xff0c;非常值得大家安装使用&#xff1b;特别是图片类型网站。其实我们很多服务器磁盘空间是不在乎多那么几十 MB 大小的&#xff0c;但是压缩了图片能提升网站速度&#xff0c;节省宽带&#xff…

计算机本科毕业,「就业」还是「读研」?

如果本科不错能找到较好的工作&#xff0c;建议直接工作&#xff0c;否则可以选择读研。 如果你本科毕业于一所顶尖学府&#xff0c;且技术实力雄厚&#xff0c;那么直接就业可能更为明智&#xff1b;对比而言读研可以为你提供更多的时间和机会去提升自己&#xff0c;尤其是在…