6

Spring cloud alibaba 架构在项目中的运用

 3 years ago
source link: http://www.hechunbo.com/index.php/archives/324.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Spring cloud alibaba 架构在项目中的运用

Spring Cloud alibaba架构

image-20201014095049440

总体系统架构

image-20201014095525820

对客户端还是暴露http协议 ,同时微服务之间交互采用dubo协议,以及应用 程序调用微服务也采用dubbo协议。迷补了微服务之间采用http协议性能问题。

每一层都把自己注册到nacos的服务配置中心。

nacos集服务管理和配置于一身,

image-20201014100956297

工程结构说明

注意:应用程序1 对外暴露的是http接口, service1,Service2对外暴露的是doubbo协议接口。 为了方便 调用 ,各service会包含一个接口和接口实现。

image-20201014101037382
image-20201014101312201
image-20201014101403571
image-20201014101437264

创建父工程

创建父工程nacos-micro-service. 继承nacos-discovery,

image-20201014101601553
创建应用层application1

继承nacos-micro-service

image-20201014101742479
image-20201014101930367
创建service1
image-20201014102054320

在下一步要变更下位置 content root

image-20201014102128222
image-20201014102205297

继承nacos-micro-service

image-20201014102305182
image-20201014102327485
创建Service1下面的api

父工程选service1

image-20201014102530381
image-20201014102549678
创建service1下面的实现

父工程选service1

image-20201014102656701
image-20201014102726493
整体工程结构
image-20201014102919579

应用层实现

application应用层,只需要编写controller对外暴露http接口就可以。

引用nacos配置管理包和服务发现包,另外主要使用spring mvc来开发controller ,基于http的接口,所以要使用spring-boot-starter-web 这个包。

所以在application中的pom.xml引用用这些依赖。

image-20201014103126349
编写controller
image-20201014103424729

因为应用程序,同时要调用微服务,所以在这里也需要对服务进行注入。 等service接口写完以后,再注入。

image-20201014103625511
编写应用程序application的配置

定义bootstrap.yml

image-20201014103811964
nacos中的配置新加

id是name.yaml -图片写错

group:config下的group.

namcespace:各环境id, 这里有的是开发环境 。

image-20201014104119974
增加启动类
image-20201014104325796
当前应用程序结构
image-20201014104425797
启动应用程序
image-20201014104511716

服务层实现

基于dubbo

定义api接口

创建一个包,并定义一个接口

包名:com.microservice.service1.api

新建接口:ConsumerService

image-20201014104830804

要实现services1 api

要先引用service api,先引用service api的引用

引用spring-cloud-starter-dubbo,为什么要引用这个呢。因为我们最后要把service实现暴露为dubbo服务接口。

image-20201014172119057
开发接口实现

先建立一个包。

要引用一个duobo的注解, 表示将来的方法 暴露为dubbo接口。

image-20201014172609845

dubbo:base-package表示包下有dubbo注解的。使用的是dubbo协议,协议也需要有端口。

一个是http端口,一个是dubbo端口。

可以指定多个协议 ,

image-20201014172812025
image-20201014172837300

新建一个启动类Servoce1Bootstrap

image-20201015135927217
实现类增加dubbo注解

把接口统一写在api接口,以后只要依赖 这个jar包就可以。

实现类统一写在service1的实现工程,最后要暴露给dubbo接口,要加一个dubbo注解 。

查看Nacos,
查看nacos中service1,详情中可以看到dubbo的端口。
image-20201015140507195

1.duobo

只是服务治理和rpc实现方案。

spring cloud整合了较多的netflix 好多项目 , 是一套标准的实现 。

nacos是服务发现中心和配置中心, 可以让微服务像dubbo进行rpc一样调用 。

网关:对请求的过滤和拦截。

debug 设置为false, 可以减少日志输出。

image-20201014094537519

本文参考腾讯课堂视频记录相关内容

https://ke.qq.com/course/466125?taid=4158992926842061


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK