YashanDB应用程序与网络体系

简介: YashanDB应用程序与网络体系

程序接口
程序接口是应用程序与数据库的必要纽带,是数据库提供给数据库应用程序使用的,可以访问操作数据库的软件层。程序接口具备以下能力:

简化数据库操作,通过简单的函数调用完成复杂的数据库操作。

跨机器访问,能解决不同机器间数据格式转换及数据交换。

按照YashanDB通讯协议,将应用程序的请求发往数据库实例,同时将数据库实例的回应返回给应用程序。

数据库驱动

数据库驱动是应用程序和数据库服务之间的一种接口,可以将特定开发语言的操作,翻译为数据库服务能识别的指令,同时将数据库服务的回应和数据翻译为该语言能使用的数据结构和数据内容。

YashanDB提供JDBC、C、Python、ADO.NET、ODBC等各类驱动,满足业界通用的各类应用程序开发。

JDBC:JDBC是java连接数据库技术的统称,YashanDB根据Java的JDBC规范(接口),提供了使用java语言访问YashanDB的能力。

C驱动:提供了通过C应用程序连接和操作数据库的接口(C API)。

Python驱动:是一个支持Python DB API协议 (opens new window)的Python拓展模块(yaspy),该模块可使通用Python应用程序直接连接YashanDB数据库。

ADO.NET驱动:用于.NET语言的核心数据访问技术。YashanDB ADO.NET驱动使用Yashandb.Data.YashandbClient命名空间,实现了ADO.NET的大部分类和接口,使得.NET的应用程序可通过ADO.NET的方式访问和操作YashanDB数据库数据。

ODBC驱动:ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库,这些API利用SQL来完成其大部分任务。

网络体系

YashanDB的网络服务提供客户端与数据库服务间,以及数据库服务与数据库服务间的连接通讯能力。在正式的数据库使用环境中,包括应用程序、数据库服务实例,通常都运行在不同的计算机上。通过YashanDB的网络服务,应用程序可以连接到数据库实例上进行操作,数据库实例间也可以完成数据同步和内部任务协同等。

客户端连接会话

客户端通常通过数据库提供的驱动接口连接数据库服务。数据库服务的实例先启动到可以正常提供服务阶段,客户端获取到数据库服务的通讯地址后,通过驱动接口连接到数据库服务的连接监听器上。

连接监听器

连接监听器是数据库实例内部的一个工作线程,专门处理客户端来的连接请求。

连接监听器的处理内容为:

根据黑白名单甄别客户端连接的合法性。
为客户端连接分配会话。
为客户端连接准备运行资源。
连接监听器为客户端连接分配好会话后,由会话来负责后续与客户端会话交互通讯,连接监听器将继续监听下一个客户端连接请求。

独占线程会话模式

在独占线程会话模式下,连接监听器将为每个客户端连接创建一个独立的工作线程(Worker),专门为该客户端连接会话服务。客户端发送的每个请求都会得到快速响应,只有会话断连时,对应的工作线程才会被销毁。

通过配置参数MAX_REACTOR_CHANNELS可以控制系统的会话模式,值为0时表示独占线程模式。

独占线程模式下,工作线程只能被一个会话连接使用,在没有请求需要处理时,线程进入等待。新连接被接入时,处于等待状态的工作线程也不能为新的连接服务,而是需要重新创建新的线程来处理。连接较少时独占线程会话模式性能优势明显,但在会话连接较多时,独占线程模式会占用大量的运行资源,从而导致需要处理的任务因为没有足够多的运行资源而需要更多的时间来执行,间接影响到数据库服务的性能。

共享线程会话模式

共享线程会话模式下,系统以线程池的方式管理工作线程。当有新的客户端连接被接纳后,会从线程池里分出一个空闲线程来处理该会话连接。会话完成后,该线程将回到线程池中,等待新的客户端会话连接。

配置参数MAX_REACTOR_CHANNELS为非0值时,系统为共享线程会话模式。

客户端连接会话数达到会话线程池配置MAX_WORKERS后,可能会出现线程池中所有线程都被使用的情况。如果此时有新的客户连接请求被接入,则需要排队等待,直到有会话完成了事务操作并释放线程后,按顺序获得会话线程并完成请求处理。

共享线程会话模式有以下优点:

减少线程数量,运行资源可以轮流执行请求而不是独占空等。
减少了工作线程处理请求所需要的内存资源。
扩大了允许同时连接的客户端连接数。
当客户端频繁连接或断连时,共享线程会话模式的性能可能比独占线程会话模式更优。
但共享线程会话模式也存在一些缺点,例如连接会话过多时请求响应可能会变慢;故障排查变得复杂等。建议仅在连接会话相对较多的情况下再考虑开启共享线程会话模式。

主备复制网络

主备复制网络是YashanDB数据库内部主库与备库、备库与级联备库之间进行数据复制的通讯网络,通常用于传送redo日志、数据文件等,使得数据库实例间数据达到一致,方向是从主库发送至备库,或从备库发送至级联备库。

内部互联总线

内部互联总线(IN,Interconnect Bus)是为了解决YashanDB数据库内部大量节点间进行频繁的海量数据通讯的使用场景而构造的高可靠、高性能、高吞吐、低时延的网络通讯服务。

使用场景

内部互联总线主要用于以下场景:

分布式部署中的内部互联总线(DIN,Distributed Interconnect Bus)用于CN节点、DN节点、MN节点之间的网络通讯。
共享集群部署中的内部互联总线(CIN,Cluster Interconnect Bus)用于数据库实例间,YCS实例间,崖山文件系统间的网络通讯。

连接池

内部互联总线采取多路复用技术,支持多个会话共同使用一个或多个网络链路进行通讯。内部互联总线将连接到某一个节点的具有相同通讯功能的一个或多个链路封装在一个连接池中,以池化方式进行管理。内部模块可以根据自身需要,从连接池里选择某个随机链路或特定链路进行消息发送。

消息分发

内部互联总线中每一个链路都有特定的接收监听器线程进行消息接收处理。由于消息通过连接池发送,可能在同一个链路中会存在多个会话的消息,接收监听线程通过消息头中的消息类型及会话ID,将收到的消息逐一分发到对应会话的消息队列中,再由会话的工作线程进行处理。

数据与控制消息分离

由于连接池及内部线程资源的划分,通常将同一个节点的多个连接池规划为多个不同功能的通道,这些通道之间资源隔离、相互不影响。例如控制通道专门进行控制指令的收发,消息小而少,对时延要求高;而数据通道专门进行大量数据的发送,消息大且频繁,对吞吐要求高。
————————————————

相关文章
|
2月前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
67 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
1月前
|
SQL 测试技术 数据库
【YashanDB知识库】IMP跨网络导入慢问题
【YashanDB知识库】IMP跨网络导入慢问题
|
9天前
|
SQL 测试技术 数据库
【YashanDB知识库】IMP跨网络导入慢问题
问题现象:290M数据,本地导入2分钟,跨机导入耗时显著增加(最高30分钟)。 原因分析:`imp`逐条SQL通过网络传输至yashanDB执行,交互频繁导致性能下降。 影响版本:客户测试环境22.2.8.3。 解决方法:将导入文件上传至与yashanDB同机后使用`imp`,减少网络延迟。 经验总结:优化`imp`工具,支持直接上传文件至服务器端执行,降低网络依赖。
|
1月前
|
机器学习/深度学习 数据采集 编解码
基于DeepSeek的生成对抗网络(GAN)在图像生成中的应用
生成对抗网络(GAN)通过生成器和判别器的对抗训练,生成高质量的合成数据,在图像生成等领域展现巨大潜力。DeepSeek作为高效深度学习框架,提供便捷API支持GAN快速实现和优化。本文详细介绍基于DeepSeek的GAN技术,涵盖基本原理、实现步骤及代码示例,展示其在图像生成中的应用,并探讨优化与改进方法,如WGAN、CGAN等,解决模式崩溃、训练不稳定等问题。最后,总结GAN在艺术创作、数据增强、图像修复等场景的应用前景。
247 16
|
2月前
|
机器学习/深度学习 编解码 自动驾驶
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
130 16
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
1月前
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
|
2月前
|
机器学习/深度学习 数据采集 运维
机器学习在网络流量预测中的应用:运维人员的智慧水晶球?
机器学习在网络流量预测中的应用:运维人员的智慧水晶球?
143 19
|
2月前
|
机器学习/深度学习 数据可视化 API
DeepSeek生成对抗网络(GAN)的训练与应用
生成对抗网络(GANs)是深度学习的重要技术,能生成逼真的图像、音频和文本数据。通过生成器和判别器的对抗训练,GANs实现高质量数据生成。DeepSeek提供强大工具和API,简化GAN的训练与应用。本文介绍如何使用DeepSeek构建、训练GAN,并通过代码示例帮助掌握相关技巧,涵盖模型定义、训练过程及图像生成等环节。
|
2月前
|
SQL 测试技术 数据库
【YashanDB 知识库】IMP 跨网络导入慢问题
**问题现象**:290M 数据在同一机器本地导入耗时2分钟,本机IP连接4分钟,跨机器17分钟,客户现场30分钟。**风险及影响**:客户导入慢。**影响版本**:22.2.8.3。**原因**:imp逐条SQL传输至yashanDB,网络延时导致性能下降。**解决方法**:将文件上传至与yashanDB同机后再导入。**经验总结**:优化imp,减少交互次数,提升效率。
|
1月前
|
SQL Java 数据库连接
【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢
由于网络带宽不足导致的jdbc向yashandb插入数据慢