Harukaze

 

【Middleware】中间件与相关工具

Docker Compose 中的两个重要概念:
服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元。
Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、容器端口映射等情况写在一个配置文件里,执行docker-compose up命令就像执行脚本一样,一个一个的安装并部署容器。


MobaXterm 国产SSH工具 使用简单介绍 https://zhuanlan.zhihu.com/p/269846202
MobaTextEditor 当您使用SSH连接到远程服务器时,只需双击它们,就可以使用嵌入式文本编辑器“ MobaTextEditor”直接编辑远程文件


Proxifier 简介:有许多网络应用程序不支持通过代理服务器工作,因此不能用于局域网或防火墙后面。这些会损害公司的隐私和导致很多限制。
Proxifier解决了这些问题和所有限制,让您有机会不受任何限制使用你喜爱的软件。例如PyCharm


scp 安全拷贝简述
1、scp 全称叫 secure copy(安全拷贝),用于Linux系统(服务器)之间复制文件和目录。
2、Linux scp 是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
3、对于Windows系统与Linux之间的文件/目录传输,实际中通常采用Xftp等工具进行上传与下载操作
4、然而对于从Linux服务器到另一台Linux服务器的文件/目录传输而言,使用Xftp工具却并不是一个好主意,因为需要先下载到windows系统上,然后再往另一台Linux服务器传输;此时使用scp命令却可以快速的进行点对点的传输,省去windows这一步


socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。socket是操作TCP/IP协议的最小单位


RABBITMQ:数据发送工具
RabbitMQ:是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
主要流程:生产者(Producer)与消费者(Consumer)和 RabbitMQ 服务(Broker)建立连接, 然后生产者发布消息(Message)同时需要携带交换机(Exchange) 名称以及路由规则(Routing Key),这样消息会到达指定的交换机,然后交换机根据路由规则匹配对应的 Binding,最终将消息发送到匹配的消息队列(Quene),最后 RabbitMQ 服务将队列中的消息投递给订阅了该队列的消费者(消费者也可以主动拉取消息)。

学习手册:https://pika.readthedocs.io/en/stable/examples/blocking_consume.html
RabbitMQ介绍:http://t.zoukankan.com/guyuyun-p-14970592.html
python有多种插件都支持RabbitMQ,本文介绍的是RabbitMQ推荐的Pika插件。使用pip直接安装即可 pip install pika
pika 主要解决的是用户使用redis的内存大小超过50G, 80G
重点:
pika 的单线程的性能肯定不如redis, pika是多线程的结构, 因此在线程数比较多的情况下, 某些数据结构的性能可以优于redis
pika 肯定不是完全优于redis 的方案, 只是在某些场景下面更适合. 所以目前公司内部redis, pika 是共同存在的方案, DBA会根据业务的场景挑选合适的方案

pika生产者程序大致步骤:

  1. 建立连接connection , 需要认证的调用认证参数
  2. 创建通道channel 当然 channel可以池化,这样可以重复使用
  3. 声明队列 指定队列属性, 一旦指定属性不能修改, 例如是否持久化,名称
  4. 声明交换机 交换机类型,名称等, 也可以不用声明,直接使用 “” 空字符串,默认交换机也可以
  5. 将队列与交换机绑定 queue_bind
  6. basic_publish 发送到交换机 指定路由键

pika消费者程序大致步骤:

  1. 建立连接connection , 需要认证的调用认证参数
  2. 创建通道channel 当然 channel可以池化,这样可以重复使用
  3. 声明队列 指定队列属性, 一旦指定属性不能修改, 例如是否持久化,名称
  4. 声明交换机 交换机类型,名称等, 也可以不用声明,直接使用 “” 空字符串,默认交换机也可以
  5. 将队列与交换机绑定 queue_bind
  6. basic_consume 消费消息

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,
输入:http://GPU's IP Welcome to nginx!
您若看到此页,表示NGINX代理服务器正常运行,更多的配置信息请访问以下配置文件


Mioio:对象存储系统,对象存储可以充当主存储层,以处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品。
MinIO用作云原生应用程序的主要存储,与传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。而这些都是MinIO能够达成的性能指标。
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
minio的数据都存储已在Bucket中, 当新建一个Bucket之后,就会在启动服务时指定的目录创建一个文件夹(与Bucket名称一致),然后可以在这个Bucket中上传文件。
使用 Nginx 负载均衡多节点,minio因是无中心节点的,随便哪个节点都能读写数据,可以使用nginx代理,建议nginx服务器万兆网卡。


Redis:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis 是一个高性能的key-value数据库
redis提供五种数据类型:string,hash,list,set及zset(sorted set)


Zookeeper:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
kazoo是Python连接操作ZooKeeper的客户端库。我们可以通过kazoo来使用ZooKeeper。
zookeeper作用主要是防止部署的多个算法之间不兼容,例如torch与tensorflow在一个环境目录下。


uvicorn是一个基于asyncio开发的一个轻量级高效的web服务器框架
uvicorn 设计的初衷是想要实现两个目标:
使用uvloop和httptools 实现一个极速的asyncio服务器
实现一个基于ASGI(异步服务器网关接口)的最小应用程序接口。
FastApi,一个用于构建 API 的现代、快速(高性能)的web框架
import uvicorn app = FastAPI(docs_url=None) uvicorn.run(app, host='0.0.0.0', port=port, log_config=None, access_log=False)

posted on 2022-10-21 17:17  Harukaze  阅读(93)  评论(0编辑  收藏  举报

导航