写点什么

YashanDB 应用程序与网络体系

作者:YashanDB
  • 2025-02-18
    广东
  • 本文字数:2620 字

    阅读完需:约 9 分钟

本文内容来自 YashanDB 官网,原文内容请见https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%E6%89%8B%E5%86%8C/%E5%AE%9E%E4%BE%8B%E6%9E%B6%E6%9E%84/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%8E%E7%BD%91%E7%BB%9C%E4%BD%93%E7%B3%BB.html

程序接口

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

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

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

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

#数据与控制消息分离

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

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB应用程序与网络体系_数据库_YashanDB_InfoQ写作社区