HAProxy概述、搭建Web群集

news2024/11/15 23:30:00

HAProxy概述、搭建Web群集

  • 一、HAProxy概述
    • 1、HAProxy的主要特性
    • 2、常见的Web集群调度器
    • 3、Haproxy应用分析
    • 4、Haproxy调度算法原理
  • 二、LVS、Nginx、HAproxy的区别
  • 三、LVS、Nginx、HAproxy的优缺点
    • 1、Nginx的优点:
    • 2、Nginx的缺点:
    • 3、LVS的优点:
    • 4、LVS的缺点:
    • 5、HAProxy的优点:
    • 6、HAProxy的缺点
  • 四、Haproxy搭建 Web 群集
    • 1、haproxy 服务器部署
    • 2、节点服务器部署
    • 3、测试 Web群集
  • 五、日志定义
  • 六、haproxy优化

一、HAProxy概述

  • Haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTT的应用程序代理。
  • HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
  • Haproxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space)实现所有这些任务,所以没有这些问题。
  • 此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。
  • 包括GitHub,Bitbucket,stack overflow,Reddit Tumblr,Twitter 和 Tuenti 在内的知名网站,及亚马逊网络服务系统都使用了Haproxy

1、HAProxy的主要特性

  • 可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;
  • 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
  • 支持多达8种负载均衡算法,同时也支持会话保持;
  • 支持虚机主机功能,从而实现web负载均衡更加灵活;
  • 支持连接拒绝、全透明代理等独特的功能;
  • 拥有强大的ACL支持,用于访问控制;
  • 其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条目的增加而速度有所下降;
  • 支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;
  • 支持TCP加速,零复制功能,类似于mmap机制;
  • 支持响应池(response buffering);
  • 支持RDP协议;
  • 基于源的粘性,类似nginx的ip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;
  • 更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;
  • 详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;
  • 基于流量的健康评估机制;
  • 基于http认证;
  • 基于命令行的管理接口;
  • 日志分析器,可对日志进行分析。

2、常见的Web集群调度器

  • 目前常见的Web集群调度器分为软件和硬件

  • 软件通常使用开源的LVS、Haproxy、Nginx

LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,高并发没有Haproxy好

  • 硬件一般使用的比较多的是F5,也有很多人使用梭子鱼、绿盟等国内产品

3、Haproxy应用分析

LVS在企业应用中抗负载能力很强,但存在不足

  • LVS不支持正则处理,不能实现动静分离
  • 对于大型网站,LVS的实施配置复杂,维护成功相对较高

Haproxy是一款可提供高可用性、负载均衡、及基于TCP(四层代理)和HTTP(七层代理)应用的代理的软件

  • 适用于负载大的Web站点
  • 运行在硬件上可支持数万计的并发连接的连接请求

4、Haproxy调度算法原理

  • Haproxy支持多种调度算法,最常用的有三种
方法名说明
RR (Round Robin)RR算法是最简单常用的一种算法,即轮询调度
LC(Least Connections)最小连接数算法,根据后端的节点连接数大小动态分配前端请求。
SH(Source Hashing)基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度

2、HAProxy负载均衡策略(8种)

HAProxy负载均衡策略说明
roundrobin表示轮询
static-rr表示加权轮询
leastconn表示最小连接数
source表示根据源地址哈希
uri表示根据URL哈希
url_param表示根据URL参数哈希
har(name)表示根据HTTP请求头哈希
rdp-cookie(name)表示根据cookie(name)哈希

二、LVS、Nginx、HAproxy的区别

  • LVS基于Linux操作系统实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;
  • LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;
  • LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;
  • HAProxy功能强大,但整体性能低于4层模式的LVS负载均衡。
  • Nginx主要用于Web服务器或缓存服务器。

负载均衡性能:

  • (硬件负载F5)> LVS 最好 > Haproxy 其次 > Nginx 弱于其他两种

支持的代理类型:

  • LVS基于系统内核实现的负载均衡,只能支持四层代理的IP转发(不支持正则表达式)
  • Haproxy 和 Nginx 基于应用程序实现的负载均衡,都能支持四层和七层代理转发(支持正则表达式)

支持的健康检查方式:

  • LVS支持对端口和URL进行检查,Nginx 只支持对端口的检查,Haproxy支持端口、URL、脚本等多种检查方式

三、LVS、Nginx、HAproxy的优缺点

1、Nginx的优点:

  • 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构。Nginx正则规则比HAProxy更为强大和灵活。
  • Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,LVS对网络稳定性依赖比较大,稳定要求相对更高。
  • Nginx安装和配置、测试比较简单、方便,有清晰的日志用于排查和管理,LVS的配置、测试就要花比较长的时间了。
  • 可以承担高负载压力且稳定,一般能支撑几万次的并发量,负载度比LVS相对小些。
  • Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等。
  • Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。
  • Nginx作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,很多场景下都将其作为反向代理加速器。
  • Nginx作为静态网页和图片服务器,这方面的性能非常优秀,同时第三方模块也很多。

2、Nginx的缺点:

  • Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些。
  • 对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。
  • 不支持Session的直接保持,需要通过ip_hash和cookie的引导来解决。

3、LVS的优点:

  • 抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生。因此负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
  • LVS工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案。
  • 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
  • 应用范围较广,因为LVS工作在4层,所以它几乎可对所有应用做负载均衡,包括http、数据库等。

4、LVS的缺点:

  • 软件本身不支持正则表达式处理,不能做动静分离。相对来说,Nginx/HAProxy+Keepalived则具有明显的优势。
  • 如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了。相对来说,Nginx/HAProxy+Keepalived就简单多了。

5、HAProxy的优点:

  • HAProxy也是支持虚拟主机的。
  • HAProxy支持8种负载均衡策略。
  • HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导,同时支持通过获取指定的url来检测后端服务器的状态。
  • HAProxy跟LVS类似,本身就只是一款负载均衡软件,单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
  • HAProxy支持TCP协议的负载均衡转发。

6、HAProxy的缺点

  • 不支持动静分离

四、Haproxy搭建 Web 群集

在这里插入图片描述

环境准备 Haproxy服务器 192.168.80.10
Nginx 服务器1 192.168.80.100
Nginx 服务器2 192.168.80.101
客户端 192.168.80.200

1、haproxy 服务器部署

(1)关闭防火墙,将安装Haproxy所需软件包传到/opt目录下

systemctl stop firewalld
setenforce 0

haproxy-1.5.19.tar.gz

在这里插入图片描述

(2)安装 Haproxy

编译安装
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628   PREFIX=/usr/local/haproxy
make install  PREFIX=/usr/local/haproxy

————参数说明————
TARGET=linux26	#内核版本,
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628


或
yum安装
yum insttall -y haproxy
cd /etc/haproxy
ls
vim haproxy.cfg


————HAProxy 的配置文件共有5个域————
●global: 用于配置全局参数
●default:用于配置所有frontend和backend的默认属性
●frontend: 用于配置前端服务(即HAProxy自身提供的服务)实例
●listen: frontend + backend的组合配置,可以理解成更简洁的配置方法,front end域和backend域中所有的配置都可以配置在listen域下

(3)Haproxy服务器配置

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/

cd /etc/haproxy/
vim haproxy.cfg
global
--4~5行--修改,配置日志记录,local0为日志设备,默认存放到系统日志
    log         127.0.0.1 local0 info
    log         127.0.0.1 local1 warning
    
    chroot      /var/lib/haproxy         	        #修改haproxy工作目录至指定目录,一般需将此行注释掉 
    pidfile     /var/run/haproxy.pid
    maxconn     4000				 				#最大连接数,HAProxy 要求系统的 ulimit -n 参数大于 maxconn*2+18
    user        haproxy								#以指定的用户名身份运行haproxy进程
    group       haproxy								#以指定的组名运行haproxy,以免因权限问题带来风险
    daemon  		   										#守护进程模式
    spread-checks 2									#在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统一对众服务器进行健康状况检查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长;默认为0,官方建议设置为2到5之间。

defaults(此字段中配置信息一般不用更改,只需注意个别细节)
    mode         http									#模式为http(7层代理http,4层代理tcp)
    log           global									#定义日志为global配置中的日志定义
    option      httplog									#开启httplog,在日志中记录http请求、session信息等。http模式时开启httplog,tcp模式时开启tcplog
    option       dontlognull							#不在日志中记录空连接
    option http-keep-alive
    option forwardfor  except 127.0.0.0/8   #记录客户端IP在X-Forwarded-For头域中,haproxy将在发往后端的请求中加上"X-Forwarded-For"首部字段 
    option       redispatch 							#当某后端down掉使得haproxy无法转发携带cookie的请求到该后端时,将其转发到别的后端上
    retries       3											#定义连接后端服务器的失败重连次数,连接失败次数超过此值后会将对应后端服务器标记为不可用
    timeout http-request    10s					#默认http请求超时时间,此为等待客户端发送完整请求的最大时长,用于避免类DoS攻击。haproxy总是要求一次请求或响应全部发送完成后才会处理、转发
    timeout queue         1m						#默认客户端请求在队列中的最大时长
    timeout connect       10s						#默认haproxy和服务端建立连接的最大时长,新版本中替代contimeout,该参数向后兼容
    timeout client           1m						#默认和客户端保持空闲连接的超时时长,在高并发下可稍微短一点,可设置为10秒以尽快释放连接,新版本中替代clitimeout
    timeout server          1m						#默认和服务端保持空闲连接的超时时长,局域网内建立连接很快,所以尽量设置短一些,特别是高并发时,新版本中替代srvtimeout
    timeout http-keep-alive 10s					#默认和客户端保持长连接的最大时长。优先级高于timeout http-request 也高于timeout client
    timeout check           10s						#和后端服务器成功建立连接后到最终完成检查的最大时长(不包括建立连接的时间,只是读取到检查结果的时长)
    maxconn                  3000					#最大连接数

frontend http-in    													 	 #定义前端域
    bind *:80                     						  				     #设置监听地址和端口,指定为*或0.0.0.0时,将监听当前系统的所有IPv4地址
    acl url_static   path_beg  -i /static /images/javascript /stylesheets    #定义ACL,当uri以定义的路径开头时,ACL[url_static]为true
    acl url_static   path_end  -i  -i .jpg .gif .png .css .js     			 #定义ACL,当uri以定义的路径结尾时,ACL[url_static]为true
    use_backend static_backend          if url_static					     #当[url_static]为true时,定向到后端域static_backend中
    default_backend                     dynamic_backend						 #其他情况时,定向到后端域dynamic_backend中


backend static_backend														    	#定义后端域static_backend
    balance     roundrobin  											            #使用轮询算法
    option      httpchk GET /test.html 												#表示基于http协议来做健康状况检查,只有返回状态码为2xx或3xx的才认为是健康的,其余所有状态码都认为不健康。不设置该选项时,默认采用tcp做健康检查,只要能建立tcp就表示健康。
    server      inst1 192.168.92.12:80 check inter 2000 rise 2 fall 3
    server      inst2 192.168.92.13:80 check inter 2000 rise 2 fall 3 			    #inter 2000 rise 2 fall 3是默认值,可以省略


backend dynamic_backend			 #定义后端域dynamic_backend	
    balance     roundrobin
    option  http-server-close
    cookie  HA_STIKY_dy insert indirect nocache
    server  app1 192.168.92.12:8080 cookie appser1 check
    server  app2 192.168.92.13:8080 cookie appser2 check


listen stats    #定义监控页面
    bind *:1080                   #绑定端口1080
    stats enable                  #启用统计报告监控
    stats refresh 30s             #每30秒更新监控数据
    stats uri /stats              #访问监控页面的uri
    stats realm HAProxy\ Stats    #监控页面的认证提示
    stats auth admin:admin        #监控页面的用户名和密码

--删除下面所有listen项--,添加
listen  webcluster 0.0.0.0:80			#定义一个名为webcluster的应用
        option httpchk GET /test.html	#检查服务器的test.html文件
        balance roundrobin				#负载均衡调度算法使用轮询算法roundrobin
        server inst1 192.168.80.100:80 check inter 2000 fall 3		#定义在线节点
        server inst2 192.168.80.101:80 check inter 2000 fall 3
		
---------------------参数说明---------------------------------------------------------------------------
balance roundrobin		#负载均衡调度算法
#轮询算法:roundrobin;最小连接数算法:leastconn;来源访问调度算法:source,类似于nginx的ip_hash

check inter 2000		#表示haproxy服务器和节点之间的一个心跳频率
fall 3					#表示连续三次检测不到心跳频率则认为该节点失效
若节点配置后带有“backup”表示该节点只是个备份节点,只有主节点失效该节点才会上。不携带“backup”,表示为主节点,和其它主节点共同提供服务。

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)添加haproxy 系统服务

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy

ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start	或	/etc/init.d/haproxy start

2、节点服务器部署

systemctl stop firewalld
setenforce 0

yum install -y pcre-devel zlib-devel gcc gcc-c++ make 

useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

make && make install

--192.168.80.100---
echo "this is kgc web" > /usr/local/nginx/html/test.html

--192.168.80.101---
echo "this is benet web" > /usr/local/nginx/html/test.html

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

nginx      #启动nginx 服务

3、测试 Web群集

  • 在客户端使用浏览器打开 http://192.168.80.10/test.html ,不断刷新浏览器测试负载均衡效果

五、日志定义

  • 默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,我们在生产环境中一般单独定义出来。需要将haproxy的info及notice日志分别记录到不同的日志文件中。
vim /etc/haproxy/haproxy.cfg
global
	log /dev/log local0 info
	log /dev/log local0 notice

service haproxy restart
  • 需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
说明:
这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。“&~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。
systemctl restart rsyslog.service

tail -f /var/log/haproxy/haproxy-info.log		#查看haproxy的访问请求日志信息

六、haproxy优化

maxconn最大连接数,根据应用实际情况进行调整,推荐使用10 240
daemon守护进程模式,Haproxy可以使用非守护进程模式启动,建议使用守护进程模式启动
nbprod负载均衡的并发进程数,建议与当前服务器CPU核数相等或为其2倍
retries重试次数,主要用于对集群节点的检查,如果节点多,且并发量大,设置为2次或3次
option http-server-close主动关闭http请求选项,建议在生产环境中使用此选项
timeout http-keep-alive长连接超时时间,设置长连接超时时间,可以设置为10s
timeout http-requesthttp请求超时时间,建议将此时间设置为5~10s,增加http连接释放速度
timeout client客户端超时时间,如果访问量过大,节点响应慢,可以将此时间设置短一些,建议设置为1min左右

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据抓取,驱动商业智能的密码|HTTP代理的应用

在信息爆炸的时代,数据无疑成为了推动行业发展的重要动力。而数据抓取作为一种强大的工具,已经成为众多行业的秘密武器,为商业决策提供了前所未有的洞察力和竞争优势。让我们揭开数据抓取的神秘面纱,探索它在各个行业中的高级应用…

SpringCloud microservice-student-provider-1001服务提供者项目建立(三)

新建一个服务器提供者module子模块&#xff0c;类似前面建的common公共模块&#xff0c;名称是 microservice-student-provider-1001 pom.xml改成&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSc…

go/go-pg插入time.Time字段为date类型时值自动变化的问题

今天偶然间发现一个问题&#xff0c;基于go-pg框架插入数据时&#xff0c;时间值自动减了1天。 目录 背景 现象与场景还原 问题解决与总结 背景 结构体中包含时间列类型&#xff0c;列类型是Date&#xff0c;对应的结构体类型是time.Time&#xff0c;此时对此对象做插入操…

Segment Anything使用手册(交互式数据标柱|自动数据标柱)

主要内容包含segment-anything项目的安装、基于SamPredictor对单点输入生成mask、基于SamPredictor对多点输入生成mask、基于SamAutomaticMaskGenerator自动生成mask。 Segment Anything项目是一个可以对任何图像进行分割的项目&#xff0c;其论文介绍可以查看https://blog.cs…

【JavaWeb】Cookie和Session的使用场景分析与应用

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ Cookie 和 Session 都是网页中常用的状态保持的技术&#xff0c;它们可以帮助网站识别用户身份&#xff0c;保存用户状态等&#xff0c;什么是 Cookie &#xff1f;什么是 Session &#xff1f;他们具体是什么…

Docker部署SonarQube代码质量检查平台+PostgreSQL数据库

一、安装PostgreSQL11(PostgreSQL7.9之后不支持MySQL) 检查代码的时候&#xff0c;仓库或者本地的代码会全部存储到postgresql数据里中&#xff0c;所以容量尽量大点&#xff0c;我这给个300G 指定拉取postgres11版本&#xff0c;不要postgres:latest&#xff0c;因为你部署so…

命令行创建uniapp项目

命令行创建uniapp项目 除了使用HBuilderX工具可视化搭建项目外&#xff0c;DCloud官方还提供了一个脚手架用于命令行搭建项目。 环境安装 全局安装vue-cli npm i vue/cli4 -g建议使用vue-cli 4.x版本&#xff0c;vue-cli 5.x与webpack存在冲突&#xff0c;会导致运行报错 …

聘准备-数据科学家

https://www.zhihu.com/question/21592677/answer/786529944

爆肝整理,性能测试-负载测试总结,你不知道的都在这了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试中最容易…

软件测试进阶知识 —— 性能测试

性能测试 性能测试是指在一定条件下系统行为表现是否符合需求规格的性能指标。 例如&#xff0c;通过测试传输的最长时限、传输的错误率、计算的精度、响应的时限和恢复时限等性能指标&#xff0c;验证了软件系统是否能够达到需求规格说明中所提出的性能指标&#xff0c;发现了…

vue的使用及运行

Vue使用 <!-- 从三方网站 引入网上的vue 需要网络 --> <!-- <script src"https://cdn.jsdelivr.net/npm/vue2.7.14/dist/vue.js"></script> --> <!-- 本地引入 --> <script src"./js/vue.js"></script><div…

vcruntime140.dll下载,快速解决vcruntime140.dll缺失的问题

在使用Windows操作系统时&#xff0c;有时会遇到“vcruntime140.dll缺失”等错误提示。这意味着系统中出现了一些严重的问题&#xff0c;可能是由于vcruntime140.dll文件损坏或缺失导致的。本文将详细介绍vcruntime140.dll的作用以及如何进行vcruntime140.dll下载来修复缺失的问…

STM32开发环境搭建工程创建(嵌入式学习)

STM32开发环境搭建&工程创建 1. 开发环境搭建1.1 STM32CubeMX简介安装 1.2 Keil5简介安装 1.3 ST_LINK简介安装 2. 创建STM32工程 1. 开发环境搭建 1.1 STM32CubeMX 简介 STM32CubeMX是STMicroelectronics公司提供的一款集成开发环境&#xff08;IDE&#xff09;工具&…

基于Github开源项目Next Chat4 —— 之原生Js前端特效给你的眼睛来一场视觉盛宴吧

前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客css Loading 实战教学https://blog.csdn.net/m0_57904695/article/details/131156011?spm1001.2014.3001.5501 &#x1f44d; 本文专栏&#xff1a;开发技巧 一键使用 GP…

精通postman教程(四)-创建请求及添加参数 详解

作为一名测试工程师&#xff0c;那么Postman绝对是大伙必备的工具之一。 在这个系列教程中&#xff0c;我将为大伙详细讲解如何使用Postman进行API测试。 今天我为大伙讲解postman如何创建请求及添加参数&#xff0c;让你们快速上手这款工具。 一、处理GET请求 Get请求用于…

敏捷实践 | 8个实用方法助你开好有效的敏捷反思会

又是年底&#xff0c;各大app都推出各种年度总结&#xff0c;年度回顾。这些总结有的很有趣&#xff0c;有的很扎心&#xff0c;在推动年底KPI完成的同时&#xff0c;也给我们带来不同角度的思考。而在敏捷工作方法中&#xff0c;反思回顾也是敏捷实践很关键的一环。那么我们如…

链动2+1系统开发模式,如何助力企业平台月赚上百万?

现在市面上的商业模式数不胜数&#xff0c;各种各样的都有&#xff0c;而链动21就是其中非常优质的一款商业模式。它不仅能够让消费者消费全返&#xff0c;还能够助力企业平台月赚上百万&#xff0c;而且完全的合法合规&#xff0c;那么链动21模式是怎么做到的呢&#xff1f;下…

2023年惠州/广州/深圳NPDP产品经理认证,这里够专业

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

C 语言实现一个简单的 web 服务器

说到 web 服务器想必大多数人首先想到的协议是 http&#xff0c;那么 http 之下则是 tcp&#xff0c;本篇文章将通过 tcp 来实现一个简单的 web 服务器。 本篇文章将着重讲解如何实现&#xff0c;对于 http 与 tcp 的概念本篇将不过多讲解。 一、了解 Socket 及 web 服务工作…

高并发下数据一致性问题:数据库+缓存双写模式分析

前言 随着互联网业务的发展&#xff0c;其中越来越多场景使用了缓存来提升服务质量。从系统角度而言&#xff0c;缓存的主要目标是减轻数据库压力&#xff08;特别是读取压力&#xff09;并提高服务响应速度。引入缓存就不可避免会涉及到缓存与业务数据库数据一致性的问题&…