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,将收到的消息逐一分发到对应会话的消息队列中,再由会话的工作线程进行处理。

数据与控制消息分离

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

相关文章
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
9月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
370 6
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1324 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
12月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
644 0
中国联通网络资源湖仓一体应用实践
|
8月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
692 11
|
SQL 测试技术 数据库
【YashanDB知识库】IMP跨网络导入慢问题
【YashanDB知识库】IMP跨网络导入慢问题
|
9月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
464 0
|
9月前
|
安全 Linux
利用Libevent在CentOS 7上打造异步网络应用
总结以上步骤,您可以在CentOS 7系统上,使用Libevent有效地构建和运行异步网络应用。通过采取正确的架构和代码设计策略,能保证网络应用的高效性和稳定性。
228 0
|
12月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
424 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析