信创迁移研究:东方通中间件

东方通(TongTech)作为国产中间件领域的领军企业,其产品体系覆盖了企业级应用的多个核心场景。以下是主要中间件产品的技术解析与Java对接实现方案:

一、核心中间件产品矩阵

1. TongWeb(应用服务器)

定位:对标WebLogic/WebSphere的JavaEE应用服务器核心能力:

支持Servlet 4.0/JSP 3.0规范提供JDBC连接池、JNDI服务集群会话复制

应用场景:政务/金融核心业务系统部署

2. TongLINK/Q(消息中间件)

定位:高可靠消息队列(对标IBM MQ)核心指标:

单队列TPS 10万+消息持久化存储事务消息支持

应用场景:跨机构金融交易、电力调度指令传输

3. TongEASY(分布式事务中间件)

定位:XA协议增强型事务协调器核心特性:

最大努力型事务补偿两阶段提交优化事务日志加密存储

4. TRedis(分布式缓存)

定位:国产化Redis替代方案差异化能力:

国密算法支持(SM2/SM3/SM4)多级缓存自动降级审计日志合规输出

5. TongRDS(分布式数据库中间件)

定位:数据库分库分表解决方案核心功能:

SQL解析路由读写分离分布式唯一ID生成

二、典型中间件对接实现

1. TongWeb应用部署(SpringBoot集成)

// 部署描述文件tongweb.xml

jdbc/primaryDS

javax.sql.DataSource

Container

// 数据源配置(JNDI获取)

@Configuration

public class TongWebConfig {

@Bean(destroyMethod = "close")

public DataSource dataSource() throws NamingException {

return (DataSource) new InitialContext().lookup("java:comp/env/jdbc/primaryDS");

}

}

// 启动类适配

@SpringBootApplication

public class App extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

return builder.sources(App.class);

}

}

2. TongLINK/Q消息收发(JMS规范实现)

// 消息生产者

public class TLQProducer {

public void sendMessage(String msg) throws JMSException {

ConnectionFactory factory = new TongLINKQConnectionFactory("tcp://10.0.0.1:61616");

Connection conn = factory.createConnection("admin", "Encrypted@Pass");

Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);

Queue queue = session.createQueue("GOV.REQUEST.QUEUE");

MessageProducer producer = session.createProducer(queue);

TextMessage message = session.createTextMessage(msg);

producer.send(message);

conn.close();

}

}

// 消息消费者(监听模式)

@JmsListener(destination = "GOV.RESPONSE.QUEUE")

public void onMessage(Message message) {

if (message instanceof TextMessage) {

try {

String text = ((TextMessage) message).getText();

processResponse(text);

} catch (JMSException e) {

log.error("消息处理异常", e);

}

}

}

3. TongEASY分布式事务管理

// 事务管理器配置

@Bean

public PlatformTransactionManager transactionManager() {

TongEasyTransactionManager tm = new TongEasyTransactionManager();

tm.setXidGenerator(new SnowflakeXidGenerator());

return tm;

}

// 跨库事务操作

@Transactional(rollbackFor = Exception.class)

public void crossDBOperation() {

// 操作Oracle数据库

jdbcTemplateOracle.update("UPDATE account SET balance = balance - 100 WHERE id = 1");

// 操作达梦数据库

jdbcTemplateDameng.update("UPDATE inventory SET stock = stock - 1 WHERE product_id = 1001");

}

4. TongRDS分库分表示例

// 分片策略配置

public class OrderShardingAlgorithm implements PreciseShardingAlgorithm {

@Override

public String doSharding(Collection availableTargetNames,

PreciseShardingValue shardingValue) {

long orderId = shardingValue.getValue();

return "ds_" + (orderId % 4 / 2); // 分2库

}

}

// SQL执行(自动路由)

public List getOrdersByUserId(Long userId) {

String sql = "SELECT * FROM t_order WHERE user_id = ?";

return jdbcTemplate.query(sql, new OrderRowMapper(), userId);

}

三、对接注意事项

1. 安全合规配置

# TongWeb安全加固配置

security.ciphers=TLS_ECDHE_SM4_SM3

security.clientAuth=true

security.ocspEnable=true

# TRedis国密支持

tredis.security.mode=SM4_CBC

tredis.auth.sm2Key=MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE...

2. 性能调优参数

// TongLINK/Q连接池优化

TongLINKQConnectionFactory factory = new TongLINKQConnectionFactory();

factory.setConnectionPoolSize(50);

factory.setSessionCacheSize(200);

factory.setRedeliveryPolicy(new RedeliveryPolicy() {{

setMaximumRedeliveries(3);

setInitialRedeliveryDelay(5000);

}});

3. 故障排查工具

# TongWeb线程分析

$TW_HOME/bin/twadmin.sh dump_threads

# TRedis慢查询日志

tredis-cli --slowlog get 10

四、最佳实践建议

渐进式迁移策略:

通过流量镜像验证中间件兼容性使用双写模式保障数据一致性建立熔断降级机制

监控体系建设:

// 自定义健康检查端点

@Component

public class TongWebHealthIndicator implements HealthIndicator {

@Override

public Health health() {

return Health.up()

.withDetail("activeSessions", getSessionCount())

.withDetail("jdbcPoolUsage", getConnectionPoolUsage())

.build();

}

}

自动化测试方案:

// 中间件兼容性测试框架

@RunWith(SpringRunner.class)

@SpringBootTest

@TestPropertySource(properties = {

"tongweb.datasource.jndi-name=jdbc/testDS",

"tredis.mode=cluster"

})

public class MiddlewareCompatibilityTest {

@Autowired

private BusinessService service;

@Test

public void testCrossMiddlewareOperation() {

service.executeComplexTransaction();

// 验证数据库与缓存一致性

}

}

通过以上技术方案,可构建符合信创要求的国产化中间件技术栈。实际实施时建议:

优先在非核心业务试点验证建立厂商支持快速响应通道制定中间件专项应急预案定期进行国产化组件攻防演练