随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel和Hystrix对比
Sentinel | Hystrix | |
---|---|---|
隔离策略 | 信号量隔离 | 线程池隔离/信号量隔离 |
熔断降级策略 | 基于响应时间或失败比率 | 基于失败比率 |
实时指标实现 | 滑动窗口 | 滑动窗口(基于 RxJava) |
规则配置 | 支持多种数据源 | 支持多种数据源 |
扩展性 | 多个扩展点 | 插件的形式 |
基于注解的支持 | 支持 | 支持 |
限流 | 基于 QPS,支持基于调用关系的限流 | 有限的支持 |
流量整形 | 支持慢启动、匀速器模式 | 不支持 |
系统负载保护 | 支持 | 不支持 |
控制台 | 开箱即用,可配置规则、查看秒级监控、机器发现等 | 不完善 |
常见框架的适配 | Servlet、Spring Cloud、Dubbo、gRPC 等 | Servlet、Spring Cloud Netflix |
业务需要播放rtsp视频流需要在本地实现推流功能
需要两个软件:
找到对应的压缩下载,windows举例 解压后双击打开.exe文件
选择一个对应版本,windows举例
下载压缩包,解压在D盘
在系统环境变量Path
中
添加目录D:\ffmpeg-7.1-full_build\ffmpeg-7.1-full_build\bin
测试是否成功
ffmpeg -version
输入命令开启推流
视频地址为:D:\videos\video2.mp4
新开一个命令行输入以下命令即可推流
ffmpeg -re -i D:\videos\video2.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/test
由于业务需要得在前端页面上播放视频,但是摄像头实时的视频流是rtsp格式的,前端不能直接显示rtsp视频流
RTSP(Real Time Streaming Protocol,实时流协议)是一种网络应用层协议,专为在网络上传输实时数据而设计。以下是对RTSP视频流的详细介绍:
定义:RTSP是由RealNetworks和Netscape共同提出的应用层协议,旨在IP网络上高效地传输流媒体数据。它允许客户端向服务器发送播放、暂停、快进等控制命令,但本身并不传输流媒体数据,而是依赖下层传输协议如RTP/RTCP来完成数据传输。 作用:RTSP主要用于控制具有实时特性的数据的发送,为流媒体服务器提供了远程控制功能。
消息交互流程:RTSP使用TCP协议传输,其消息交互流程包括创建RTSP套接字、等待客户端连接、接收RTSP消息请求、处理请求、发送RTSP消息响应以及会话结束后释放资源等步骤。 传输机制:RTSP本身不传输媒体数据,而是通过RTP(实时传输协议)来传输音视频数据。RTP通常使用UDP协议来传输数据,以减少延迟。 URL格式:RTSP的URL格式一般为“rtsp://host[
]/[abs_path]/content_name”,其中host为有效的域名或IP地址,port为端口号(缺省为554),abs_path为绝对路径,content_name为内容名称。RTSP广泛应用于视频监控、视频会议、在线视频播放等需要实时视频流传输的场景。在这些场景中,RTSP作为控制协议,负责管理视频流的播放、暂停、停止等操作,而RTP则负责实际的视频数据传输。
综上所述,RTSP作为一种专为实时数据流传输设计的网络协议,在视频监控、视频会议等领域发挥着重要作用。
开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。
比 LangChain 更易用。
git clone https://github.com/langgenius/dify.git
进入 Dify 源代码的 Docker 目录
cd dify/docker
复制环境配置文件
cp .env.example .env
启动 Docker 容器
根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档:
如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
最后检查是否所有容器都正常运行:
docker compose ps
有些场景下,我们需要在容器内部调用宿主机的命令,比如使用rsync给另外的机器发送图片,但是rsync安装在宿主机上,java直接执行rsync命令是会报错,提示找不到rsync命令
就拿rsync举例
一般rsync的安装都是在 /usr/bin/rsync
所以我们需要挂载这个地址
-v /usr/bin/rsync:/usr/bin/rsync
只挂载这个地址会提示libpopt.so.0
缺失,还需要挂载配置文件
-v /usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu
完整的命令
docker run -v /usr/bin/rsync:/usr/bin/rsync -v /usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu -d --name test-app --restart always -p 3001:3001 --net sup-network test-app
原来是
rsync -vzrtopg --progress --delete --chmod=755 /tmp/tempImg202410255916281385931068271.jpg 192.168.100.103::imagePull/20240929/M01300020240929001/
现在调整为
/usr/bin/rsync -vzrtopg --progress --delete --chmod=755 /tmp/tempImg202410255916281385931068271.jpg 192.168.100.103::imagePull/20240929/M01300020240929001/