
从零开始搭建springboot-dubbo
发布日期:2021-05-08 13:47:09
浏览次数:24
分类:精选文章
本文共 3343 字,大约阅读时间需要 11 分钟。
Dubbo技术解析
Dubbo的简单介绍
随着业务的发展,网站架构逐渐从简单的单一应用架构演进到垂直应用架构、分布式服务架构和面向服务架构。每一步的演化都伴随着业务需求的增长和技术挑战的增加。
网站架构的发展历程
单一应用架构(ORM)
当网站流量较小时,所有功能集中在一个应用中。这种架构采用简化的增删改查功能,使用ORM框架来处理数据库操作。垂直应用架构(MVC)
随着访问量的增加,单一应用的性能提升效果逐渐减弱。将应用拆分为互不干扰的几个垂直应用,采用MVC框架进行开发。分布式服务架构(RPC)
在垂直应用越来越多的情况下,业务之间的交互变得不可避免。核心业务被抽取成独立的服务,形成服务中心,前端应用能够更快速响应市场需求。RPC框架成为业务复用和整合的关键。面向服务架构(SOA)
随着服务数量的增加,资源浪费和容量评估问题凸显。引入调度中心,基于访问压力实时管理集群容量,提高集群利用率。SOA框架成为资源调度和治理的关键。Dubbo核心工作原理
Dubbo是一个分布式服务框架,主要通过以下角色协同工作:
Provider
暴露服务的服务提供方。Registry
服务注册与发现的注册中心,支持多种协议,如Zookeeper、Multicast、Redis等。Consumer
调用远程服务的服务消费方。Monitor
统计服务的调用次数和调用时间,提供监控数据。Container
服务运行容器,负责服务的生命周期管理。
Dubbo特点对比
与Spring Cloud相比,Dubbo在服务注册、监控、断路器、服务网关等方面存在显著差异:
组件 | Dubbo | Spring Cloud |
---|---|---|
服务注册中心 | Zookeeper | Netflix Eureka |
服务监控 | Dubbo-Monitor | Spring Boot Admin |
断路器 | 不完善 | Hystrix |
服务网关 | 无 | Netflix Gateway |
服务配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
Spring Boot Dubbo搭建
项目结构
项目包含三个模块:
dubbo-provider
服务提供者,采用Spring Boot开发。dubbo-consumer
服务消费者,同样基于Spring Boot。dubbo-api
服务提供者的接口模块,简单的Maven项目。项目依赖
Dubbo相关依赖:
com.alibaba.spring.boot dubbo-spring-boot-starter 2.0.0
注册中心Zookeeper依赖:
com.101tec zkclient 0.10
服务提供者
dubbo-provider 模块实现HelloService接口:
package com.dubbo.provider.service;import com.alibaba.dubbo.config.annotation.Service;import com.dubbo.service.HelloService;import org.springframework.stereotype.Component;@Service@Componentpublic class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { return "Hello" + name; }}
启动类:
package com.dubbo.provider;import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubboConfiguration@SpringBootApplicationpublic class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); }}
服务消费者
dubbo-consumer 模块远程调用HelloService接口:
package com.dubbo.consumer.controller;import com.alibaba.dubbo.config.annotation.Reference;import com.dubbo.service.HelloService;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController { @Reference private HelloService helloService; @RequestMapping(value = "/hello") public String hello() { String hello = helloService.sayHello("world"); System.out.println(helloService.sayHello("BJQ")); return hello; }}
启动类:
package com.dubbo.consumer;import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubboConfiguration@SpringBootApplicationpublic class DubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(DubboConsumerApplication.class, args); }}
项目启动流程
启动注册中心
执行zkServer.cmd
。启动服务提供者 dubbo-provider
服务提供者已连接注册中心,确保服务可用。启动服务消费者 dubbo-consumer
消费者会自动订阅所需服务。服务调用
访问地址:http://localhost:9021/hello
项目地址
本文完成,完结撒花~
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月29日 07时35分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
zmq的send
2019-03-06
C++中的delete加深认识
2019-03-06
windows消息机制(转)
2019-03-06
STL笔试面试题总结(干货)(转)
2019-03-06
XML 和 HTML 之间的差异
2019-03-06
阿里钉钉面试题
2019-03-06
华为社招笔试
2019-03-06
C++中找资源或者函数的方法
2019-03-06
一些留给自己的思考题(只求回过头来能够有所获)
2019-03-06
SQL函数返回表的写法
2019-03-06
delete对象时会自动调用类的析构函数
2019-03-06
C++ 子类对象直接赋值给父类对象可行,反过来不行
2019-03-06
linux下同一个动态库名为何辣么多的.so文件
2019-03-06
SQL联表的方式(逗号, Left Join, Right Join)
2019-03-06
牛客网输入输出举例
2019-03-06
字符串初始化时的注意点
2019-03-06
软考相关试题
2019-03-06
顺序表的操作
2019-03-06
常量表达式
2019-03-06
POD类型
2019-03-06