从零开始搭建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


    项目地址

    本文完成,完结撒花~

    上一篇:自定义注解 + AOP 记录接口访问日志
    下一篇:Oracle常用SQL

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年03月29日 07时35分26秒