服务生产者 | 学习笔记

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

开发者学堂课程【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 的服务协作过程中的生产者微服务就创建完成。

相关文章
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
616 216
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
857 61
|
7天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1294 157
|
5天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
243 138
|
7天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
533 109