微服务框架(二十)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
相关文章
|
1月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
16天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
129 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
58 4
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
178 1
|
2月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
44 0
|
5天前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
23 5
|
20天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
64 5
|
25天前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
46 6
|
1月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
49 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
80 2
下一篇
DataWorks