springboot整合nacos_SpringCloud微服务:基于Nacos组件,
整合。。。
⼀、基础组件简介
1、Dubbo框架
Dubbo服务化治理的核⼼框架,之前⼏年在国内被⼴泛使⽤,后续由于微服务的架构的崛起,更多的公司转向微服务下成熟的技术栈,但是Dubbo本⾝确实是⾮常优秀的框架。
常见的应⽤迭代和升级的过程基本如下:
当应⽤访问量逐渐增⼤,单⼀应⽤增加机器带来的加速度越来越⼩,提升效率的⽅法之⼀是将应⽤拆成互不相⼲的⼏个应⽤,以提升效率。此时,⽤于加速前端页⾯开发的Web框架(MVC)是关键。
随着垂直应⽤越来越多,应⽤之间交互不可避免,将核⼼业务抽取出来,作为独⽴的服务,逐渐形成稳定的服务中⼼,使前端应⽤能更快速的响应多变的市场需求。此时,⽤于提⾼业务复⽤及整合的分布式服务框架(RPC)是关键。
伴随业务发展,服务越来越多,容量的评估,⼩服务资源的浪费等问题逐渐显现,此时需增加⼀个调度中⼼基于访问压⼒实时管理集容量,提⾼集利⽤率。此时,⽤于提⾼机器利⽤率的资源调度和治理中⼼(SOA)是关键。
⽽Dubbo框架的核⼼能⼒:⾯向接⼝的远程⽅法调⽤,智能容错和负载均衡,以及服务⾃动注册和发现。正好可以解决上述业务发展的痛点。
2、微服务框架
SpringCloud是⼀系列框架的有序集合。它利⽤SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤SpringBoot的开发风格做到⼀键启动和部署。
后续AliCloud微服务系列组件也不断被使⽤起来,其中最基础的组件Nacos注册中⼼,更是直接⽀持Dubbo框架,这样Cloud和Dubbo两⼤框架就成功的整合在了⼀起。
3、Nacos注册中⼼
Nacos注册中⼼主要⽤于发现、配置、管理微服务。并且提供⼀组简单易⽤的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理。
如上图Nacos⽆缝⽀持⼀些主流的开源⽣态框架,例如SprinCloud,Dubbo两⼤框架。在AliCloud的系列组件中,还包含了
Seata,RocketMQ,Sentinel等⼀系列组件。
⼆、服务结构图解
SpringCloud和Dubbo整合的结构⽰意图如下,使⽤的Nacos中⼼:
Provider提供⽅
Provider提供⽅:提供核⼼的Dubbo服务接⼝;
Consumer消费⽅:消费注册的Dubbo服务接⼝;
Consumer消费⽅
Nacos注册中⼼:配置、发现和管理Dubbo服务;
Nacos注册中⼼
通过上述流程不难发现,不管从架构上看,还是⽤法过程,基于核⼼Dubbo框架和微服务原⽣框架是⼗分相似,上述流程也遵循这样⼀个规则:dubbo-server连接⾃⼰的业务库DB,并通过dubbo-facade中接⼝向外提供服务,如果不同dubbo-server需要访问其他服务接⼝,也必须要通过其他服务的facade接⼝操作,dubbo-client作为接⼝服务消费端,可以通过facade接⼝访问很多业务模块的服务,整体架构层次⼗分明了。
三、编码案例实现
1、案例结构和依赖
案例结构
包含三个模块:server、facade、client。
核⼼依赖
<dependency>
2、服务端配置
配置⽂件
主要是Nacos注册中⼼和Dubbo两个核⼼配置。
server:
port: 9010
spring:
application:
name: node10-dubbo-server
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
file-extension: yaml
# Dubbo服务配置
dubbo:
scan:
base-packages: com.cloud.dubbo.service
protocol:
name: dubbo
port: -1
registry:
address: spring-cloud://localhost
服务接⼝实现
微服务注册中心有哪些这⾥DubboService即dubbo-facade包中对外提供的接⼝。
import
注意:@Service是Dubbo框架中的注解,不是Spring框架的注解。
3、消费端配置
配置⽂件
主要配置是链接Nacos注册中⼼,订阅注册中⼼的node10-dubbo-server服务。
server:
port: 9011
spring:
application:
name: node10-dubbo-client
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
# Dubbo服务配置
dubbo:
protocol:
name: dubbo
port: -1
registry:
address: spring-cloud://localhost
cloud:
subscribed-services: node10-dubbo-server
Dubbo接⼝调⽤
同样,这⾥DubboService即dubbo-facade包中对外提供的接⼝。
import
注意:@Reference也是Dubbo框架中的注解。
如上流程开发完成,先后启动dubbo-server服务和dubbo-client服务,查看注册中⼼服务列表:
通过上述getInfo接⼝请求测试,即可看到完整的案例效果。
四、技术选型
很少有选择SpringCloud+Dubbo框架的架构模式,这⾥简单说明⼀下为何,因为这两个框架都是相当复杂的,学习成本是⼀个⽅⾯,风险是最主要原因,这两个框架同时使⽤,就意味要⾯对和解决两个框架下产⽣的问题,在任何⼀个框架都可以稳定的解决业务问题时,完全没必要花⾥胡哨。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论