微服务框架(二十)Dubbo Spring Boot 生产就绪特性

简介:   此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。  本文为Dubbo Spring Boot 生产就绪特性

  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。
  本文为Dubbo Spring Boot 生产就绪特性

本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

Dubbo埋点

dubbo-spring-boot-actuator提供生产就绪(Production-Ready)特性 (比如健康检查,OPS端点,及外部化配置)

详见Dubbo Spring Boot Production-Ready

Maven依赖

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-actuator</artifactId>
    <version>${dubbo.springboot.version}</version>
</dependency>

最新版本为贡献给apache基金会后的依赖

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-actuator</artifactId>
    <version>2.7.0</version>
</dependency>

application配置

# dubbo endpoints
management.endpoint.dubbo.enabled = true
management.endpoint.dubbo-configs.enabled = true
management.endpoint.dubbo-properties.enabled = true
management.health.dubbo.status.defaults = memory
management.health.dubbo.status.extras = load,threadpool

注:需在WebJMX暴露对应的端点,即添加对应的endpoints,如:

management.endpoints.web.exposure.include = dubbo,dubbo-configs,dubbo-properties

健康检查

dubbo-spring-boot-actuator支持标准的Spring Boot健康指示器作为生产就绪特性,它将聚合到Spring Boot的Health中,并在运行MVC (Spring Web MVC)和JMX (Java管理扩展)的HealthEndpoint上暴露

Web Health端点

您可以通过Web Client访问health endpoints,亦可独立通过management.server.port为访问端点设置端口号。获得JSON格式的响应,如下所示

{
   
   
  "status": "UP",
  "dubbo": {
   
   
    "status": "UP",
    "memory": {
   
   
      "source": "management.health.dubbo.status.defaults",
      "status": {
   
   
        "level": "OK",
        "message": "max:3641M,total:383M,used:92M,free:291M",
        "description": null
      }
    },
    "load": {
   
   
      "source": "management.health.dubbo.status.extras",
      "status": {
   
   
        "level": "OK",
        "message": "load:1.73583984375,cpu:8",
        "description": null
      }
    },
    "threadpool": {
   
   
      "source": "management.health.dubbo.status.extras",
      "status": {
   
   
        "level": "OK",
        "message": "Pool status:OK, max:200, core:200, largest:0, active:0, task:0, service port: 12345",
        "description": null
      }
    },
    "server": {
   
   
      "source": "dubbo@ProtocolConfig.getStatus()",
      "status": {
   
   
        "level": "OK",
        "message": "/192.168.1.103:12345(clients:0)",
        "description": null
      }
    }
  }
  // ignore others
}

在上面的例子中,memory, load, threadpool,server是Dubbo的内置StatusCheckers。 Dubbo允许应用程序扩展StatusChecker的SPI。

在缺省配置中,memoryload将添加到Dubbo的HealthIndicator中,它可以被外部化配置StatusChecker的默认值覆盖。

JMX Health端点

Health是一个JMX (Java管理扩展)端点,加载于org.springframework.boot:type=Endpoint,name=Health,它可以由JMX代理管理。如JDK自带的工具jconsole

内置StatusCheckers

META-INF/dubbo/internal/com.alibaba.dubbo.common.status.StatusChecker声明了内置StatusCheckers

registry=org.apache.dubbo.registry.status.RegistryStatusChecker
spring=org.apache.dubbo.config.spring.status.SpringStatusChecker
datasource=org.apache.dubbo.config.spring.status.DataSourceStatusChecker
memory=org.apache.dubbo.common.status.support.MemoryStatusChecker
load=org.apache.dubbo.common.status.support.LoadStatusChecker
server=org.apache.dubbo.rpc.protocol.dubbo.status.ServerStatusChecker
threadpool=org.apache.dubbo.rpc.protocol.dubbo.status.ThreadPoolStatusChecker

可以使用外部化配置中的management.health.dubbo.status.*的有效值,来作为StatusChecker名称的属性键

端点(Endpoints)

Actuator端点dubbo支持Actuator端点:

ID Enabled HTTP URI HTTP Method Description Content Type
dubbo true /actuator/dubbo GET Exposes Dubbo's meta data application/json
dubboproperties true /actuator/dubbo/properties GET Exposes all Dubbo's Properties application/json
dubboservices false /dubbo/services GET Exposes all Dubbo's ServiceBean application/json
dubboreferences false /actuator/dubbo/references GET Exposes all Dubbo's ReferenceBean application/json
dubboconfigs true /actuator/dubbo/configs GET Exposes all Dubbo's *Config application/json
dubboshutdown false /actuator/dubbo/shutdown POST Shutdown Dubbo services application/json

端点暴露的监控数据详见web-endpoints

外部化配置

默认的StatusChecker

management.health.dubbo.status.defaults是用于设置StatusCheckers名称的属性名称,其值允许为多个值,例如

management.health.dubbo.status.defaults = registry,memory,load

默认值为

management.health.dubbo.status.defaults = memory,load

StatusChecker额外功能

management.health.dubbo.status.extras用于覆盖StatusChecker的默认值,多个值由逗号分隔:

management.health.dubbo.status.extras = load,threadpool

健康检查启用

management.health.dubbo.enabled是一个启用配置来打开或关闭运行状况检查功能,其默认值为true

如果您要禁用运行状况检查,则应将management.health.dubbo.enabled应用于false:

management.health.dubbo.enabled = false

端点启用

Dubbo Spring Boot提供执行器端点,但其中一些是禁用的。如果您要启用它们,请将以下属性添加到外部配置中:

# Enables Dubbo All Endpoints
management.endpoint.dubbo.enabled = true
management.endpoint.dubbo-shutdown.enabled = true
management.endpoint.dubbo-configs.enabled = true
management.endpoint.dubbo-services.enabled = true
management.endpoint.dubbo-references.enabled = true
management.endpoint.dubbo-properties.enabled = true

参考资料:

  1. Dubbo Spring Boot Production-Ready
  2. Securing HTTP Endpoints
相关文章
|
11月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
747 2
|
NoSQL 安全 Java
2.2k star 单点登录框架揭秘!主流SSO太重?SpringBoot轻量级Smart‑SSO轻松接入·分布式·强踢人
Smart-SSO 是一个基于 SpringBoot 的轻量级单点登录框架,采用 OAuth2 授权码与 RBAC 权限设计,解决跨域认证、单点退出、令牌过期等痛点。支持自动续签、强制踢人、按钮级权限控制及分布式部署,适合中小团队快速构建高可用认证中台。项目已获 2.2k Star,代码开源,接入简单,是企业级应用的理想选择。[详情见 GitHub](https://github.com/a466350665/smart-sso)。
762 23
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
1317 1
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
712 0
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
546 0
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
789 70
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
1196 4
|
消息中间件 NoSQL Java
SpringBoot框架常见的starter你都用过哪些 ?
本节介绍常见的Spring Boot Starter,分为官方(如Web、AOP、Redis等)与第三方(如MyBatis、MyBatis Plus)两类,用于快速集成Web开发、数据库、消息队列等功能。
593 0
|
消息中间件 存储 Java
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
本教程介绍ActiveMQ的安装与基本使用。首先从官网下载apache-activemq-5.15.3版本,解压后即可完成安装,非常便捷。启动时进入解压目录下的bin文件夹,根据系统选择win32或win64,运行activemq.bat启动服务。通过浏览器访问`http://127.0.0.1:8161/admin/`可进入管理界面,默认用户名密码为admin/admin。ActiveMQ支持两种消息模式:点对点(Queue)和发布/订阅(Topic)。前者确保每条消息仅被一个消费者消费,后者允许多个消费者同时接收相同消息。
645 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
|
消息中间件 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——发布/订阅消息的生产和消费
本文详细讲解了Spring Boot中ActiveMQ的发布/订阅消息机制,包括消息生产和消费的具体实现方式。生产端通过`sendMessage`方法发送订阅消息,消费端则需配置`application.yml`或自定义工厂以支持topic消息监听。为解决点对点与发布/订阅消息兼容问题,可通过设置`containerFactory`实现两者共存。最后,文章还提供了测试方法及总结,帮助读者掌握ActiveMQ在异步消息处理中的应用。
636 0

热门文章

最新文章