【开源项目】分布式文本多语言翻译存储平台

embedded/2025/2/24 16:58:17/

分布式文本多语言翻译存储平台


地址:
Gitee:https://gitee.com/dreamPointer/zza-translation/blob/master/README.md

一、提供服务

  • 分布式文本翻译服务,长文本翻译支持流式回调(todo)
  • 分布式文本多语言翻译结果存储服务,提供可定制化的数据源分片存储方案
  • 文本翻译结果后台管理服务,提供翻译结果可视化、修改支持(todo)

二、特点

  • 分布式部署:zza-translation-core 服务支持集群部署,zza-translation-client 客户端采用轮询策略实现(CoreServerSelector.java)
  • 高度并行化:文本翻译、已翻译文本获取/存储等操作按数据源分片策略并行执行
  • 并行自适应性调整(todo):当并行执行的线程数量较高时,可自适应调整为串行,减少线程上下文切换开销
  • 高效网络传输:客户端(TransClient.java)与服务端(TransService.java)之间的数据传输使用 ProtoBuf 进行压缩(todo),服务端网络应用(CoreServer.java)采用 Netty 实现
  • 翻译失败重试:开启失败担保策略下,当依赖的第三方翻译服务不可用或请求翻译失败,将翻译失败的请求存储,由后台线程 retry 处理(TextTranslateFailedGuarantor.java),默认支持最大重试次数为 5 次,失败则丢弃
  • 高效缓存:使用 LRU 策略的 Caffeine 作为本地缓存,以单条翻译结果为单位进行存储
  • 定制化存储:翻译文本数据库支持自定义分库分表数量,以及语言类型与数据源关系映射

三、软件架构

1. 网络应用层:Netty
  • CoreServer.java
    支持 token 身份验证
2. 数据存储层:MySQL
  • DynamicDatasourceInterceptor.java:
    基于动态数据源实现分库分表检索

  • 原文本数据库:zza_origin

    • text_origin_${0…9}
  • 翻译文本数据库:zza_translation_${0…n}

    • text_translation_KaTeX parse error: Expected group after '_' at position 15: {languageType}_̲{0…n}
3. 本地缓存:Caffeine
  • TranslationCache.java:
    采用Caffeine LRU策略实现,未指定长度时,默认为5000
4. 翻译失败担保
  • TextTranslateFailedGuarantor.java:
    支持自适应的失败重试策略,根据失败数量动态调整重试并行度
5. 第三方翻译服务

第三方服务支持:

  • 百度翻译:BaiduTranslator.java
  • 阿里云翻译:AliyunTranslator.java

四、模块介绍

  • zza-translation-core:文本多语言翻译与存储服务,支持集群部署
  • zza-translation-client:文本多语言翻译存储服务客户端,采用轮询策略
  • zza-translation-console:文本翻译结果控制台,支持对翻译结果的修改(todo)
  • zza-translation-demo:客户端应用示例

五、安装教程

1. 配置MySQL数据库,导入SQL语句

导入 doc/sql 目录下的SQL

创建 zza_translation.sql 下 text_translation_* 相关的表,需要修改表名。

格式:text_translation_KaTeX parse error: Expected group after '_' at position 15: {languageType}_̲{idx}

  • ${languageType}: 支持的语言类型,com.zhangziang.translation.common.constant.LanguageType.CN.name().toLowerCase()
  • ${idx}: 分片索引,与 zza-translation-core 服务下 application.yml 配置中的 zza-trans.language-table-sharding 对应, 开始索引为0,最大值为 zza-trans.language-table-sharding - 1

比如:支持语言类型为中文(CN)、英文(EN),翻译结果表分片为10(zza-trans.language-table-sharding = 10),则需要创建 text_translation_cn_{0…9}、text_translation_en_{0…9}

2. 配置 zza-translation-core
  1. 配置application.yml
server:port: 9820tomcat:threads:max: 200spring:application:name: zza-translation-coredatasource:                  # 支持多数据源dynamic:primary: zza_origin      # 主数据源配置为 zza_origin 库,存储 /doc/sql/zza_origin.sql 中的表datasource:zza_origin:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/zza_origin?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: rootpassword: rootzza_translation_0:    # 翻译结果数据源 zza_origin 库,存储 /doc/sql/zza_translation.sql 中的表type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/zza_translation_0?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: rootpassword: rootzza_translation_1:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/zza_translation_1?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: rootpassword: rootzza_translation_2:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/zza_translation_2?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: rootpassword: rootmybatis:mapper-locations: "classpath:/mybatis-mapper/*Mapper.xml"type-aliases-package: com.zhangziang.translation.common.pojo.dooconfiguration:map-underscore-to-camel-case: true
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # Mybatis Log# zza-trans-config
zza-trans:core-server:port: 9821                # CoreServer 端口access-token: ZZA_TRANSLATION_CORE_ACCESS_TOKEN # 请求身份验证标识datasource-language:        # "数据源名称"与"对应语言类型"存储分片映射关系zza_translation_0: CN,EN  # 语言类型:com.zhangziang.translation.common.constant.LanguageType.name()zza_translation_1: JA,FR  zza_translation_2: DElanguage-table-sharding: 10 # 翻译结果存储表分片数cache-size: 5000            # 本地缓存大小failed-guarantee: true      # 是否开启翻译失败重试机制translator:                 # 第三方翻译工具baidu:app-id: "20231130001896326"secret-key: "prEilA7caZpzDluJmV2j"qps-limit: 1
3. 部署 zza-translation-core
4. 服务中引入 zza-translation-client 依赖
    <dependency><groupId>com.zhangziang</groupId><artifactId>zza-translation-client</artifactId><version>${zza-trans.version}</version></dependency>
5. 配置CoreServer服务地址
zza-trans:languages: CN,EN,JA,DE,FR   # com.zhangziang.translation.common.constant.LanguageTypecore-server: # 服务名称以及对应地址、访问身份校验(access-token需与该zza-translation-core服务中配置的 zza-trans.core-server.access-token 值相同)core-9821: # 服务名称(可以任意命名,但多个服务名不可重复)address: 127.0.0.1:9821 # 服务地址IP与CoreServer端口(端口需与该zza-translation-core服务中配置的 zza-trans.core-server.port 值相同)access-token: ZZA_TRANSLATION_CORE_ACCESS_TOKENcore-9822:address: 127.0.0.1:9822access-token: ZZA_TRANSLATION_CORE_ACCESS_TOKENcore-9823:address: 127.0.0.1:9823access-token: ZZA_TRANSLATION_CORE_ACCESS_TOKEN
6. 使用

参考示例:zza-translation-demo


http://www.ppmy.cn/embedded/164863.html

相关文章

MacOS下使用Ollama本地构建DeepSeek并使用本地Dify构建AI应用

目录 1 大白话说一下文章内容2 作者的电脑配置3 DeepSeek的本地部署3.1 Ollamal的下载和安装3.2 选择合适的deepseek模型3.3 安转deepseek 4 DifyDeepSeek构建Al应用4.1 Dify的安装4.1.1 前置条件4.1.2 拉取代码4.1.3 启动Dify 4.2 Dify控制页面4.3 使用Dify实现个“文章标题生…

基于springboot+vue的考研互助平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

hydra docker版本

最近做ssh暴力破解实验&#xff0c;由于服务器上面软件依赖太乱了&#xff0c;导致我花了好久没能成功编译出hydra&#xff0c;于是想到了使用docker版本的hydra&#xff0c;最后成功的完成了ssh暴力破解实验&#xff5e; ailx10 1958 次咨询 网络安全优秀回答者 互联网行业…

从0开始的操作系统手搓教程 6 ——检查我们的内存信息

目录 如何检测内存 使用0xE820办法获取所有的内存 使用E801办法获取我们的内存 大保底&#xff1a;使用0x88功能 开始实现 修正我们的跳转偏移 开始内存检查 下一篇 现在&#xff0c;我们可以进一步迈向我们的内核了。那就是加载我们的内核。刚刚我们说过&#xff0c;加…

前沿科技一览未来发展趋势

新能源在分布式能源系统中的应用越来越广泛。这不仅提高了能源使用效率&#xff0c;还促进了环境。下面就来谈谈这个话题。 首先&#xff0c;新能源比如太阳能和风能&#xff0c;在分布式能源系统中可以有效减少对传统能源的依赖。例如&#xff0c;家庭安装太阳能板就可以自己…

【OpenCV】入门教学

&#x1f3e0;大家好&#xff0c;我是Yui_&#x1f4ac; &#x1f351;如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f680;如有不懂&#xff0c;可以随时向我提问&#xff0c;我会全力讲解~ &#x1f52…

14.8 Auto-GPT 自主智能体设计解密:构建具备长期记忆的智能决策系统

Auto-GPT 自主智能体设计解密:构建具备长期记忆的智能决策系统 关键词:Auto-GPT 架构设计、自主智能体开发、LangChain Agents、长期记忆系统、工具链编排 1. 自主智能体的核心架构设计 Auto-GPT 系统架构图解: #mermaid-svg-NuDU1eo6sXqhA6Ve {font-family:"trebuch…

DVWA 靶场(含代码审计)

DVWA 靶场的通关 刚建立和使用 输入 http://dvwa:8898/setup.php //进入用户名 密码 dvwa 你自己设计的想要进入数据库 点击creat 用户名 密码 admin passwordAttack type Sniper模式 在Sniper模式下&#xff0c;Payload字典用于逐个替换请求中标记的位置。例如&#x…