分布式系统
文章平均质量分 68
jinixin
这个作者很懒,什么都没留下…
展开
-
「Nginx」负载均衡
负载均衡 负载均衡关注: 如何将请求分发到集群的不同机器上 OSI七层模型 物理层 链路层 网络层 传输层 会话层 表示层 应用层 工作在应用层的就是七层负载均衡, 工作在传输层的就是四层负载均衡 四层负载均衡 接收客户端请求后, 需要对流量做NAT处理, 即修改数据包的IP+端口号,..原创 2021-05-27 17:04:23 · 167 阅读 · 0 评论 -
「Raft」Raft分布式共识协议
概述 raft是一种分布式共识协议, raft解决的是多个节点如何达成共识的问题 raft保证了高可用, 但不是强一致, 而是最终一致性 raft把时间分成了一个个任期, 任期总是以选举开始的, 如果选举失败, 该任期会立即结束 在大多数节点挂掉后, 因无法选出leader, 集群就不能对外提供服务了 共识算法一般基于复制状态机, 即相同的初始状态 + 相同的输入 = 相同的结束状态. raft通过日志复制与复制状态机实现共识 ..原创 2020-11-16 10:27:38 · 543 阅读 · 0 评论 -
「Nginx」Nginx配置入门
本篇文章不会做深入讲解, 阅读本篇文章, 也只能使你对配置有简单了解. 配置这部分内容比较多, 像前篇所提到的静态资源服务器, 虚拟主机, 反向代理都是需要依靠合理配置来实现的.Nginx反向代理包含被动的健康检查机制:如果在fail_timeout时间内从某服务器上收到多于max_fails个异常响应, Nginx会将该服务器标记为"失败"状态, 并在其后fail_timeout时间内避免向该服务器发送后续请求.经过这段时间后, Nginx会小心翼翼的对该"失败"服务器发送一个请求, 如果成功响应原创 2019-05-08 23:08:42 · 598 阅读 · 0 评论 -
「Nginx」简述Nginx
在我的理解中, Nginx是一个Web服务器, 架设在客户端和应用服务器之间, 用于在客户端与应用服务器间转发请求与响应.做反向代理服务器即为Nginx的一个作用, 常见用法在此我先一并列出, 之后都会详细提到:静态资源服务器虚拟主机(即共享主机)反向代理服务器, 并支持集群负载均衡除此之外, Nginx还可以控制IP, 缓存响应等.原创 2019-05-08 13:03:34 · 676 阅读 · 0 评论 -
「Nginx」什么是代理
谈到正向代理和反向代理, 首先就要先了解代理的概念. 代理, 即代理服务器(Proxy Server), 一般我们会省略”服务器”这几个字, 代理在客户端和服务器之间充当中间人.具体过程如下, 代理接收客户端发来的请求, 代理从请求中解析出目标服务器, 并向目标服务器转发请求, 在得到目标服务器的响应后, 便将响应转发回客户端. 期间代理可以选择性的缓存响应, 以便加速后续相同访问, 因此一般代理都有较大的磁盘空间.原创 2020-09-30 18:51:16 · 1067 阅读 · 0 评论 -
「消息队列」Python使用pika操作RabbitMQ
前面几篇文章分别介绍了消息队列, AMQP协议以及RabbitMQ, 本篇文章开始尝试用具体语言操作RabbitMQ来搭建"生产者-消费者"模型. 本篇文章将使用Python语言, 而Python操作RabbitMQ库有很多, 比如pika, amqp以及Celery等, 下面就使用pika库来完成这个任务.调用方法和参数的含义大多已通过注释给出. 针对消费者的实现, 我提供了两种方式: MQReceiver1通过回调来处理消息, MQReceiver2通过迭代来处理消息. 当Rab原创 2018-11-18 21:46:22 · 3495 阅读 · 1 评论 -
「RPC」简述RPC
最近工作中一直有用到Thrift,所以想对此做个简单小结。分为两篇,第一篇(即本篇)介绍rpc是什么、其与http服务的区别、基本架构、使用步骤等,第二篇介绍常用rpc框架Thrift的Python案例。平时写程序中我们常常会用到函数调用,而一般的函数调用都在同一个进程内。但如果现在要求某个函数去调用另个工程里的一个函数,该怎么办呢?我最先想到的是http服务,编写RESTful风格的url并通过http请求传递参数从而获得远程工程的响应,这个方法可以很方便的在两个程序间保持通讯。原创 2018-06-16 14:37:48 · 1039 阅读 · 0 评论 -
「消息队列」消息队列概述与AMQP协议
前面几篇文章中谈了rpc服务, rpc可用于进程间通信, 使应用得以解耦, 而进程间通信还可使用消息队列来完成.本篇文章就简单谈谈消息队列, 以及其所遵守的AMQP协议.消息队列的定义消息队列, 从字面上看其必和队列有一定关系. 而队列想必大家也都有所了解, 其是一种基本的数据结构, 先入先出, 可以起到暂存数据, 共享数据的作用. 消息队列和前面的队列类似, 只是其额外还支持数据持久化, 处理确认, 流量控制, 跨服务器投递等功能.官方定义消息队列(Message Queue)是原创 2018-11-07 21:50:54 · 614 阅读 · 0 评论 -
「消息队列」Python使用pika的优化: 多消费者复用一个连接
通过消息队列可以非常方便的实现分布式, 上篇文章使用Python的pika搭建的"生产者-消费者"模型就是很好的例子,但经过一段时间的运行, 有两个问题令我疑惑, 下面拿出来简单谈谈.问题一: 运行一段时间后, pika会丢失与RabbitMQ的连接.问题二: 连接建立过多, 资源消耗较严重.AMQP协议规定消息队列有心跳检测机制, 即消息队列的消息代理会设置一个心跳超时时间.当客户端与消息队列的消息代理建立连接后, 客户端隔一定时间就会发送一个心跳检测包, 如果消息代理原创 2018-11-18 21:46:12 · 9929 阅读 · 4 评论 -
「消息队列」RabbitMQ监控与管理
上篇文章对RabbitMQ做了大致介绍, 本篇文章还想简单谈谈RabbitMQ的监控与管理. 以我目前的理解, 监控与管理主要还是依靠rabbitmqctl命令来操作, 因此本篇文章也可以认为是命令的罗列.RabbitMQ的命令都在"RabbitMQ安装或解压目录/sbin/"目录下, 其中rabbitmqctl是RabbitMQ提供的监控与管理命令, 其支持查看状态与配置, 健康检查, 用户及权限管理, 集群管理, 虚拟主机/交换机/连接/队列/信道管理等操作.原创 2018-11-15 00:06:29 · 4387 阅读 · 1 评论 -
「消息队列」RabbitMQ概述
上篇文章谈了消息队列与AMQP是什么, 本篇文章将接着为大家介绍一款成熟的消息队列产品--RabbitMQ, 围绕其的安装, 配置, 管理以及搭建分布式集群来简单谈谈.RabbitMQ是由Rabbit公司遵循AMQP协议开发的开源消息队列产品, 经过多年的迭代, 已经演变成稳定的老牌消息队列产品.RabbitMQ是AMQP的一种实现, RabbitMQ Server是AMQP消息代理(Broker)的一种实现. RabbitMQ本质上是一个缓冲区, 其的大小只受所在主机内存和磁盘大小的限制.原创 2018-11-13 13:10:35 · 432 阅读 · 0 评论