微服务框架(二十)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
相关文章
|
3月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
4月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
395 3
|
10月前
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
522 0
|
10月前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
377 0
|
10月前
|
消息中间件 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——发布/订阅消息的生产和消费
本文详细讲解了Spring Boot中ActiveMQ的发布/订阅消息机制,包括消息生产和消费的具体实现方式。生产端通过`sendMessage`方法发送订阅消息,消费端则需配置`application.yml`或自定义工厂以支持topic消息监听。为解决点对点与发布/订阅消息兼容问题,可通过设置`containerFactory`实现两者共存。最后,文章还提供了测试方法及总结,帮助读者掌握ActiveMQ在异步消息处理中的应用。
466 0
|
10月前
|
消息中间件 网络协议 Java
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ集成
本文介绍了在 Spring Boot 中集成 ActiveMQ 的详细步骤。首先通过引入 `spring-boot-starter-activemq` 依赖并配置 `application.yml` 文件实现基本设置。接着,创建 Queue 和 Topic 消息类型,分别使用 `ActiveMQQueue` 和 `ActiveMQTopic` 类完成配置。随后,利用 `JmsMessagingTemplate` 实现消息发送功能,并通过 Controller 和监听器实现点对点消息的生产和消费。最后,通过浏览器访问测试接口验证消息传递的成功性。
680 0
|
6月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1034 0
|
7月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
779 0
|
3月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
374 3

热门文章

最新文章