来源:https://www.oschina.net/news/118917/hmily-2-1-1-released感谢朋友们一路以来的支持,让大家久等了 。在这一个版本中,我们团队重构了整个项目,合理的划分功能模块,新增配置中心,调整底层存储结构,解决疑难bug,以及其他新功能的支持,也吸收了更多开源社区的优秀人才的加入 。
架构全景图
文章插图
功能
- 高可靠性 :支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂 。
- 易用性 :提供零侵入性式的 Spring-Boot, Spring-Namespace 快速与业务系统集成 。
- 高性能 :去中心化设计,与业务系统完全融合,天然支持集群部署 。
- 可观测性 :Metrics多项指标性能监控,以及admin管理后台UI展示 。
- 多种RPC :支持 Dubbo, SpringCloud,Montan ,sofa-rpc等知名RPC框架 。
- 日志存储 :支持 MySQL, oracle, mongodb, redis, zookeeper 等方式 。
- 复杂场景 :支持RPC嵌套调用事务 。
- 在模块划分上:抽离出开箱即用的SPI自定义模块 。定义事务日志多种存储方式的SPI模块 。定义事务日志多种序列化方式的SPI模块 。新增配置中心,支持各种主流的配置中心(nacos,apollo,zookeeper等),并支持配置的动态刷新 。新增metrics模块,用来监控运行时候的各种信息 。抽离出核心的事务执行模块 。抽离出多种RPC支持模块 。抽离出spring与spring boot 支持模块 。
- 在依赖包版本上:guava升级到29.0curator 升级到5.1.0
- 在代码质量上:严格的check-style代码检查,秉承优雅,简单易懂原则(talk is cheap ,show you code) 。
- 在开放性上:社区奉行简单,快乐,和谐基本原则
- 在目标上:打造一款高可用,高性能,简单易用金融级的分布式事务解决方案 。
- dubbo框架不支持注解方式的使用(spring-boot-starter-dubbo) 。h
- motan框架不支持注解方式的使用 。
- spring-cloud用户如果使用feign与hystrix整合hmily时候的线程切换问题 。
- 极端情况下事务日志序列化异常 。
- try阶段超时异常,导致事务悬挂bug 。
- confirm与cancel阶段异常时候,事务未能正确恢复bug 。
- 在事务日志存储上,支持同步与异步2种模式,供用户选择 。
- 引用hmily对各种rpc支持的jar包 。
- 添加hmily配置 。
- 在rpc接口方法上添加 @Hmily注解 。
用户依赖的方式没有更改,只需要将版本升级到2.1.0 。下面举dubbo微服务列子
dubbo rpc微服务
- dubbo接口服务依赖
<dependency> <groupId>org.dromara</groupId> <artifactId>hmily-annotation</artifactId> <version>2.1.0</version> </dependency>
- dubbo服务提供者依赖(<2.7)
<dependency> <groupId>org.dromara</groupId> <artifactId>hmily-dubbo</artifactId> <version>2.1.0</version> </dependency> or <dependency> <groupId>org.dromara</groupId> <artifactId>hmily-spring-boot-starter-dubbo</artifactId> <version>2.1.0</version> </dependency>
hmily配置的变更在新版2.1.0中,新增了hmily-config模块,支持本地与注册中心模式 。用户首先需要在项目resouce文件下新建一个名称为hmily.yml的文件 。默认路径为项目的 resource目录下,也可以使用 -Dhmily.conf 指定,也可以把配置放在 user.dir 目录下 。优先级别 -Dhmily.conf > user.dir >resource 。文件格式如下(一部分,以下是配置成本地模式):
server: configMode: local AppName: account-dubbo # 如果server.configMode eq local 的时候才会读取到这里的配置信息. config: appName: account-dubbo serializer: kryo contextTransmittalMode: threadLocal scheduledThreadMax: 16 scheduledRecoveryDelay: 60 scheduledCleanDelay: 60 scheduledPhyDeletedDelay: 600 scheduledInitDelay: 30 recoverDelayTime: 60 cleanDelayTime: 180 limit: 200 retryMax: 10 bufferSize: 8192 consumerThreads: 16 asyncRepository: true autoSql: true phyDeleted: true storeDays: 3 repository: mysqlrepository: database: driverClassName: com.mysql.jdbc.Driver url : jdbc:mysql://127.0.0.1:3306/hmily?useUnicode=true&characterEncoding=utf8 username: root password: maxActive: 20 minIdle: 10 connectionTimeout: 30000 idleTimeout: 600000 maxLifetime: 1800000
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 懂电脑的人都建议SSD固态硬盘不要分区,这是为什么?
- 新买的移动硬盘和U盘该格式化成哪种文件格式?
- 如何评价吴三桂与陈圆圆之间的感情 吴三桂与陈圆圆的后人
- 霍成君当了几年皇后 历史上真实的霍成君
- 一毛不拔的成语是什么意思 成语故事一毛不拔
- 公孙瓒攻打袁绍胜利还是失败了 袁绍怎么打败的公孙瓒
- 拓跋弘之后谁继位啊 拓跋弘的儿子有哪些
- 韩信都有哪些丰功伟绩 韩信打过什么有名的战役
- 苦瓜茶的妙用,安溪铁观音茶叶的妙用
- 姜茶的八大功效要知道,炒米姜茶的功效