暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

东方通中间件 TongWeb 8 与金仓数据库 KES V8R6/V9 适配

原创 严少安 2025-06-25
321

在当今数字化时代,三大基础软件(操作系统、数据库、中间件)的适配工作至关重要,只有它们协同工作,才能更好地为各类业务提供稳定、高效的服务。本文将详细介绍如何使用 ISO 安装介质部署金仓数据库 KingbaseES V8R6,如何利用容器镜像快速部署金仓数据库 KingbaseES V9,以及如何在东方通中间件 TongWeb 8 中将这两种版本的金仓数据库配置为可用的数据源。

东方通 TongWeb 介绍

东方通中间件 TongWeb 是一款功能强大的应用服务器软件,广泛应用于各个行业。它具有高度的可靠性和稳定性,能够支持大规模、高并发的应用场景,为企业级应用提供了坚实的运行基础。TongWeb 支持多种操作系统平台,与多种数据库具备良好的兼容性,通过提供丰富的开发接口和工具,方便开发者快速构建和部署各类应用程序,是连接应用程序与基础资源的关键纽带。

在保险行业中,中间件发挥着至关重要且多维度的作用。它能实现核心业务系统、客户关系管理系统、理赔系统等不同系统之间的无缝集成,打破信息孤岛,以标准化方式交互协作,提高系统集成性。面对保险业务的高峰值性和高并发性,中间件负载均衡(如 TongHttpServer)、消息队列(如 TongLINK/Q)等功能可提高系统吞吐量、响应速度与可靠性,保障业务连续性。同时,它提供通用功能和服务,简化开发流程,提升效率,且便于系统统一管理和监控,降低开发维护成本。此外,中间件支持微服务架构等新兴模式(东方通 TongWeb 已支持容器化部署),赋予保险行业系统良好的扩展性和优化空间,助力快速响应市场变化,推出新保险产品和服务,增强业务灵活性与创新能力。

金仓数据库 KingbaseES 介绍

金仓数据库 KingbaseES 是一款自主研发的国产数据库管理系统,以其高性能、高可用性和高安全性著称。它具备强大的事务处理能力,能够满足复杂业务场景下的数据存储和查询需求。KingbaseES 采用了先进的数据库内核技术,在数据存储、索引管理、查询优化等方面表现出色,能够有效提升数据处理效率。同时,它还提供了完善的安全机制,保障数据的完整性、保密性和可用性,适用于政府、金融、电信等多个关键行业领域。

以保险行业为例,因其数据敏感性需国产数据库保障安全自主可控,同时金仓数据库在性能稳定性、成本效益、国产软硬件生态适配及技术支持等方面具优势。金仓数据库在新华保险的关键系统中表现出色,降低总控成本,性能媲美国外产品;在大地保险的某核心系统升级中,通过“一站式迁移平替”方案实现业务数据“轻装”迁移,显著降低迁移难度与成本。

金仓数据库 KES V8R6 安装

首先,我们使用 ISO 安装介质来部署金仓数据库 KingbaseES V8R6。金仓数据库的安装之前已经介绍过很多次,可以参考一文了解金仓数据库 KES 的 SQL Server 兼容性,以下是主要安装步骤。

  1. 挂载 ISO 镜像,执行安装命令。
[shawnyan@rl9 cdrom]$ ls
setup  setup.sh
[shawnyan@rl9 cdrom]$ ./setup.sh
Now launch installer...
Preparing to install
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...

===============================================================================
KingbaseES V8                                    (created with InstallAnywhere)
-------------------------------------------------------------------------------

Preparing CONSOLE Mode Installation...
...
===============================================================================
Installation Complete
---------------------

Congratulations. KingbaseES V8 has been successfully installed to:

/opt/Kingbase/ES/V8

If you want to register KingbaseES V8 as OS service, please run

    /opt/Kingbase/ES/V8/install/script/root.sh

PRESS <ENTER> TO EXIT THE INSTALLER:
Complete.
  1. 安装完成后,我们启动数据库。

  2. 使用客户端连接到数据库,并创建测试库和测试用户。

[shawnyan@rl9 ~]$ ksql
Type "help" for help.

kingbase=# create database testdb;
CREATE DATABASE
kingbase=# create user appuser password 'appuser';
CREATE ROLE
kingbase=# grant all privileges on database testdb to appuser;
GRANT
  1. 尝试用新用户测试连接。
[shawnyan@rl9 ~]$ ksql -U appuser -W -d testdb -h localhost -p54321
Password:
Type "help" for help.

testdb=> \conninfo
You are connected to database "testdb" as user "appuser" on host "localhost" (address "::1") at port "54321".

kingbase=# select version();
                                                       version
----------------------------------------------------------------------------------------------------------------------
 KingbaseES V008R006C009B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)

testdb=> \l testdb
                              List of databases
  Name  | Owner  | Encoding |   Collate   |    Ctype    | Access privileges
--------+--------+----------+-------------+-------------+--------------------
 testdb | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/system        +
        |        |          |             |             | system=CTc/system +
        |        |          |             |             | appuser=CTc/system
(1 row)

金仓数据库 KES V9 容器镜像

上面介绍了如何使用 ISO 安装介质部署金仓数据库,接下来我们尝试用容器镜像拉起 KES 数据库。对于开发者来说,使用镜像更加方便、便捷。

从金仓数据库官方网站下载容器镜像,上传本地服务器后,导入镜像。

[shawnyan@rl9 ~]$ podman load -i KingbaseES_V009R001C002B0014_x86_64_Docker.tar
Getting image source signatures
...
Copying config 5666f1d53e done   |
Writing manifest to image destination
Loaded image: localhost/kingbase_v009r001c002b0014_single_x86:v1
[shawnyan@rl9 ~]$ podman images
REPOSITORY                                       TAG         IMAGE ID      CREATED      SIZE
localhost/kingbase_v009r001c002b0014_single_x86  v1          5666f1d53e3f  4 weeks ago  744 MB

使用镜像拉起容器,指定映射宿主机的端口号为 54322 以区别于刚才安装的 KES V8R6 版本。这里还指定了数据库的兼容模式为 MySQL。

podman run -dit \
--name kes_mysql \
-p 54322:54321 \
-e DB_USER=kingbase \
-e DB_PASSWORD=123456 \
-e DB_MODE=mysql \
5666f1d53e3f /usr/sbin/init

连接到数据库,并创建测试库和测试用户。

[shawnyan@rl9 ~]$ podman exec -it kes_mysql ksql -U kingbase
Type "help" for help.

kingbase=# \conninfo
You are connected to database "kingbase" as user "kingbase" via socket in "/tmp" at port "54321".
kingbase=# create database testdb;
CREATE DATABASE
kingbase=# create user appuser password 'appuser';
CREATE ROLE
kingbase=# grant all privileges on database testdb to appuser;
GRANT

使用测试用户连接到数据库,查看版本号为 KES V9,数据库模式为 mysql

[shawnyan@rl9 ~]$ ksql -U appuser -W -d testdb -h localhost -p54322
Password:
Type "help" for help.

testdb=> \conninfo
You are connected to database "testdb" as user "appuser" on host "localhost" (address "127.0.0.1") at port "54322".
testdb=> select version();
                                                       version
----------------------------------------------------------------------------------------------------------------------
 KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)

testdb=> show database_mode;
 database_mode
---------------
 mysql
(1 row)

到此,我们已经安装了金仓数据库 KES V8R6 和 V9 两个版本。接下来,我们介绍东方通中间件 TongWeb 的安装使用。

安装东方通中间件 TongWeb 8

在安装东方通中间件 TongWeb 8 之前,需要确保系统已安装合适的 Java 环境。TongWeb 8 支持 JDK 8 - 21,生产环境建议使用 OpenJDK 或 TongJDK,且需使用 JDK 而非 JRE,仅安装 JRE 无法满足 TongWeb 的全部功能。

[shawnyan@rl9 ~]$ java -version
openjdk version "1.8.0_452"
OpenJDK Runtime Environment (build 1.8.0_452-b09)
OpenJDK 64-Bit Server VM (build 25.452-b09, mixed mode)

将 TongWeb 安装包和授权文件上传到服务器,并将安装包进行解压。

[shawnyan@rl9 ~]$ tar zxf TongWeb8.0.9.01.tar.gz
[shawnyan@rl9 ~]$ cd TongWeb8.0.9.01
[shawnyan@rl9 TongWeb8.0.9.01]$ ll
total 98804
drwxr-xr-x 3 shawnyan shawnyan      4096 Jun 13 13:39 bin
drwxr-xr-x 3 shawnyan shawnyan        21 Jun 13 13:39 domains
drwxr-xr-x 5 shawnyan shawnyan        49 Jun 13 13:39 lib
-rw-r--r-- 1 shawnyan shawnyan      1980 Jun 24 18:51 license.dat
-rw-r--r-- 1 shawnyan shawnyan 101167013 Jun 13 14:33 version8.0.9.01.zip

在启动 TongWeb 前,可以先上传金仓数据库的 JDBC 驱动,上传到 lib 目录 TW 可以自行识别。

[shawnyan@rl9 lib]$ pwd
/home/shawnyan/TongWeb8.0.9.01/lib
[shawnyan@rl9 lib]$ ls
app  compatible  kingbase8-8.6.0.jar  system

启动 TongWeb 服务,第一次启动会进行初始化操作,耗时稍长。

[shawnyan@rl9 TongWeb8.0.9.01]$ ./bin/startserver.sh

服务启动后,访问控制台 (https://localhost:9060/console),初始用户名和密码为:thanos/thanos123.com

tw81.png

TongWeb 8 配置 KES V8R6 数据源

KingbaseES JDBC 提供了 JAVA 的 JDBC 驱动程序 kingbase8jdbc,它支持 SUN JDBC 3.0 和 部分 4.0 API 的标准。通过 JDBC 接口对象,应用程序可以完成与数据库的连接、执行 SQL语句、从数据库中获取结果、状态及错误信息、终止事务和连接等操作。

在 TongWeb 控制台中,选择【Web容器】->【数据源】,创建新数据库。

tw82.png

【数据库连接方式】选择【Kingbase8】,填写数据库连接信息。

保存后,如果连接正常,【已验证】会显示为绿色的 true,点击【测试】按钮将提示【数据源测试成功】。

到这里,金仓数据库 KES V8R6 的数据源就配置完成。

为了更好地监控和排查问题,可以修改金仓数据库的日志参数,将更多日志记录到文件中。例如,在kingbase.conf 文件中配置如下参数:

[shawnyan@rl9 data]$ grep '^log_' kingbase.conf
log_destination = 'csvlog'              # Valid values are combinations of
log_connections = on
log_disconnections = on
log_duration = on
log_error_verbosity = default           # terse, default, or verbose messages
log_hostname = on
log_line_prefix = '%t:%r:[%l-1] %h:%u@%d:[%p]:%e'
log_statement = 'all'                   # none, ddl, mod, all
log_timezone = 'Asia/Shanghai'
[shawnyan@rl9 data]$

从日志输出中可以看到 TongWeb 向 KES 发送的心跳监测。

2025-06-25 00:34:05.173 CST,,,13859,"localhost:27244",685ad37d.3623,1,"",2025-06-25 00:34:05 CST,,0,LOG,00000,"connection received: host=localhost port=27244",,,,,,,,,""
2025-06-25 00:34:05.183 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,2,"authentication",2025-06-25 00:34:05 CST,7/7,0,LOG,00000,"connection authorized: user=appuser database=testdb application_name=Kingbase8 JDBC Driver",,,,,,,,,""
2025-06-25 00:34:05.200 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,3,"PARSE",2025-06-25 00:34:05 CST,7/8,0,LOG,00000,"duration: 15.583 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.202 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,4,"BIND",2025-06-25 00:34:05 CST,7/8,0,LOG,00000,"duration: 1.402 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.202 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,5,"SELECT",2025-06-25 00:34:05 CST,7/8,0,LOG,00000,"execute <unnamed>: select name,setting from pg_settings where name = 'kdb_flashback.db_recyclebin' or name='database_mode' or name='ora_input_emptystr_isnull'",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.203 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,6,"SELECT",2025-06-25 00:34:05 CST,7/8,0,LOG,00000,"duration: 1.313 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.204 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,7,"PARSE",2025-06-25 00:34:05 CST,7/9,0,LOG,00000,"duration: 0.486 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.205 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,8,"BIND",2025-06-25 00:34:05 CST,7/9,0,LOG,00000,"duration: 0.967 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.205 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,9,"SELECT",2025-06-25 00:34:05 CST,7/9,0,LOG,00000,"execute <unnamed>: select * from pg_type where typname='rowid'",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.205 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,10,"SELECT",2025-06-25 00:34:05 CST,7/9,0,LOG,00000,"duration: 0.087 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.206 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,11,"PARSE",2025-06-25 00:34:05 CST,7/10,0,LOG,00000,"duration: 0.053 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.206 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,12,"BIND",2025-06-25 00:34:05 CST,7/10,0,LOG,00000,"duration: 0.008 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.206 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,13,"SET",2025-06-25 00:34:05 CST,7/10,0,LOG,00000,"execute <unnamed>: SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.206 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,14,"SET",2025-06-25 00:34:05 CST,7/10,0,LOG,00000,"duration: 0.068 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.207 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,15,"PARSE",2025-06-25 00:34:05 CST,7/11,0,LOG,00000,"duration: 0.014 ms",,,,,,,,,"Kingbase8 JDBC Driver"
2025-06-25 00:34:05.207 CST,"appuser","testdb",13859,"localhost:27244",685ad37d.3623,16,"BIND",2025-06-25 00:34:05 CST,7/11,0,LOG,00000,"duration: 0.003 ms",,,,,,,,,"Kingbase8 JDBC Driver"

TongWeb 8 配置 KES V9 数据源

对于 KES V9 数据源的配置,首先需要准备 KinbaseES V9 的 JDBC 驱动包,并上传到服务器。通过以下命令可查看驱动版本信息。

[shawnyan@rl9 lib]$ java -jar kingbase8-9.0.0.jar -v

Kingbase8 JDBC Driver V009R001C001B0030PSC001 is based on 191baa85 at 2024-07-08 16:37:57.
Found in: jar:file:/home/shawnyan/TongWeb8.0.9.01/lib/kingbase8-9.0.0.jar!/com/kingbase8/Driver.class

将 KES V9 的驱动移动到 TW 的 lib 目录下,并重启 TW 服务使其生效。

[shawnyan@rl9 TongWeb8.0.9.01]$ ./bin/stopserver.sh
2025-06-25 02:12:25 >>> Stopping server ...
2025-06-25 02:12:27 >>> Server stopped.
[shawnyan@rl9 TongWeb8.0.9.01]$ ./bin/startserver.sh
2025-06-25 02:12:35 [INFO] - Server Info:        TongWeb
2025-06-25 02:12:35 [INFO] - Server Version:     8.0.9.01
2025-06-25 02:12:35 [INFO] - Server Mode:        Enterprise
2025-06-25 02:12:35 [INFO] - Server Package:     javax
2025-06-25 02:12:35 [INFO] - Server instance:    domain1
2025-06-25 02:12:35 [INFO] - Create Connector port [9060]
2025-06-25 02:12:35 [INFO] - Create Connector port [8088]

再次登录 TW 控制台,这次我们可以自定义创建【JDBC模板】,这里创建一个名称为【KingbaseES_V9】的驱动模板。

tw83.png

创建数据源,【数据库连接方式】选择刚刚创建的【KingbaseES_V9】模板。

tw84.png

填入数据库连接信息。

tw85.png

最后,确认 KES V9 的数据源也配置成功。

tw86.png

总结

通过本文的详细介绍,我们掌握了金仓数据库 KES V8R6 和 V9 两个大版本的安装部署方法,包括传统的 ISO 安装介质部署以及便捷的容器镜像部署方式。同时,也熟悉了东方通中间件 TongWeb 8 的安装流程,并成功将其与金仓数据库配置为可用的数据源。希望本文的内容能为读者在学习和使用东方通中间件 TongWeb 以及金仓数据库时提供有力的参考,助力大家在项目开发和运维过程中更加得心应手。

东方通产品认证中级工程师 TCIE

✨东方通中级认证报名正在火热进行中~
📅 报名截止时间为6月25日,倒计时已开启,千万别错过啦!
💥 限时优惠同步来袭:
✅ 现报名立享拼团价 2025 元,年度超值福利!
✅ 持有初级证书者可再减 100 元,双重优惠叠加更划算~

抓紧最后时机锁定名额,备考资料已备好,报名即可开启学习通道!如有疑问,欢迎随时沟通~🚀

#东方通软件学堂 是东方通旗下教育品牌,主要依托公司自身产业及信息技术应用创新背景,和上下游生态伙伴,为行业用户提供培训服务,与高校构建校企共同体,促进校企协同育人,助力东方通人才供给与发展战略,是人才生态建设的平台。

深入MySQL:开发运维实战训练营

一门专为开发者和运维人员设计的 MySQL 实战课,教你搞定安装、调优、事务、等常见问题,从“写 SQL”到“懂原理、会优化”,一步进阶;同步赠送 MySQL OCP 909 模拟题库,实战提升的同时,也能为认证做好准备!

Have a nice day ~


🌻 往期精彩 ▼

– / END / –

👉 这里可以找到我

👉 这里有得聊

如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:#少安事务所,后台回复[群],即可看到入口。

如果这篇文章为你带来了灵感或启发,请帮忙『三连』吧,感谢!ღ( ´・ᴗ・` )~

最后修改时间:2025-06-25 15:23:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论