实现 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

相关文章
|
6月前
|
XML 数据库 Android开发
Service介绍
Service介绍
54 0
|
11月前
|
Kubernetes 负载均衡 容器
k8s(8)Service(服务)
Service(服务)
68 0
|
Kubernetes 负载均衡 网络协议
k8s service 总结
k8s service 总结
309 0
k8s service 总结
|
Dubbo Java 应用服务中间件
实现 Service2 | 学习笔记
快速学习实现 Service2。
167 0
实现 Service2 | 学习笔记
|
API 调度
从Service到WorkManager
关于Service,想必大家都太熟悉了,今天我们就再回顾下它的使用、概念、区别、变更历史等等。
492 0
从Service到WorkManager
|
Kubernetes 负载均衡 网络协议
k8s service
Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略——通常称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 实现的。
7078 0
理解Service
Service的start和bind有什么区别? Service分为两种工作状态,一种是启动状态,主要用于执行后台计算;另一种是绑定状态,主要用于其它组件和Service的交互。
996 0
|
监控 Unix 关系型数据库
|
监控 关系型数据库 Unix
|
网络协议