外贸假发 网站,个人域名用来做淘宝客网站,Wordpress球队网站,安卓应用开发教程分布式文本多语言翻译存储平台 地址#xff1a; Gitee#xff1a;https://gitee.com/dreamPointer/zza-translation/blob/master/README.md 一、提供服务
分布式文本翻译服务#xff0c;长文本翻译支持流式回调#xff08;todo#xff09;分布式文本多语言翻译结果存储服…分布式文本多语言翻译存储平台 地址 Giteehttps://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文本翻译结果控制台支持对翻译结果的修改todozza-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翻译结果表分片为10zza-trans.language-table-sharding 10则需要创建 text_translation_cn_{0…9}、text_translation_en_{0…9} 2. 配置 zza-translation-core
配置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?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneUTCusername: 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?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneUTCusername: rootpassword: rootzza_translation_1:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/zza_translation_1?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneUTCusername: rootpassword: rootzza_translation_2:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/zza_translation_2?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneUTCusername: rootpassword: rootmybatis:mapper-locations: classpath:/mybatis-mapper/*Mapper.xmltype-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: 20231130001896326secret-key: prEilA7caZpzDluJmV2jqps-limit: 13. 部署 zza-translation-core
4. 服务中引入 zza-translation-client 依赖 dependencygroupIdcom.zhangziang/groupIdartifactIdzza-translation-client/artifactIdversion${zza-trans.version}/version/dependency5. 配置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_TOKEN6. 使用
参考示例zza-translation-demo