实现 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这个注解的作用
527 0
|
存储 数据安全/隐私保护 Docker
consul集群部署
consul集群部署
366 0
ly~
|
存储 安全 前端开发
php文件管理系统
PHP 文件管理系统是基于 PHP 开发的,用于管理文件和文件夹的应用。它支持文件上传、下载、浏览、搜索、编辑和删除,并提供权限管理和安全防护功能。适用于企业内部、网站和个人文件管理,确保文件的安全性、保密性和高效共享。
ly~
348 9
|
SQL XML Java
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
4376 0
|
Docker Windows 容器
手把手教您在 Windows Server 2019 上使用 Docker
现在,您可以直接用 Windows Server 来运行“纯”Docker 容器,其中所有的容器进程都可以直接在主机操作系统上运行。
26335 1
|
存储 Kubernetes 调度
Kubernetes Pod深度解析:构建可靠微服务的秘密武器(上)
本文旨在全面而深入地探讨Kubernetes(K8s)中的Pod概念,为读者提供对其核心特性和应用场景的深入理解。Pod作为Kubernetes的最小部署单元,承载着容器化应用的核心功能,是构建云原生应用的重要基石。
|
监控 测试技术 数据库
探索微服务架构下的系统调优实践
【5月更文挑战第27天】在当今软件开发领域,微服务架构因其灵活性、可扩展性而受到青睐。然而,随之而来的是复杂性增加和性能调优的挑战。本文将深入探讨在微服务环境中进行系统调优的策略与实践,通过分析真实案例,揭示优化过程中的关键步骤和考虑因素,为追求高性能微服务系统的开发者提供参考。
162 1
|
Cloud Native Java Nacos
Nacos 1.4.1核心功能组件及使用入门
以上步骤提供了 Nacos 1.4.1 的基本使用概览,具体的配置和使用可能根据你的环境和需求有所不同。
471 6
|
开发框架 分布式计算 负载均衡
SpringBoot整合Dubbo+Zookeeper
SpringBoot整合Dubbo+Zookeeper
956 0
SpringBoot整合Dubbo+Zookeeper
|
机器学习/深度学习 计算机视觉 Python
使用Python改变图像颜色的实用指南
使用Python改变图像颜色的实用指南
269 1