LVS集群(Linux Virtual server)相关介绍及LVS的NAT模式部署

群集的含义


●Cluster,集群、群集
由多台主机构成,但对外只表现为一个整体,只提供访问入口(域名或IP地址),相当于一台大型计算机

问题:
互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求。

一、 集群和分布式

系统性能扩展方式:

  • Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务,升级单机的硬件设备

  • Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster

垂直扩展不再提及:

随着计算机性能的增长,其价格会成倍增长

单台计算机的性能是有上限的,不可能无限制地垂直扩展,多核CPU意味着即使是单台计算机也可以并行的。那么,为什么不一开始就并行化技术?

1.1 集群 Cluster

Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统,就需要用到反向代理

Cluster分为三种类型:

  • LB: Load Balancing,负载均衡,多个主机组成,每个主机只承担一部分访问请求

  • HA: High Availiablity,高可用(就是有备胎技术),避免 SPOF(single Point Of failure)

  • HPC: High-performance computing,高性能

HA:高可用(就是有备胎技术),避免 SPOF(single Point Of failure),即避免单点故障

MTBF:Mean Time Between Failure 平均无故障时间,正常时间
MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间
A = MTBF /(MTBF+MTTR) (0,1):99%,99.5%,99.9%,99.99%,99.999%

SLA:服务等级协议(简称:SLA,全称:service level agreement)。是在一定开销下为保障服
务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服
务质量的主要因素。在常规的领域中,总是设定所谓的三个9,四个9来进行表示,当没有达到这
种水平的时候,就会有一些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。

1年 = 365天 = 8760小时
90 = (1-90%)*365=36.5天
99 = 8760 * 1% = 87.6小时
99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时
99.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟
99.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟
99.9999= (1-99.9999%)*365*24*60*60=31秒

#停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间。


#轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点,均 等地对待每台服务器,而不管服务器实际的连接数和系统负载。 

#加权轮询(Weighted Round Robin):根据调度器设置的权重值来分发请求,权重 值高的节点优先获得任务并且分配的请求越多,这样可以保证性能高的节点承担更 多请求。 

#最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收 到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地均衡负载。 

#加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的 情况下,调度器可以根据节点服务器负载自动调整权重,权重较高的节点将承担更 大比例的活动连接负载。 

#IP_Hash根据请求来源的IP地址进行Hash计算,得到后端服务器,这样来自同一个IP的请求总是会落到同一台服务器上处理,以致于可以将请求上下文信息存储在这个服务器上,

#url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。具体没研究过

#fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。也就是根据后端服务器时间来分配用户请求,响应时间短的优先分配

1.2 分布式系统

分布式存储:Ceph,GlusterFS,FastDFS,MogileFS

分布式计算:hadoop,Spark

分布式常见应用

  • 分布式应用-服务按照功能拆分,使用微服务(单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值服务)

  • 分布式静态资源--静态资源放在不同的存储集群上

  • 分布式数据和存储--使用key-value缓存系统

  • 分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

1.3 集群和分布式

集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成
同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪
一台去完成响应,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同
的业务,如果一个节点垮了,那这个业务可能就会失败

1.4 集群设计原则

可扩展性—集群的横向扩展能力

可用性—无故障时间 (SLA service level agreement)

性能—访问响应时间

容量—单位时间内的最大并发吞吐量(C10K 并发问题)

1.5 集群设计实现

1.5.1 基础设施层面

  • 提升硬件资源性能—从入口防火墙到后端 web server 均使用更高性能的硬件资源

  • 多域名—DNS 轮询A记录解析

  • 多入口—将A记录解析到多个公网IP入口

  • 多机房—同城+异地容灾

  • CDN(Content Delivery Network)—基于GSLB(Global Server Load Balance)实现全局负载均衡,如:DNS

1.5.2 业务层面

  • 分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化

  • 分割:基于功能分割大业务为小服务

  • 分布式:对于特殊场景的业务,使用分布式计算

1.6 LB Cluster 负载均衡集群

1.6.1 按实现方式划分

硬件    F5 Big-IP(F5服务器负载均衡模块)

软件

lvs:Linux Virtual Server,阿里四层 SLB (Server Load Balance)使用

nginx:支持七层调度,阿里七层SLB使用 Tengine

haproxy:支持七层调度

ats:Apache Traffic Server,yahoo捐助给apache

perlbal:Perl 编写

pound

1.6.2 基于工作的协议层次划分
  • 传输层(通用):DNAT 和 DPORT

LVS:linux内核功能

nginx:stream

haproxy:mode tcp

  • 应用层(专用):针对特定协议,常称为 proxy server

http:nginx, httpd, haproxy(mode http), ...

fastcgi:nginx, httpd, ...

mysql:mysql-proxy, mycat(读写分离)

SNAT:让 内网用户 可以访问外网
DNAT:把内网的服务 共享到公网上(外网用户可以访问 公司内网的服务)

1.6.3 负载均衡的会话保持
  1. session sticky:同一用户调度固定服务器

Source IP:LVS sh算法(对某一特定服务而言)

Cookie

  1. session replication:每台服务器拥有全部session(复制)

session multicast cluster

  1. session server:专门的session服务器(server)

Memcached,Redis

1.7 HA 高可用集群实现

keepalived:vrrp协议

Ais:应用接口规范

heartbeat

cman+rgmanager(RHCS)

coresync_pacemaker

二、 Linux Virtual Server简介

2.1 LVS介绍

LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名正明),  阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现

LVS 官网:http://www.linuxvirtualserver.org/
阿里SLB和LVS:
https://yq.aliyun.com/articles/1803
https://github.com/alibaba/LVS

2.2 LVS工作原理

VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS(真实服务器),根据调度算法来挑选RS。LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理”

LVS:linux内核级功能

[root@zzzcentos1 ~]#grep -i -C 10 ipvs /boot/config-3.10.0-693.el7.x86_64 

2.3LVS集群类型中的术语

  • VS(代理服务器):Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器)

  • RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)

  • CIP:Client IP(客户机IP)

  • VIP:Virtual serve IP VS外网的IP

  • DIP:Director IP VS内网的IP

  • RIP:Real server IP (真实IP)

  • VS:代理服务器

    RS:真实服务器

    VIP:代理服务器的外网ip
    DIP:代理服务器的内网ip
    RIP:真实服务器的ip地址

访问流程:CIP <--> VIP == DIP <--> RIP

三、 LVS工作模式和相关命令

3.1 LVS集群的工作模式

  • lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

  • lvs-dr:操纵封装新的MAC地址(直接路由)

  • lvs-tun:隧道模式

lvs-dr 是 LVS集群的默认工作模式

3.1.1 LVS的NAT模式

报文过程:

帮助理解报文过程

lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某处的RS的RIP和PORT实现转发

(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP 

(2)请求报文和响应报文都必须经由lvs服务器转发,lvs服务器易于成为系统瓶颈

(3)支持端口映射,可修改请求报文的目标PORT

(4)VS(代理服务器)必须是Linux系统,RS(真实服务器)可以是任意OS系统

3.1.2 IP隧道

  1. RIP和DIP可以不处于同一物理网络中,RS的网关一般不能指向DIP,且RIP可以和公网通信。也就是说集群节点可以跨互联网实现。DIP, VIP, RIP可以是公网地址。

  2. RealServer的通道接口上需要配置VIP地址,以便接收DIP转发过来的数据包,以及作为响应的报文源IP。

  3. DIP转发给RealServer时需要借助隧道,隧道外层的IP头部的源IP是DIP,目标IP是RIP,而

    RealServer响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP

  4. 请求报文要经由Director,但响应不经由Director,响应由RealServer自己完成

  5. 不支持端口映射

  6. RS的OS须支持隧道功能

一般来说,隧道模式常会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同的网络环境,可以就近折返给客户端。在请求对象不在Cache服务器本地命中的情况下,Cache服务器要向源服务器发送请求,将结果取回,最后将结果返回给用户。

3.1.3直接路由

直接路由(Direct Routing):简称 DR 模式,采用半开放式的网络结构,与 TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。

负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道

直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

DR模式的特点:

  1. Director和各RS都配置有VIP

  2. 确保前端路由器将目标IP为VIP的请求报文发往Director

  • 在前端网关做静态绑定VIP和Director的MAC地址

  • 在RS上使用arptables工具

arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别

/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director

  1. RS和Director要在同一个物理网络

  2. 请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

  3. 不支持端口映射(端口不能修改)

  4. 无需开启 ip_forward

  5. RS可使用大多数OS系统

3.1.5 LVS工作模式总结和比较

3.2 LVS 调试算法

[root@zzzcentos1 ~]#grep -i -C 10 ipvs /boot/config-3.10.0-693.el7.x86_64 

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态,分为两种:静态方法和动态方法

静态方法: 不管后端真实服务器的状态,根据自身算法进行调度
动态方法: 会根据后端服务器的状态来进行调度

静态方法:

1、RR:roundrobin,轮询,较常用

2、WRR:Weighted RR,加权轮询,较常用  先算总权重 再用自己的 权重去除以 总权重

3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存

动态方法:

动态:一个参考值,来确定服务器是否忙 这个值越小 代表服务器 闲

          就会优先调度给闲的服务器

主要根据每RS当前的负载状态及调度算法进行调度Overhead=value 较小的RS将被调度

1、LC:least connections 适用于长连接应用

Overhead=activeconns*256+inactiveconns

2、WLC:Weighted LC,默认调度方法,较常用

Overhead=(activeconns*256+inactiveconns)/weight

3、SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接

Overhead=(activeconns+1)*256/weight

activeconns 活跃

inactiveconns 不活跃

4、NQ:Never Queue,第一轮均匀分配,后续SED

5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等   检查后端服务器忙不忙

6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,,实现Web Cache等

缺点:

LC最小连接数 不考虑权重

WLC默认调度加权最小连接数,第一轮不合理 都是 一样的 优先级

SED 权重小的空闲

为什么没有url hash?

LVS(Linux Virtual Server)的调度算法通常不包括URL哈希。

这是因为LVS主要是一个四层(Layer 4)负载均衡解决方案,它基于传输层信息(如IP地址和端口号)来进行负载均衡,而不涉及应用层(Layer 7)的内容,比如URL。因此,LVS的调度算法通常侧重于传输层的信息,而不是应用层的具体内容。

四、 ipvsadm 工具

 ipvsadm 工具选项说明

-A: 添加虚拟服务器
-D: 删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
一w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln


#管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address #删除
ipvsadm –C #清空
ipvsadm –R #重载,相当于ipvsadm-restore
ipvsadm -S [-n] #保存,相当于ipvsadm-save
#管理集群中的RS
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]  
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]

选项:
lvs类型:
    -g: gateway, dr类型,默认
    -i: ipip, tun类型
    -m: masquerade, nat类型        
-w weight:权重

例子:
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m

yum install ipvsadm


Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm

ipvsadm    是lvs内核使用工具

keepalive协助ipvsadm工具生成高可用

五、NAT模式 LVS负载均衡部署

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS

协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡

群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支

持的一种协议。

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程

到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS

共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持

实验拓朴图:

lvs负载调度器:配置双网卡 内网:192.168.246.7 (ens33)  外网卡:12.0.0.1 (ens36)
二台WEB服务器集群池:192.168.246.8、192.168.246.9  
一台NFS共享服务器:192.168.246.10
客户端:访问curl 12.0.0.1

①四台服务器都关闭防火墙、防护

②7-4共享服务器NFS配置

[root@localhost ~]# yum install nfs-utils.x86_64 rpcbind -y
#安装nfs服务

[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
#开启服务

③7-2web服务器配置

④7-3web服务器配置

先检测下:

⑤7-1 调度服务器 配置

我们使用本地yum源安装软件ipvsadm

网关地址别忘记啊      修改7-2、7-3真实服务器网关地址

RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP 

去检测:

lvs 的nat模式 是通过修改源ip和目的ip来实现负载均衡

六、安装软件ipvsadm的两种方法

方法一:使用yum安装

[root@zzzcentos1 ~]#yum install ipvsadm.x86_64 -y

ipvsadm相关配置文件:

主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm

方法二:可以使用本地yum源安装软件ipvsadm

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

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

相关文章

网络工程师笔记7

路由器需要知道下一跳和出接口才能把数据转发出去 各个协议的优先级 直连&#xff1a;0 OSPF&#xff1a;10 ISIS&#xff1a;15 静态&#xff1a;60 RIP :100 静态路由 ip route-static <目的ip地址> 掩码 下一跳地址 例…

哈希的简单介绍

unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好的…

开展“3·15”金融消费者权益保护教育宣传活动怎样联系媒体投稿?

在组织“315”金融消费者权益保护教育宣传活动时,传统的方式通常是银行、金融机构或其他主办单位主动联系各类媒体,包括但不限于电视台、广播电台、报纸、杂志、新闻网站、金融专业媒体、社交媒体平台等,通过邮件、电话、传真等方式提供活动新闻稿、宣传材料、现场照片等素材,请…

列车调度——典型的验证栈的出栈合不合法的问题,值得一看

题目描述 有n列火车按照1,2,3...n的顺序排列&#xff0c;现所有的火车需要掉头&#xff0c;所以需要火车先驶入一个调度站&#xff0c;再开出来。 由于只有一根铁轨&#xff0c;所以要么最前面的一辆火车进去调度站&#xff0c;要么调度栈内最上面一辆火车开出调度栈。 现给…

图书馆管理系统(1)

图书馆管理系统的框架图 图书馆管理系统的基本的功能代码&#xff0c;就是围绕上面这幅图的内容来写&#xff0c; 其中大一点的模块相当于主菜单&#xff0c;小一点的模块相当于子菜单&#xff0c;那就有了主菜单和子菜单如何响应&#xff08;主到子&#xff0c;子回主&#…

使用Weaviate向量数据库:从Embeddings到Applications (Multilingual Search和RAG)

Vector Databases: from Embeddings to Applications 课程地址&#xff1a;https://www.deeplearning.ai/short-courses/vector-databases-embeddings-applications/ 下面是这门课程的笔记。 使用Weaviate向量数据库&#xff1a;从Embeddings到应用&#xff0c;比如Multilin…

【GIS技术】GIS在地质灾害易损性评价、危险性评估与灾后重建中的实践技术应用

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质灾害在世界范围内频繁发生。我国除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉…

[数据结构]队列

1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头 2…

2024/3/5打卡线性DP--最长上升子序列**

题目&#xff1a; 给定一个长度为 N 的数列&#xff0c;求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数&#xff0c;表示完整序列。 输出格式 输出一个整数&#xff0c;表示最大长度。 数据范围 1≤N≤1000&#xff0c; −10^…

密码安全:保护你的数据不被入侵的重要性

title: 密码安全&#xff1a;保护你的数据不被入侵的重要性 date: 2024/3/5 17:54:56 updated: 2024/3/5 17:54:56 tags: 密码安全个人隐私保护身份盗窃防护金融损失防范弱密码危害安全密码创建双因素认证 在数字时代&#xff0c;密码安全是保护个人和机构数据的关键。然而&am…

【python】堆排序

堆的概念 堆&#xff1a;一种特殊完全二叉树&#xff0c;也就是二叉树必须全部是满的&#xff0c;但是最后一排可以从右向左缺失。 大根堆&#xff1a;每个节点都比他的子节点大 小根堆&#xff1a;每个节点都比子节点小 堆在代码中的形式 堆在代码中实际上就是列表&#…

制作耳机壳的UV树脂耳机壳UV胶和塑料材质有什么不同?

制作耳机壳的UV树脂耳机壳UV胶和塑料材质有什么不同&#xff1f; 制作耳机壳的UV树脂和塑料材质在以下几个方面存在区别&#xff1a; 硬度与耐磨性&#xff1a;UV树脂具有较高的硬度和耐磨性&#xff0c;能够有效保护耳机内部零件&#xff0c;延长耳机使用寿命。而塑料材质相…

四川首例强生全视人工晶体在成都爱尔眼科医院成功植入

【2024年3月1日&#xff0c;成都】全国首批、四川首例强生全视TECNIS Symfony™ Toric IOL植入手术在成都爱尔眼科医院成功开展&#xff0c;手术由爱尔眼科四川省区白内障学组组长、成都爱尔眼科医院副院长巫雷教授执刀。TECNIS Symfony™ Toric IOL的成功运用&#xff0c;不仅…

每日学习总结20240301

20240301 1. strchr VS strrchr strchr和strrchr是C语言标准库中的字符串处理函数&#xff0c;用于在字符串中查找特定字符的位置。 1.1 strchr函数 strchr函数用于在字符串中查找第一次出现指定字符的位置&#xff0c;并返回该位置的指针。函数原型如下&#xff1a; char…

数据库管理-第158期 Oracle Vector DB AI-09(20240304)

数据库管理158期 2024-03-04 数据库管理-第158期 Oracle Vector DB & AI-09&#xff08;20240304&#xff09;1 创建示例表2 添加过滤条件的向量近似查询示例1示例2示例3示例4示例5示例6示例7 总结 数据库管理-第158期 Oracle Vector DB & AI-09&#xff08;20240304&a…

保姆级GeoWebCache矢量瓦片切片流程

1矢量切片解决方案 1.1Geoserver配置geowebcache插件 参考文章 (53条消息) 独立安装geoservergeowebcache发布arcgis切片服务_itouch_ok的专栏-CSDN博客 1.将下载好的geoserver 2.19.3安装部署 将下载好的geowebcache 2.19.3的war包解压到 GeoServer 安装目录下./usr/loc…

【AI视野·今日CV 计算机视觉论文速览 第301期】Mon, 4 Mar 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 4 Mar 2024 Totally 74 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Point Could Mamba: Point Cloud Learning via State Space Model Authors Tao Zhang, Xiangtai Li, Haobo Yuan, Shunping …

单例服务拆分为分布式架构

将独立业务服务拆分为分布式 为啥会有这个想法&#xff1f;因为我要造锤子&#xff0c;拿着造好的锤子&#xff0c;去找锤子&#xff0c;没有造锤子的经验无法找一个造锤子的坑。 现有情况说明 单机软件&#xff1a;就是将软件安装在自己的电脑上&#xff0c;自己用的那种&…

关于Java并发多线程的一点思考

写在开头 在过去的2023年双11活动中&#xff0c;天猫的累计访问人次达到了8亿&#xff0c;京东超60个品牌销售破10亿&#xff0c;直播观看人数3.0亿人次&#xff0c;订单支付频率1分钟之内可达百万级峰值&#xff0c;这样的瞬间高并发活动&#xff0c;给服务端带来的冲击可想而…

linux kernel物理内存概述(五)

目录 概述 一、快速路径分配 1、get_page_from_freelist 2、rmqueue()函数 二、慢速路径分配 1、分配流程 三、direct_compact 概述 物理内存分配步骤 1、初始化,参数初始化 2、内存充足&#xff0c;快速分配 get_page_from_freelist 3、内存压力大&#xff0c;慢速…