Java 微服务框架 HP-SOA v1.1.4

HP-SOA

HP-SOA

功能完备,简单易用,高度可扩展的Java微服务框架。

  • 项目主页 : https://www.oschina.net/p/hp-soa
  • 下载地址 : https://github.com/ldcsaa/hp-soa
  • 开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.md
  • QQ Group: 44636872, 663903943

1.1.2 版本更新内容:

  1. 增加RocketMQ支持:hp-soa-starter-rocketmq。
  2. 增加国际化支持:通过 X-Language HTTP 请求头传递语言选项,通过 I18nHelper 读取国际化资源。
  3. 优化应用程序打包发布方案。
  4. 增加 Docker 环境下应用程序镜像构建和容器运行通用方案。
  5. 补充【应用程序打包发布】方案与实施文档。
  6. 支持运行期设置应用程序只读(配置参考:Nacos配置中心)
  7. 支持运行期动态修改日志级别(配置参考:Nacos配置中心)
  8. 组件更新:
    • Spring-Boot -> 3.2.9
    • Spring-Cloud -> 2023.0.3
    • Dubbo -> 3.2.16

【快速开始】


技术架构

技术架构

技术集成

  • Web 服务框架:spring-boot 3.x
  • 微服务框架:spring-cloud 4.x
  • 微服务框架:Dubbo 3.x
  • 服务注册中心:Nacos
  • 配置中心:Nacos
  • 服务治理中心:Dubbo Admin
  • 流量控制中心:Sentinel Dashboard + Nacos
  • 数据库:MySQL、Druid、mybatis-plus(支持多数据源)
  • 缓存:Redis + Redisson(支持多实例)
  • NoSQL 数据库:MongoDB
  • 搜索引擎:Elasticsearch
  • 消息总线:RabbitMQ(支持多实例、可靠消息、Stream 消息)
  • 消息队列:Kafka(支持可靠消息)
  • MQTT发布订阅:Eclipse PAHO mqttv5
  • 分布式Job:xxl-job
  • 轻量级Job:Redisson + Spring Scheduled
  • 分布式事务:Seata
  • 全局ID:Leaf(支持 Snowflake ID 和 Segment ID)
  • 统一日志:Log4j + Kafka + ELK
  • 调用链跟踪:Skywalking
  • 监控告警:Prometheus + Grafana + Alert Manager

模块说明

  • hp-soa-dependencies 依赖管理模块,定义依赖包及其版本
  • hp-soa-framework-core 基础模块,定义 HP-SOA 基础组件和工具
  • hp-soa-framework-web Web应用模块,集成 spring-boot 和 Dubbo,提供核心微服务功能
  • hp-soa-framework-leaf Leaf全局ID模块,基于Leaf,提供分布式全局ID功能
  • hp-soa-framework-gelf GELF日志模块,提供TCP、UDP、HTTP、Redis、Kafka等远程日志传输功能
  • hp-soa-framework-util 工具包模块,提供文件处理、邮件、远程访问等组件和工具
  • hp-soa-starter-web Web应用启动器,配置并启动应用服务,所有 HP-SOA 项目都必须引入该启动器
  • hp-soa-starter-web-cloud Spring Cloud 启动器,开启 Spring Cloud 微服务功能,所有 Spring Cloud 微服务项目都必须引入该启动器
  • hp-soa-starter-web-dubbo Dubbo 启动器,开启 Dubbo 微服务功能,所有 Dubbo 微服务项目都必须引入该启动器
  • hp-soa-starter-task Task启动器,开启 Spring Task 功能,并为 Spring Task 提供日志关联和调用链跟踪能力
  • hp-soa-starter-nacos Nacos配置中心启动器,开启配置中心功能,应用程序可以从远程配置中心加载配置
  • hp-soa-starter-data-mysql MySQL启动器,开启MySQL数据库访问功能,并提供动态数据源、数据源监控和全局事务管理等能力
  • hp-soa-starter-data-redis Redis启动器,开启Redis访问功能,支持多Redis实例,支持Spring Cache
  • hp-soa-starter-data-mongodb MongoDB 启动器,开启 MongoDB 访问功能,支持通过 Spring Data 接口方式访问 MongoDB
  • hp-soa-starter-data-elasticsearch Elasticsearch 启动器,开启 Elasticsearch 访问功能,支持通过 Spring Data 接口方式访问 Elasticsearch
  • hp-soa-starter-rabbitmq Rabbitmq启动器,开启Rabbitmq访问功能,支持多Rabbitmq实例,提供可靠消息实施方案以及消息跟踪能力
  • hp-soa-starter-kafka Kafka 启动器,开启 Kafka 访问功能,提供可靠消息实施方案以及消息跟踪能力
  • hp-soa-starter-mqtt MQTT启动器,开启MQTT发布订阅功能,全面支持mqttv5协议
  • hp-soa-starter-job-exclusive 轻量级Job启动器,开启轻量级排他Job功能,提供Job执行日志关联和调用链跟踪能力
  • hp-soa-starter-job-xxljob Xxl-Job启动器,开启 Xxl-Job 功能,结合 xxl-job-admin 提供分布式Job能力
  • hp-soa-starter-leaf Leaf全局ID启动器,开启Leaf全局ID功能,支持通过Snowflake算法和Segment算法生成全局ID
  • hp-soa-starter-seata Seata启动器,开启Seata分布式事务功能,结合 Seata TC 提供分布式事务能力
  • hp-soa-starter-sentinel Sentinel启动器,开启Sentinel流量控制功能,结合 Sentinel Dashboard 和 Nacos 提供流量控制和流控规则持久化能力
  • hp-soa-starter-skywalking Skywalking启动器,开启Skywalking调用链跟踪功能,结合 Skywalking Agent 和 Skywalking Server 提供调用链跟踪能力

应用接入(参考:hp-demo)

  1. pom.xml 中添加 HP-SOA 依赖
<dependencyManagement><dependencies><!-- 添加 hp-soa 依赖管理 --><dependency><groupId>io.github.hpsocket</groupId><artifactId>hp-soa-dependencies</artifactId><version>${hp-soa.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><!-- 普通项目引用 hp-soa-starter-web --><dependency><groupId>io.github.hpsocket</groupId><artifactId>hp-soa-starter-web</artifactId></dependency><!-- Spring Cloud 项目引用 hp-soa-starter-web-cloud --><!--<dependency><groupId>io.github.hpsocket</groupId><artifactId>hp-soa-starter-web-cloud</artifactId></dependency>--><!-- Dubbo项目引用 hp-soa-starter-web-dubbo --><!--<dependency><groupId>io.github.hpsocket</groupId><artifactId>hp-soa-starter-web-dubbo</artifactId></dependency>--><!-- 根据项目需要,引用其它 hp-soa starter --><dependency><groupId>io.github.hpsocket</groupId><artifactId>hp-soa-starter-xxx</artifactId></dependency>
</dependencies>
  1. 修改应用配置(参考 Demo hp-demo-bff-basic 的本地配置文件 ,配置中心的远程配置文件),主要配置项:
    • hp.soa.web
    • spring.cloud (Spring Cloud 项目)
    • dubbo (Dubbo项目)
    • server
    • spring
    • management
    • springdoc
  2. 修改全局配置(可选)
    • 系统配置文件,用于设置系统属性,默认配置文件:/opt/hp-soa/config/system-config.properties参考:system-config.properties
    • 扩展配置文件,用于配置注册中心地址、配置中心地址等公共属性,默认配置文件:/opt/hp-soa/config/extended-config.properties参考:extended-config.properties
  3. 实现 HTTP 鉴权接口(可选)
    • 如果是Gateway/BFF应用,并且应用属性hp.soa.web.access-verification.enabled = true,则需要实现AccessVerificationService接口,用于HTTP请求鉴权。
  4. 启动应用
    • 以io.github.hpsocket.soa.framework.web.server.main.AppStarter作为启动类,启动应用程序。
    • JVM启动参数参考:JVM启动参数示例

[用户指南]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/431817.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctf.show---->re2

做题笔记。 下载 查壳 32 ida打开。 WSL先运行一下&#xff1a; &#xff1f; 创建呗。 函数如下&#xff1a; 逻辑很清晰&#xff0c;写脚本咯 &#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h>int main() {char encode[] &qu…

TCP网络编程概述、相关函数、及实现超详解

文章目录 TCP网络编程概述1. TCP协议的特点2. TCP与UDP的差异3. TCP编程流程 TCP网络编程相关函数详解1. socket()&#xff1a;创建套接字参数说明&#xff1a;返回值&#xff1a;示例&#xff1a; 2. connect()&#xff1a;客户端连接服务器参数说明&#xff1a;返回值&#x…

IDEA去除掉虚线,波浪线,和下划线实线的方法

初次安装使用IDEA&#xff0c;总是能看到导入代码后&#xff0c;出现很多的波浪线&#xff0c;下划线和虚线&#xff0c;这是IDEA给我们的一些提示和警告&#xff0c;但是有时候我们并不需要&#xff0c;反而会让人看着很不爽&#xff0c;这里简单记录一下自己的调整方法&#…

Ubunt系统设置NVIDIA显卡性能模式

文章目录 前言一、了解自己的显卡1、输入nvidia-smi指令搞清楚表中的含义 二、通过英伟达官方设置进行修改1、此时的状态3、改完后变为P0 总结 前言 工欲善其事&#xff0c;那性能直接拉满&#xff0c;宁可累坏显卡&#xff0c;也不能影响自己&#xff0c;首先了解自己的显卡以…

OpenAPI鉴权(二)jwt鉴权

一、思路 前端调用后端可以使用jwt鉴权&#xff1b;调用三方接口也可以使用jwt鉴权。对接多个三方则与每个third parth都约定一套token规则&#xff0c;因为如果使用同一套token&#xff0c;token串用可能造成权限越界问题&#xff0c;且payload交叉业务不够清晰。下面的demo包…

uni-app页面调用接口和路由(四)

文章目录 一、路由二、页面调用接口二、路由跳转1.uni.navigateTo(OBJECT)2.uni.redirectTo(OBJECT)3.uni.reLaunch(OBJECT)4.uni.switchTab(OBJECT)5.uni.navigateBack(OBJECT) 总结 一、路由 路由配置 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配…

iOS六大设计原则设计模式

六大设计原则&#xff1a; 一、单一职责原则 一个类或者模块只负责完成一个职责或者功能。 类似于&#xff1a;UIView 和 CALayer 二、开放封闭原则 对扩展开放&#xff0c;对修改封闭。 我们要尽量通过扩展软件实体来解决需求变化&#xff0c;而不是通过修改已有的代码来…

ESP32-WROOM-32 [创建AP站点-客户端-TCP透传]

简介 基于ESP32-WROOM-32 开篇(刚买)&#xff0c; 本篇讲的是基于固件 ESP32-WROOM-32-AT-V3.4.0.0&#xff08;内含用户指南, 有AT指令说明&#xff09;的TCP透传设置与使用 设备连接 TTL转USB线, 接ESP32 板 的 GND&#xff0c;RX2&#xff0c; TX2 指令介绍 注意,下面指…

Facebook Marketplace无法使用的原因及解决方案

Facebook Marketplace是一项广受欢迎的买卖平台&#xff0c;然而&#xff0c;有时候用户可能会遇到无法访问或使用该功能的问题。通常&#xff0c;这些问题可以归结为以下几类原因&#xff1a; 地理位置限制&#xff1a; Facebook Marketplace并非在全球每个地区都可用。在某些…

【C++】C++中如何处理多返回值

十四、C中如何处理多返回值 本部分也是碎碎念&#xff0c;因为这些点都是很小的点&#xff0c;构不成一篇文章&#xff0c;所以本篇就是想到哪个点就写哪个点。 1、C中如何处理多个返回值 写过python的同学都知道&#xff0c;当你写一个函数的返回时&#xff0c;那是你想返回…

MySQL(日志)

日志 日志分为三种&#xff1a; undo log &#xff08;回滚日志&#xff09;&#xff1a;用于事务回滚和MVCC redo log &#xff08;重做日志&#xff09;&#xff1a;用于故障恢复 binlog &#xff08;归档日志&#xff09;&#xff1a;用于数据备份和主从复制 undo log undo…

一个简单的个人博客管理平台适合新手学习(最底下有github链接)

一个简单的个人博客管理平台 欢迎大家一起学习 前端技术栈 vue3jshtmlcsselement-plus 后端技术栈 springbootredismysqlmybatis 首页展示 页面介绍 左边为文章界面点击文字名字就能进行阅读 右边为热门博客功能能够实时统计前五名博客热度并且将前三名展示在卡片中(卡片…

【人工智能学习之常用损失函数浅谈】

【人工智能学习之常用损失函数浅谈】 Focal Loss基本概念Focal Loss的定义作用应用场景 Arc Loss基本概念ArcFace Loss的定义作用应用场景 CenterLoss基本概念Center Loss 的定义作用应用场景实现细节 Cross Entropy Loss (CELoss)基本概念二分类任务多分类任务作用优点缺点应用…

oracle avg、count、max、min、sum、having、any、all、nvl的用法

组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看&#xff0c;nvl(列名&#xff0c;默认值)&#xff0c;nvl的作用就是如果列名所在的这一行出现空则用默认值替换

D. Determine Winning Islands in Race (cf div2,dp、图论最短路)

D. Determine Winning Islands in Race 思路: bfs找到E到达每个点的最短时间t[i]。 如果E要超过B&#xff0c;那么一定要借助辅助桥&#xff0c;从而获胜。 假设有u->v的辅助桥&#xff0c;E能通过这个桥超过B的条件是: s>u 且 t[v] < v-s 即 s的取值要为[u1,v-t[v]-…

每天分享一个FPGA开源代码(6)- 浮点数运算

FPGA&#xff08;现场可编程门阵列&#xff09;是一种高度可配置的集成电路&#xff0c;它可以用于实现各种数字信号处理任务&#xff0c;包括浮点数运算。 在FPGA上进行浮点数运算通常涉及以下几个步骤&#xff1a; 1. 选择浮点数格式 浮点数运算首先要确定使用哪种浮点数格…

第二十八篇——用间篇:使用间谍,先学习花钱的价值观

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 间谍的本质&#xff0c;任何策略没有好坏没有道德&#xff0c;它是平衡路…

【大模型】AutoDL部署AI绘图大模型Stable Diffusion使用详解

目录 一、前言 二、AI绘图大模型概述 2.1 AI绘图大模型介绍 2.2 AI绘图大模型特点 2.3 AI绘图大模型优势 三、主流的AI绘图大模型介绍 3.1 Midjourney 3.1.1 Midjourney介绍 3.1.2 Midjourney功能特点 3.1.3 Midjourney使用场景 3.2 Stable Diffusion 3.2.1 Stable …

Unity中的功能解释(数学位置相关和事件)

向量计算 Vector3.Slerp&#xff08;起点坐标&#xff0c;终点坐标&#xff0c;t&#xff09;&#xff0c;可是从起点坐标以一个圆形轨迹到终点坐标&#xff0c;有那么多条轨迹&#xff0c;那怎么办 Vector3.Slerp 进行的是沿球面插值&#xff0c;因此并不是沿着严格的“圆形…

【LeetCode】146. LRU缓存

1.题目 2.思想 3.代码 3.1 代码1 下面这是一版错误的代码。错误的原因在于逻辑不正确导致最后的代码也是不正确的。 class LRUCache:def __init__(self, capacity: int):self.time 0 # 用于全局记录访问的时间self.num2time {} # 数字到时间的映射self.key2val {} # 数字…