猿创征文 | 国产数据库之PolarDB-X数据库详解安装和使用

news/2024/4/29 6:01:30/文章来源:https://blog.csdn.net/flq18210105507/article/details/127240275

文章目录

  • 1、PolarDB-X是什么?
  • 2、PolarDB-X架构
  • 3、PolarDB-X架构优势
  • 4、PolarDB-X核心特性
  • 5、PolarDB-X部署
    • 5.1、通过PXD部署集群
    • 5.2、通过 K8S 部署
    • 5.3、通过编译安装

1、PolarDB-X是什么?

PolarDB-X是由阿里巴巴自主研发的云原生分布式数据库,融合分布式SQL引擎DRDS与分布式自研存储X-DB,基于云原生一体化架构设计,可支撑千万级并发规模及百PB级海量存储。专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈问题,历经各届天猫双十一及阿里云各行业客户业务的考验,助力企业加速完成业务数字化转型。

PolarDB-X核心能力通过标准关系型数据库技术实现,配合完善的管控运维及产品化能力,使其具备稳定可靠、高度可扩展、持续可运维、类传统单机MySQL数据库体验的特点。

PolarDB-X在公共云和专有云环境沉淀打磨多年,历经各届天猫双十一核心交易业务及各行业阿里云客户业务的考验。承载大量用户核心在线业务,横跨互联网、金融支付、教育、通信、公共事业等行业,是阿里巴巴集团内部所有在线核心业务及众多阿里云客户业务接入分布式数据库的事实标准。

2、PolarDB-X架构

在这里插入图片描述
核心组件

  • 元数据服务(Global Meta Service,GMS),主要提供分布式的元数据,提供全局授时服务(TSO)、维护Table/Schema、Statistic等Meta信息、维护账号、权限等安全信息。
  • 计算节点(Compute Node,CN),主要提供分布式SQL引擎,包含核心的优化器和执行器。基于无状态的SQL引擎提供分布式路由和计算,解决分布式事务2PC协调、分布式DDL执行、全局索引维护等。
  • 存储节点 (Data Node,DN),主要提供数据存储引擎,基于多数派Paxos共识协议提供高可靠存储、分布式事务的MVCC多版本存储,另外提供计算下推能力满足分布式的计算下推要求(比如Project/Filter/Join/Agg等下推计算),可支持本地盘和共享存储。
  • 日志节点(Change Data Capture,CDC),主要提供兼容MySQL生态的主备复制协议,兼容Binlog协议和数据格式、支持主备复制Replication的协议和交互。

如同大多数传统单机关系型数据库,PolarDB-X分为网络层、SQL解析层、优化层、执行层、存储层,其中优化层包含逻辑优化和物理优化,执行层包含单机两阶段执行、单机并行执行和多机并行执行,存储层包含应用了多种传统单机数据库优化和执行技术。

3、PolarDB-X架构优势

  • 高可用

    经过阿里多年双十一验证的X-DB(X-Paxos共识协议能力),提供数据强一致,保证节点故障切换时RPO=0。另外支持多样化的部署和容灾能力,比如基于Paxos强同步的同城三机房、三地五中心,另外搭配binlog异步复制的两地三中心、异地灾备、异地多活等。尤其在异地长距离传输上,基于Batching & Pipelining 进行网络优化来提升性能。

  • 高兼容

    PolarDB-X主要兼容MySQL,包括SQL、函数类型等,技术上引入全局时间授时服务,提供全局一致性的分布式事务能力,通过TSO+2PC提供数据库完整的ACID能力,满足分布式下的Read-Committed/Repeatable-Read的隔离级别。同时在分布式事务的基础上,提供全局二级索引能力,通过事务多写保证索引和主表数据强一致的同时,引入基于代价的CBO优化器实现索引选择。除此以外,在元数据和生态对接层面,PolarDB-X基于Online DDL的技术提供了分布式下元数据的一致性。同时硬件层面,兼容主流国产操作系统和芯片认证,比如麒麟、鲲鹏、海光等。

    另外在业界主流的分布式数据库里,分布式下的redolog/binlog等数据库变更日志其实一直被厂商所忽视,从关系数据库的发展历史来看,生态和标准对于市场规模化非常重要,PolarDB-X支持全局binlog能力,兼容和拥抱MySQL数据库生态,用户可以将PolarDB-X当做一个MySQL库,采用标准的binlog dump协议获取binlog日志。

  • 高扩展

    PolarDB-X基于Share-Nothing的架构支持水平扩展,同时支持数据库在线扩缩容能力,在OLTP场景下可支持千万级别的并发、以及PB级别的数据存储规模,同样在OLAP场景下,引入MPP并行查询技术,扩展机器后查询能力可线性提升,满足TPC-H等的复杂报表查询诉求。

  • HTAP

    随着移动互联网和Iot设备的普及,数据会产生爆炸式的增长趋势,传统的OLTP和OLAP的解决方案是基于简单的读写分离或者ETL模型,将在线库的数据T+1的方式抽取到数据仓库中进行计算,这种方案存在存储成本高、实时性差、链路和维护成本高等缺陷。PolarDB-X设计中支持OLTP和OLAP的混合负载的能力,可以在一个实例里同时运行TPC-C和TPC-H的benchmark测试,保证AP的查询不影响TP流量的稳定性。核心技术层面,也有所创新,比如我们会在计算层精确识别出TP和AP的流量,结合多副本的特性和多副本的一致性读能力,智能将TP和AP路由到不同的副本上,同时在AP链路上默认开启MPP并行查询技术,从而在满足隔离性的基础上,线性提升AP的查询能力。在存储层上,我们也在完善计算下推能力,未来也会提供高性能列存引擎,实现行列混合的HTAP能力。

  • 极速弹性

    PolarDB-X结合PolarDB云原生的技术,可以基于PolarDB的共享存储+RDMA网络优化能力,提供秒级备份、极速弹性、以及存储按需扩展的能力。基于共享存储的基础上,结合分布式的多点写入能力,可以在不迁移数据的前提下提供秒级弹性的能力,给到用户完全不一样的弹性体验。

  • 开放生态

    PolarDB-X全面拥抱和坚定MySQL的开源生态,做到代码完全自主可控的同时满足分布式MySQL的兼容性,架构做到简单开放,只要具备一定MySQL背景的人员即可完成持续运维。除此以外,PolarDB-X和阿里云的数据库生态有完整的闭环对接,支持如DTS/DBS/DMS等,可打通阿里云的整个大生态。

4、PolarDB-X核心特性

  • 水平扩展

    PolarDB-X 采用 Shared-nothing 架构进行设计,支持多种 Hash 和 Range 数据拆分算法,通过隐式主键拆分和数据分片动态调度,实现系统的透明水平扩展。

  • 分布式事务

    PolarDB-X 采用 MVCC + TSO 方案及 2PC 协议实现分布式事务。事务满足 ACID 特性,支持 RC/RR 隔离级别,并通过一阶段提交、只读事务、异步提交等优化实现事务的高性能。

  • 混合负载

    PolarDB-X 通过原生 MPP 能力实现对分析型查询的支持,通过 CPU quota 约束、内存池化、存储资源分离等实现了 OLTP 与 OLAP 流量的强隔离。

  • 企业级

    PolarDB-X 为企业场景设计了诸多内核能力,例如 SQL 限流、SQL Advisor、TDE、三权分立、Flashback Query 等。

  • 云原生

    PolarDB-X 在阿里云上有多年的云原生实践,支持通过 K8S Operator 管理集群资源,支持公有云、混合云、专有云等多种形态进行部署,并支持国产化操作系统和芯片。

  • 高可用

    通过多数派 Paxos 协议实现数据强一致,支持两地三中心、三地五副本等多种容灾方式,同时通过 Table Group、Geo-locality 等提高系统可用性。

  • 兼容 MySQL 系统及生态

    PolarDB-X 的目标是完全兼容 MySQL ,目前兼容的内容包括 MySQL 协议、MySQL 大部分语法、Collation、事务隔离级别、Binlog 等。

5、PolarDB-X部署

5.1、通过PXD部署集群

1、准备工作

通过 PXD 工具部署 PolarDB-X 数据库需要先安装 Python3 和 Docker。

2、安装 PXD

注意: 推荐使用 virtual environment 安装 PXD 工具

python3 -m venv venv
source venv/bin/activate

安装前建议先执行如下命令升级 pip

pip install --upgrade pip 

执行如下命令安装 pxd:

pip install pxd 

注: 部分国内用户从 pypi 下载包的速度较慢, 可以使用如下命令从阿里云的镜像安装:

pip install -i https://mirrors.aliyun.com/pypi/simple/ pxd

部署 PolarDB-X

  • 直接运行 pxd tryout 命令会创建一个最新版本的 PolarDB-X 数据库,其中 GMS, CN, DN, CDC 节点各 1 个:
 pxd tryout 
  • 您也可以指定 CN,DN, CDC 节点的个数以及版本,命令如下:
 pxd tryout -cn_replica 1 -cn_version latest -dn_replica 1 -dn_version latest -cdc_replica 1 -cdc_version latest 

PolarDB-X 数据库创建完成后,会输出对应的连接信息:
在这里插入图片描述

注意:PolarDB-X 管理员账号的密码随机生成,仅出现这一次,请注意保存。
通过 MySQL Client 即可连接,执行如下 SQL 初步体验 PolarDB-X 的分布式特性。

查看 PolarDB-X 状态
执行如下命令,查看当前环境的 PolarDB-X 列表:

pxd list 

清理 PolarDB-X
执行如下命令,即可清理本地环境所有的 PolarDB-X:

pxd cleanup 

以上就是用PXD在本地部署PolarDB-X 集群的过程。

5.2、通过 K8S 部署

使用 minikube 创建 Kubernetes 集群
minikube 是由社区维护的用于快速创建 Kubernetes 测试集群的工具,适合测试和学习 Kubernetes。使用 minikube 创建的 Kubernetes 集群可以运行在容器或是虚拟机中,本节中以 CentOS 8.2 上创建 Kubernetes 为例。

注:如在其他操作系统例如 macOS 或 Windows 上部署 minikube,部分步骤可能略有不同。

部署前,请确保已经安装 minikube 和 Docker,并符合以下要求:

  • 机器规格不小于 4c8g
  • minikube >= 1.18.0
  • docker >= 1.19.3

minikube 要求使用非 root 账号进行部署,如果你是用 root 账号访问机器,需要新建一个账号。

$ useradd -ms /bin/bash galaxykube 
$ usermod -aG docker galaxykube

如果你使用其他账号,请和上面一样将它加入 docker 组中,以确保它能够直接访问 docker。
使用 su 切换到账号 galaxykube,

$ su galaxykube 

执行下面的命令启动一个 minikube,

minikube start --cpus 4 --memory 7960 --image-mirror-country cn --registry-mirror=https://docker.mirrors.ustc.edu.cn 

注:这里我们使用了阿里云的 minikube 镜像源以及 USTC 提供的 docker 镜像源来加速镜像的拉取。

此时 minikube 已经正常运行。minikube 将自动设置 kubectl 的配置文件,如果之前已经安装过 kubectl,现在可以使用 kubectl 来访问集群:

$ kubectl cluster-infokubectl cluster-infoKubernetes control plane is running at https://192.168.49.2:8443CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

部署 PolarDB-X Operator
开始之前,请确保满足以下前置要求:

  • 已经准备了一个运行中的 Kubernetes 集群,并确保
  • 集群版本 >= 1.18.0
  • 至少有 2 个可分配的 CPU
  • 至少有 4GB 的可分配内存
  • 至少有 30GB 以上的磁盘空间
  • 已经安装了 kubectl 可以访问 Kubernetes 集群
  • 已经安装了 Helm 3

首先创建一个叫 polardbx-operator-system 的命名空间,

$ kubectl create namespace polardbx-operator-system 

执行以下命令安装 PolarDB-X Operator。

$ helm install --namespace polardbx-operator-system polardbx-operator https://github.com/ApsaraDB/galaxy

查看 PolarDB-X Operator 组件的运行情况,等待它们都进入 Running 状态:

$ kubectl get pods --namespace polardbx-operator-systemNAME                                           READY   STATUS    RESTARTS   AGEpolardbx-controller-manager-6c858fc5b9-zrhx9   1/1     Running   0          66spolardbx-hpfs-d44zd                            1/1     Running   0          66spolardbx-tools-updater-459lc                   1/1     Running   0          66s

部署完成!

部署 PolarDB-X 集群
现在我们来快速部署一个 PolarDB-X 集群,它包含 1 个 GMS 节点、1 个 CN 节点、1 个 DN 节点和 1 个 CDC 节点。执行以下命令创建一个这样的集群:

echo "apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:name: quick-startannotations:polardbx/topology-mode-guide: quick-start" | kubectl apply -f -

你将看到以下输出:

polardbxcluster.polardbx.aliyun.com/quick-start created 

使用如下命令查看创建状态:

$ kubectl get polardbxcluster -wNAME          GMS   CN    DN    CDC   PHASE      DISK   AGE
quick-start   0/1   0/1   0/1   0/1   Creating          35s
quick-start   1/1   0/1   1/1   0/1   Creating          93s
quick-start   1/1   0/1   1/1   1/1   Creating          4m43s
quick-start   1/1   1/1   1/1   1/1   Running    2.4 GiB   4m44s

当 PHASE 显示为 Running 时,PolarDB-X 集群已经部署完成!恭喜你,现在可以开始连接并体验 PolarDB-X 分布式数据库了!

5.3、通过编译安装

准备工作
• 下载 GalaxyEngine 代码,main分支
• 下载 GalaxySQL 代码,main分支
• 下载 GalaxyGlue 代码,main分支
• 下载 GalaxyCDC 代码,main分支

编译 PolarDB-X DN (存储节点,代号GalaxyEngine)

此步骤编译和安装GalaxyEngine(mysql)

安装依赖(CentOS7)

yum install cmake3
ln -s /usr/bin/cmake3 /usr/bin/cmake# 安装GCC7yum install centos-release-scl
yum install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile# 安装依赖yum install make automake git openssl-devel ncurses-devel bison libaio-devel

安装依赖(Ubuntu20)

# 安装GCC7apt install -y gcc-7 g++-7
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
update-alternatives --config gcc
gcc --version
g++ --version# 安装依赖apt install make automake cmake git bison libaio-dev libncurses-dev libsasl2-dev libldap2-dev libssl-dev pkg-config

编译

# 进入 galaxyengine 代码路径
cd galaxyengine
# 安装boost1.70 (注:把boost放到仓库里避免下载)
wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.gz
mkdir extra/boost
cp boost_1_70_0.tar.gz extra/boost/
# 编译安装
# 详细参数请参考 https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
cmake .                                 \-DFORCE_INSOURCE_BUILD=ON           \-DCMAKE_BUILD_TYPE="Debug"          \-DSYSCONFDIR="/u01/mysql"           \-DCMAKE_INSTALL_PREFIX="/u01/mysql" \-DMYSQL_DATADIR="/u01/mysql/data"   \-DWITH_BOOST="./extra/boost/boost_1_70_0.tar.gz"
make -j8
make install

编译 PolarDB-X CN (计算节点,代号GalaxySQL)

# 进入CDC代码
# 编译打包
mvn install -D maven.test.skip=true -D env=release 
# 包在/polardbx-cdc-assemble/target/
# 解压运行
tar zxvf polardbx-binlog.tar.gz

编译 PolarDB-X CDC(日志节点,代号GalaxyCDC)
此步骤编译和安装 galaxycdc 代码。

# 进入CDC代码
# 编译打包
mvn install -D maven.test.skip=true -D env=release 
# 包在/polardbx-cdc-assemble/target/
# 解压运行
tar zxvf polardbx-binlog.tar.gz

启动PolarDB-X DN

  • 此步骤启动一个mysql进程,作为metadb和dn
  • 参考附录中的mysql配置文件(my.cnf),可进行相应修改,默认使用 4886 作为 mysql端口,32886 作为私有协议端口
  • 默认使用 /u01/my3306 作为mysql数据目录,可以修改成其他目录

注意:启动 DN 需要使用非 root 账号完成

启动mysql:

mkdir -p /u01/my3306/{data,log,run,tmp,mysql}
/u01/mysql/bin/mysqld --defaults-file=my.cnf --initialize-insecure
/u01/mysql/bin/mysqld --defaults-file=my.cnf

启动PolarDB-X CN
启动mysql进程之后,便可以初始化PolarDB-X,需要准备以下几个配置:

  • metadb user:以下采用 my_polarx
  • metadb database:创建metadb库,以下采用 polardbx_meta_db_polardbx
  • 密码加密key(dnPasswordKey):以下采用 asdf1234ghjk5678
  • PolarDB-X默认用户名:默认为 polarx_root
  • PolarDB-X默认用户密码:默认为 123456,可通过 -S 参数修改

注意:启动 CN 需要使用非 root 账号完成
修改配置文件 conf/server.properties,逐个替换以下配置项:

# PolarDB-X 服务端口
serverPort=8527
# PolarDB-X RPC 端口
rpcPort=9090# MetaDB地址
metaDbAddr=127.0.0.1:4886
# MetaDB私有协议端口
metaDbXprotoPort=32886
# MetaDB用户
metaDbUser=my_polarx
metaDbName=polardbx_meta_db_polardbx
# PolarDB-X实例名
instanceId=polardbx-polardbx

初始化PolarDB-X:

  • -I: 进入初始化模式
  • -P: 之前准备的dnPasswordKey
  • -d: DataNode的地址列表,单机模式下就是之前启动的mysql进程的端口和地址
  • -r: 连接metadb的密码
  • -u: 为PolarDB-X创建的根用户
  • -S: 为PolarDB-X创建的根用户密码
bin/startup.sh \-I \-P asdf1234ghjk5678 \-d 127.0.0.1:4886:32886 \-r "" \-u polardbx_root \-S "123456"

此步骤中会生成内部密码及加密密码,需要将其填写配置文件 conf/server.properties 中,用于后续访问:

Generate password for user: my_polarx && M8%V5%K9^$5%oY0%yC0+&1!J7@8+R6)
Encrypted password: DB84u4UkU/OYlMzu3aj9NFdknvxYgedFiW9z59bVnoc=
Root user for polarx with password: polardbx_root && 123456
Encrypted password for polarx: H1AzXc2NmCs61dNjH5nMvA==
======== Paste following configurations to conf/server.properties ! ======= 
metaDbPasswd=HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=

最后一步,启动PolarDB-X:

bin/startup.sh -P asdf1234ghjk5678 

连接PolarDB-X验证,如果能连上,说明数据库启动成功啦,可以愉快地运行各种SQL啦:

mysql -h127.1 -P8527 -upolardbx_root

启动PolarDB-X CDC
启动PolarDB-X进程之后,便可以初始化PolarDB-X CDC组件,需要准备以下几个配置:

  • metadb user:和启动PolarDB-X时设置的值保持一致,以下采用my_polarx
  • metadb database:和启动PolarDB-X时设置的值保持一致,以下采用 polardbx_meta_db_polardbx
  • metadb password:和启动PolarDB-X时设置的值保持一致,需使用密文,以下采用HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=
  • metadb port:和启动MySQL时设置的值保持一致,以下采用 4886
  • 密码加密key(dnPasswordKey):和启动PolarDB-X时设置的值保持一致,以下采用 asdf1234ghjk5678
  • PolarDB-X用户名:和启动PolarDB-X时设置的值保持一致,以下采用默认值 polardbx_root
  • PolarDB-X用户密码:和启动PolarDB-X时设置的值保持一致,需使用密文,以下采用默认值H1AzXc2NmCs61dNjH5nMvA==
  • PolarDB-X端口:和启动PolarDB-X时设置的值保持一致,以下采用默认值 8527
  • 当前机器分配给CDC使用的内存大小:以下采用16000代指,单位为M,实际配置值请替换为真实值

注意:启动 CDC 需要使用非 root 账号完成

useEncryptedPassword=true
polardbx.instance.id=polardbx-polardbx
mem_size=16000
metaDb_url=jdbc:mysql://127.0.0.1:4886/polardbx_meta_db_polardbx?useSSL=false
metaDb_username=my_polarx
metaDbPasswd=HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=
polarx_url=jdbc:mysql://127.0.0.1:8527/__cdc__
polarx_username=polardbx_root
polarx_password=H1AzXc2NmCs61dNjH5nMvA==
dnPasswordKey=asdf1234ghjk5678
storage.persistBasePath=${HOME}/logs/rocksdb
binlog.dir.path=${HOME}/binlog/

接下来,即可启动CDC daemon进程,命令如下所示。启动之后,通过jps命令查看进程状态,CDC会有3个附属进程,分别是DaemonBootStrap、TaskBootStrap和DumperBootStrap,CDC的系统日志会输出到${HOME}/logs目录下,全局binlog日志会输出到binlog.dir.path参数配置的目录下,TaskBootStrap进程和DumperBootStrap进程被kill后,会被Daemon进程自动拉起。
bin/daemon.sh start

登录PolarDB-X,执行一些DDL或DML操作,然后执行show binary logs 和show binlog events命令,验证全局binlog 的生成状态,enjoy it!
以上就是部署PolarDB-X的三种方法,希望大家都能在本地成功部署体验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_398939.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何修复u盘?不如试试我这3个方法

u盘小小的一个便于我们携带,里面保存着我们很多数据。但是有时我们不小心清空了里面的数据,或者由于其他原因,导致u盘里的文件丢失,甚至出现打不开的局面。这时候该如何修复u盘?为了解答大家的疑惑,小编专门…

docker搭建主从架构和哨兵模式

下文介绍使用docker来创建redis的主从架构和哨兵模式 前提 linux已经下载并安装了docker 从仓库中pull redis的镜像 docker pull redis:latest确保主机中的镜像已经有了刚下载好的redis镜像 docker images架构图 一. docker创建redis的主从架构 1. 先创建一个master节点…

聚观早报 | 字节2021年亏损6041亿元;iPhone SE 4将采用刘海屏

今日要闻:字节2021年亏损6041亿元;iPhone SE 4或将采用刘海屏;京东众筹10月10日停止运营;特斯拉中国销量再创月度新高;大众将在中国成立软件合资企业字节2021年亏损6041亿元 10 月 10 日消息,字节跳动向员工…

FFmpeg基础:抽取视频文件中的音视频原始数据

文章目录视频流解码音频流解码原始的音视频数据数据量很大,为了方便传输和存储,我们会对原始数据进行压缩和编码。h264是常见的视频编码标准之一,AAC是常见的音频编码标准之一。这里介绍一下如何通过FFmpeg库将视频文件中的h264视频流解码成原…

[Unity] 获取UI组件的屏幕坐标(打包手机端使用前置摄像头)

因为我是打包到手机端,并且使用的是前置摄像头 在Canvas默认的render mode(Screen Space - Overlay)下: 我想要使用 arcamera.WorldToScreenPoint(button.transform.position) 将Canvas下的button世界坐标转为屏幕坐标&#xff…

手把手教你搭建属于自己的第一个Maven项目并引入Spring容器依赖

前言 最近在学习Maven和Spring,在这里做个学习记录并且分享一些我自己的学习经验,对Maven和Spring感兴趣的小伙伴可以一起来学习,有任何问题也欢迎一起来交流讨论。 Spring简介 Spring框架由Rod Johnson开发,2004年发布了Sprin…

(附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

技术分享预告|DocArray x Redis 比快更快的向量搜索

从国内的学生开发者,到深入参与国际化开源社区。小燕主动出击,不放过任何一个贡献机会。快来看看原子能科学研究院核物理专业小姐姐的神仙输出!北京时间 10 月 11 号,本周二晚 10 点,小燕将在 Zoom 平台,面…

第03章 成人感冒不是大事,少往急诊跑

急诊是病菌最多的地方,能避则避我在安贞急诊工作了数个年头,最大的体会就是急诊像个大的农贸市场,每天人头攒动、人山人海、接踵摩肩、座无虚席、门庭若市、沸沸扬扬、热闹非凡、熙熙攘攘、车水马龙、人来人往……写了这么多词汇都不足以写出…

Redis(Jedis入门 Jedis连接池

本章导学: 什么是Jedis?Jedis入门案例 新建项目,导入依赖建立连接进行测试释放资源Jedis的连接池使用一、什么是Jedis Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C、php、Nod…

Spring IOC核心知识

控制反转(IOC: Inversion Of Control),把对象的创建和对象之间的调用过程都交给Spring管理,从而降低耦合度。 IOC底层原理 三大技术:XML解析、工厂模式、反射 IOC创建对象的过程: IOC重要接口 IOC容器底…

路径分析—QGIS+PostgreSQL+PostGIS+pgRouting(一)

前言 因业务需求,需要做最短路径分析。最近几天查询资料,并自己动手,实现了简单的路径分析。 下面就介绍具体的实现过程。 本篇文章最终结果是在 PostgreSQL 数据库中实现的,后续的可视化展示会继续跟进。 一、道路数据处理 如果你已经有了道路数据,那就直接使用。 由于当…

传统应用如何“丝滑”转型为云原生应用?

市场需求瞬息万变,传统型的应用逐渐无法满足业务侧要求,传统应用向云原生应用转型,已势在必行。本篇文章将介绍基于CloudOS(一站式云原生开发平台)如何实现传统应用向云原生应用的转型。 在此之前,我们需…

python基础(老师PPT)

slist [Alice,2019001, Geoscience, 95] # 使用分号加tab作为分隔符&#xff0c;连接字符串 print(;\t.join(slist))# a X if condition else Z # condition为True时&#xff0c;赋值为X&#xff0c;否则赋值为Z a, b 1, 2 c a > b if a > b else a < b print(c)…

分布式seata案例学习-2

上篇文章学习了如何安装seata&#xff0c;先学习如何使用 事务的4个特性ACID 事务特性 at模式详解 AT模式运行机制 AT模式的特点就是对业务无入侵式&#xff0c;整体机制分二阶段提交 两阶段提交协议的演变&#xff1a; 一阶段&#xff1a;业务数据和回滚日志记录在同一个本地…

【复习整理归纳】| C++面经网络相关(三)

文章目录计算机网络性能指标计算机在发送文件前需要做许多前期的工作分层结构概念OSI参考模型数据链路层ARP网络协议UDP套接字TCPTCP粘包三次握手四次握手为什么建立连接协议是三次握手&#xff0c;而关闭连接却是四次挥手呢&#xff1f;为什么TIME_WAIT状态还需要等2MSL后才能…

C++ | 12天学好C++ (Day 12)->结构图可视化、代码加通俗理解

为每天进步一点点而努力。 C是计算机视觉的重要的一部分&#xff0c;虽然在初始学习时Python应用比较广&#xff0c;但是大多数公司还是C做计算机视觉类的比较多&#xff0c;因为C可加密&#xff0c;所以我们来一起探索吧&#xff01;看了这系列博客&#xff0c;将会学到C的基…

#边学边记 必修4 高项:对事的管理 第4章 项目进度管理之 制定进度计划

制订进度计划的输入、工具与技术和输出 制定进度计划过程分析活动顺序、持续时间、资源需求和进度制约因素&#xff0c;创建项目进度模型的过程。主要作用是把活动、持续时间、资源、资源可用性和逻辑关系代入进度规划工具&#xff0c;从而形成包含各个项目活动的计划日期的进…

在docker安装的centos容器内设置远程链接

写在前面 写在前面 运维这个行业&#xff0c;不需要按照顺序学习。 比如你学会了基础命令&#xff0c;直接学docker和k8s&#xff0c;和学会了基础命令开始学服务难度差不多。 再比如你学会了基础命令直接学shell脚本&#xff0c;也能学的会。 所以我一直主张&#xff0c;…