实现 Service1 | 学习笔记

简介: 快速学习实现 Service1.

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

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


实现 Service1

 

内容介绍:

一、  定义 service-1-api

二、  实现 service-1-server

 

按照下图流程,Application-1做完之后要实现 Service-1Service-1写完之后就可以实现 Application-1调用 Service-1

实现 Service-1是基于 dobbo 协议。

 

图片.png


 

一、定义 service-1-api

为了方便其它服务调用 dubbo 服务,专门定义 api 工程,此工程将作为 jar 被其它工程依赖。

定义 service-1-api 工程,pom.xml 如下:

<parent>

<artifactId>Service1</ artifactId>

<groupId>com.itheima.nacos</groupId>

<version>1.0-SNAPSHOT</version>

</parent>

<modelVersion>4.0.0< / modelVersion>

<artifactId>service-1-api</ artifaId>

定义服务接口︰

package com.itheima.microservice.service1.api;

public interface ConsumerService {

public String service();

}

我们来创建 apiapi 里面要有 interface,我们要让 interface 对外提供一个接口service,但它只是一个接口,它没有实现,如果要实现就需要我们在 service-1-server 里实现

 

二、  实现 service-1-server

1.初始化 service-1-server Maven 工程

实现 service-1-server 需要引入 service-1-api

<dependency>

</groupld>com.itheima.nacos</groupId>

<artifactId>service-1-api</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>

还要引入 nacos-confignacos-discovery 以及

Spring-cloud-starter-dubbo

<dependency>

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

<artifactId>spring-cloud-starter-alibaba-nacos-config</art

ifactId>

</ dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacosdiscovery</artifactId>

</dependency>

<dependency>

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

<artifactId>spring-cloud-starter-dubbo</artifactId>

引入 Spring-cloud-starter-dubbo 是因为我们最终将 service1 实现暴露为 dubbo 服务结构

2.实现 Dubbo 服务

引入刷新之后,就可以在 java 里开发接口实现,开发接口实现需要先建一个包,建完之后要写实现类,叫 ConsumerServiceImpl

还要引入 @org.apache.dubbo.config.annotation.Service 标记 dubbo 服务

@org.apache.dubbo.config.annotation.Service //注解标记此类的方法暴露为dubbo接口

Public class ConsumerServiceIapl implements ConsumerServic

e {

// dubbo接口实现内容

public String service()  {

return "Consumer invoke " ;

}

3.配置 Dubbo 服务

Service2 作为 Dubbo 服务消费方配置与服务提供方类似,注意,service1 不仅使消费方,同时还是服务提供方。

server:

port: ${port : 56030} #启动端口 命令行注入

spring:

application:

name: service1

main:

allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4

cluster-name: DEFAULT

config:

server-addr: 127.0.0.1:8848 #配置中心地址

file-extension: yaml

namespacec67e497-a698-4d6d-9bb1-cfac5f5b51c4 #开发环境

groupNACOS_MICROSERVICE_GROUP # xx业务组

dubbo:

scan :

# dubbo 服务扫描基准包

base-packages : com.itheima.microservice

protocol:

# dubbo协议

name: dubbo

# dubbo协议端口

port: ${dubbo_port : 20881}

registry:

address: nacos//127.0.0.1:8848

application:

qos-enable: false  #dubbo运维服多是否开启

consumer:

checkfalse  #启动时就否检查依赖的服务

这个服务对外暴露的服务端口有两个,一个是 dubbo 端口,一个是 http 的端口。

以上 YAML 内容,dubbo 开头的为 dubbo 服务的配置:

dubbo.scan.base-packages:指定 Dubbo 服务实现类的扫描基准包,将

@org.apache.dubbo.config.annotation.Service 注解标注的 service 暴露为 dubbo服务。

dubbo. protocol : Dubbo 服务暴露的协议配置,其中子属性 [name 为协议名称,por tdubbo 协议端口可以指定多协议,如:dubbo.protocol.rmi.port=1099

dubbo.registry : Dubbo 服务注册中心配置,其中子属性 [address 的值"nacos://127.0.0.1:8848",说明dubbo服务注册到nacos

相当于原生 dubboxm l配置中的 <dabbo:registry address="10.20.153.10:9090”/>

上半部分为 SpringCloud 的相关配置︰

spring.application.name : Spring 应用名称,用于 Spring Cloud 服务注册和发现。

该值在 Dubbo Spring Cloud 加持下被视作 dubbo.application

.name,因此,无需再显示地配置 dubbo. application.name

spring.cloud.nacos.discovery : Naco s服务发现与注册配置,其中子属性 server-addr指定 Nacos 服务器主机和端口

•••spring .cloud.nacos.config : Nacos 配置中心配置,其中子属性 server-addr指定Nacos服务器主机和端口

4.启动服务消费方应用

启动 service1 需要建启动类

@SpringBootApplication@EnableDiscoveryClient

public class service1Bootstrap{

public static void main( String[] args) {

SpringApplication.run(Service1Bootstrap.class,args);

}

}

Service1Bootstrap 启动后,应用 service1 将出现在 Nacos 控制台界面。

Service1 的流程是:首先是将接口统一写在api工程,其次 api 的实现类是统一写在service-1-server 工程里,最终要暴露为dubbo需要一个 service 注解,配置文件包括cloud配置和 dubbo 配置

启动成功与否除了看控制台报不报错还要看 nacos

相关文章
|
IDE Java 开发工具
@Builder这个注解的作用
@Builder这个注解的作用
|
存储 数据安全/隐私保护 Docker
consul集群部署
consul集群部署
494 0
|
JSON 前端开发 Java
【十八】springboot实现自定义全局异常处理
【十八】springboot实现自定义全局异常处理
679 2
【十八】springboot实现自定义全局异常处理
|
Java 开发者 UED
Spring Boot的全局异常处理机制
【2月更文挑战第13天】
1294 0
|
Java 关系型数据库 MySQL
Mac平台maven配置及idea中使用maven
Mac平台maven配置及idea中使用maven
3307 0
Mac平台maven配置及idea中使用maven
|
机器学习/深度学习 算法 计算机视觉
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
本文是目标检测系列文章——YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣。
55364 0
|
SQL Java 数据库
Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战(上)
Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战(上)
|
5月前
|
JSON Java 数据格式
Spring Boot中的全局异常处理
本文介绍了Spring Boot项目中如何实现全局异常处理。通过@ControllerAdvice和@ExceptionHandler统一捕获系统异常与自定义业务异常,结合统一JSON返回结构,避免代码耦合,提升可维护性。同时利用枚举管理异常码,实现异常信息的集中管理和友好提示,适用于前后端分离及微服务架构,保障接口返回一致性,降低维护成本。
|
存储 缓存 算法
如何提高二叉树遍历算法的效率?
选择合适的遍历算法,如按层次遍历树时使用广度优先搜索(BFS),中序遍历二叉搜索树以获得有序序列。优化数据结构,如使用线索二叉树减少空指针判断,自定义节点类增加辅助信息。利用递归与非递归的特点,避免栈溢出问题。多线程并行遍历提高速度,注意线程安全。缓存中间结果,避免重复计算。预先计算并存储信息,提高遍历效率。综合运用这些方法,提高二叉树遍历算法的效率。
468 5
|
安全 Linux 程序员
入职必会-开发环境搭建34-FinalShell下载和安装
在企业开发中,Linux服务器一般都是在远程的机房中,我们不可能坐在机房里面操作服务器上的Linux系统,所以在学习Linux之前我们需要远程连接Linux系统。工作中一般使用SSH协议远程连接Linux。
10945 1
入职必会-开发环境搭建34-FinalShell下载和安装

热门文章

最新文章