服务生产者 | 学习笔记

简介: 快速学习服务生产者。

开发者学堂课程【Spring Cloud Alibaba Nacos 详解(下)服务生产者】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/725/detail/12934


服务生产者

 

内容介绍:

一、搭建 Nacos 服务端                

二、创建父工程

三、服务生产者

 

根据所说 Spring Cloud 服务协作流程图,首先需要搭建服务发现中心 Nacos Server,然后开发各个微服务,至少开发两个,一个是服务的生产方,一个是服务的消费方,最终完成服务 A 去调用服务 B。以上流程第一步为搭建 Nacos 的服务端。

 

一、搭建 Nacos 服务端

搭建 Nacos 的服务端具体的安装搭建过程在 Nacos 的配置管理部分已经讲过了,所以这里不再多说。

下面开始完成第二步,整个流程当中要把整个微服务创建起来,微服务有两个,一个是生产方,一个是消费方,生产方和消费方都是基于相同的依赖,为了管理依赖先建一个父工程。


二、创建父工程

为了规范依赖的版本,这里创建父工程,指定依赖的版本。首先,需要新建一个父工程。

 图片.png

这样就创建好了服务的工程,这个工程里需要加入一些依赖,依赖的一些版本的管理。

packaging>pom</packaging

把这几个依赖添进去之后刷新一下。

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencyManagement>

<dependencies>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-alibaba-dependencies<artifactId>

<version>2.1.0.RELEASE</version>

<type>pom</type>

<scope>import</scope>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactid>

<version>Greenwich.RELEASE</version>

<type>pom</type>

<scope>import</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-dependencies</artifactId>

<version>2.1.3.RELEASE</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId></plugin>

</plugins>

</build>

这样父工程就创建好了,接下来做服务的生产者和消费者,这里先做服务的生产者。

 

三、服务生产者

以下步骤演示了如何将一个服务生产者注册到 Nacos

1pom.xml 的配置

包括 Spring Cloud Feign 组件、Spring Cloud Alibaba Nacos

Discovery 组件以及 Spring boot web 相关组件依赖。

创建工程 quickstart- provider

Modules 中新建一个模块,选择 nacos-discovery

然后往下继续

图片.png

生产者的工程就完成了。

同理,可以创建消费者工程 quickstart-consumer

图片.png

这样就创建好了两个微服务工程。

生产者的 pom 文件需要引入一些依赖,就是生产者需要将自己注册到 nacos ,所以这里要引入

spring-cloud-starter-alibaba-nacos-discovery这个包,它的微

服务是基于 spring boot 开发,所以我们引入

spring-boot-starter-web 这个包,为什么是 web这个包呢?

因为现在所使用的、所开发的微服务是基于 spring cloud http 协议的微服务,所以我们采用 spring mvc 来暴露 http 服务。

刚才学习了 spring cloud 之间远程调用是通过 feign,所以这里要引入

spring-cloud-starter-openfeign 的包。

我们把依赖都加入到服务生产的工程中。

<dependency>

<groupId>com.alibaba.cloud</groupd>

<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.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactid></dependency>

</dependencies>

这样,生产者的依赖就加好了,加好之后创建它的配置文件。

2、application.yml 配置

一些关于 Nacos 基本的配置也必须在 application.yml (也可以是application.properties) 配置,如下所示:application.yml

它的配置文件我们创建一个 application

由于这里不需要用配置,我们先暂时不用 Nacos 的配置中心,所以这里不用在 boot strap 里来创建这些配置,在 application 里就可以了。

server:

port:56010 #启动端口

spring:

application:

name:quickstart-provider

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

logging:

level:

root:info

org.springframework:info

3、Provider (生产者)服务实现

@RestController

public class ProviderController{

private static final Logger LOG = LoggerFactory.getLogger

(ProviderController.class);

@GetMapping("/service")

public string service(){

LOG.info("provider invoke");

return "provider invoke";

}

}

为了让它生产服务,需要写一个 controller

controller 的包下面可以编写 controller。我们可以写一个简单的,比如说暴露 http get 请求的/service 服务,就可以写一个方法。

@RestController

public class ProviderController{

@GetMapping("/service")

public String service(){

return "provider invoke":

}

}

写好之后,也是可以加一些日志的。

@RestController

public class ProviderController{

private static final Logger LOG = LoggerFactory.getLogger (ProviderController.class);

@GetMapping("/service")

public String service(){

LOG.info("provider invoke");

return "provider invoke";

}

}

4、启动 Provider (生产者)

要运行这个 spring boot 的程序我们需要创建 spring boot 的启动类,这个启动类的关键点在于注解。

@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients

public class NacosProviderApp {

public static void main(String[] args){

SpringApplication.run(NacosProviderApp.class,args);

}

}

启动类完成之后,配置这里指定了 Nacos 的地址127.0.0.1:8848,服务名是 quickstart- provider

如果现在启动了,这个服务就启动起来了,并且它将自己注册到了 Nacos 的服务发现中心,打开 Nacos 服务列表,会发现有一个叫做quickstar-provider

 图片.png 

点开详情会发现它的端口就是56010

图片.png

这就是生产者的微服务,剩下的消费者的微服务可以参考这个过程,整个 Spring Cloud 的服务协作过程中的生产者微服务就创建完成。

相关文章
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1046 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1732 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
682 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
646 12
|
6天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
408 4