zeromq

面试总结 | Linux后台开发不得不看的知识点(给进军大厂的你!)

痴心易碎 提交于 2020-04-19 23:00:35
目录 1.Linux后台开发技术总结 2.Linux后台架构技术总结 3.腾讯Linux后台开发岗位面试题分析 值得收藏,反复学习! #算法与设计 千里之行,始于足下。不积跬步,无以致千里。既能仰望星空又能脚踏实地。 排序与查找 常用算法 常用的数据结构 常用的设计模式 #后台组件编程 工欲善其事,必先利其器。后台组件是开发的入门石。 持久化MySQL 消息队列ZeroMQ 缓存Redis 反向代理Nginx Restful Http 协调服务Zookeeper NoSQL MongoDB 代码工程化 优秀的工程师有优秀的代码组织能力与代码迭代能力。 架构工程 管理代码 网络服务 网络IO是网络通信的血管,数据是血液。血液的流动是不能离开血管的。 源码实现 框架实战 理论详解 开源框架 欲穷千里目,更上一层楼。站在巨人的肩膀上,看到窗外的景色。 TCP协议栈 数据库 国际化 压缩 日志 序列化 XML库 脚本 Json库 数学库 安全 Web应用框架 网络库 异步事件 协程 性能测试 调试库 测试库 性能工具 Linux系统 系统命令工具 基础命令工具 网络参数工具 磁盘参数工具 日志监控工具 参数监控工具 源码分析 Nginx源码 Redis源码 ZeroMQ源码 中间件开发 高性能组件 高并发网络IO 并发性 Web服务 定时调度 消息队列 分布式定时调度opencrom

RabbitMQ和Kafka到底怎么选?

情到浓时终转凉″ 提交于 2020-04-18 11:34:55
前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措。对于RabbitMQ和Kafka,到底应该选哪个? RabbitMQ架构 RabbitMQ是一个分布式系统,这里面有几个抽象概念。 broker:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求。 master queue:每个队列都分为一个主队列和若干个镜像队列。 mirror queue:镜像队列,作为master queue的备份。在master queue所在节点挂掉之后,系统把mirror queue提升为master queue,负责处理客户端队列操作请求。注意,mirror queue只做镜像,设计目的不是为了承担客户端读写压力。 如上图所示,集群中有两个节点,每个节点上有一个broker,每个broker负责本机上队列的维护,并且borker之间可以互相通信。集群中有两个队列A和B,每个队列都分为master queue和mirror queue(备份)。那么队列上的生产消费怎么实现的呢? 队列消费 如上图有两个consumer消费队列A,这两个consumer连在了集群的不同机器上。RabbitMQ集群中的任何一个节点都拥有集群上所有队列的元信息,所以连接到集群中的任何一个节点都可以

RabbitMQ和Kafka到底怎么选?

孤人 提交于 2020-04-18 11:34:37
前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措。对于RabbitMQ和Kafka,到底应该选哪个? RabbitMQ架构 RabbitMQ是一个分布式系统,这里面有几个抽象概念。 broker:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求。 master queue:每个队列都分为一个主队列和若干个镜像队列。 mirror queue:镜像队列,作为master queue的备份。在master queue所在节点挂掉之后,系统把mirror queue提升为master queue,负责处理客户端队列操作请求。注意,mirror queue只做镜像,设计目的不是为了承担客户端读写压力。 如上图所示,集群中有两个节点,每个节点上有一个broker,每个broker负责本机上队列的维护,并且borker之间可以互相通信。集群中有两个队列A和B,每个队列都分为master queue和mirror queue(备份)。那么队列上的生产消费怎么实现的呢? 队列消费 如上图有两个consumer消费队列A,这两个consumer连在了集群的不同机器上。RabbitMQ集群中的任何一个节点都拥有集群上所有队列的元信息,所以连接到集群中的任何一个节点都可以

使用redis作为消息队列的用法

倖福魔咒の 提交于 2020-04-16 08:03:41
【推荐阅读】微服务还能火多久?>>> 背景 最近项目有个需求需要动态更新规则,当时脑中想到的第一个方案是利用zk的监听机制,管理人员更新完规则将状态写入zk,集群中的机器监听zk的状态,当有状态变更后,集群中的机器开始拉取最新的配置。但由于公司技术选型,没有专门搭建zk集群,因此也不可能为这一个小需求去搭建zk集群。图为使用zk监听状态变化的流程。 最后只好退而求其次,想到了使用redis的队列来做规则的更新 消息队列 首先做简单的引入。 队列(来自百度百科):是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 消息队列(来自百度百科):是在消息的传输过程中保存消息的容器。 从队列和消息队列的定义看来,看不出什么相似之处。但我理解它们的作用是相似的,只是使用环境不同。队列和消息队列 本质上都可以用于解决“生产者”和“消费者”问题,在二者这间建立桥梁,it中专业术语是对“生产者”和“消费者”进行解耦。可以动态的通过调整“生产者”和“消费者”线程数或服务器实例数,在正常情况使消费和生产到达一个平衡;在高峰情况下(生产者大于消费者)可以保护消费者不被拖垮的同时,还可以对把积压的数据保存下来,消费者可以延迟消费这些数据进行处理。 队列

PHP 高级编程之多线程-消息队列

最后都变了- 提交于 2020-04-14 01:01:49
【今日推荐】:为什么一到面试就懵逼!>>> Home | Mirror | Search | 杂文 | ITEYE 博客 | OSChina 博客 | 51CTO 博客 | Linkedin PHP 高级编程之多线程 http://netkiller.github.io/journal/thread.php.html Mr . Neo Chen (netkiller) , 陈景峰(BG7NYT) 中国 广东省 深圳市 龙华新区民治街道溪山美地 518131 +86 13113668890 +86 755 29812080 < netkiller@msn.com > 版权 © 2011, 2012, 2013, 2014 http://netkiller.github.io 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。 文档出处: http://netkiller.github.io http://netkiller.sourceforge.net $Date$ 摘要 2014-03-12 第一版 2014-05-15 第二版 2014-06-13 第三版 2014-07-24 第四版 我的系列文档 Netkiller Architect 手札 Netkiller Developer 手札 Netkiller PHP 手札 Netkiller

How can i write my own RPC Implementation for Protocol Buffers utilizing ZeroMQ

你。 提交于 2020-04-10 04:46:12
问题 According to the Google Protocol Buffers documentation under 'Defining Services' they say, it's also possible to use protocol buffers with your own RPC implementation. To my understanding, Protocol Buffers does not implement RPC natively. Instead, they provide a series of abstract interfaces that must be implemented by the user (Thats me!). So I want to implement these abstract interfaces utilizing ZeroMQ for network communication. I'm trying to create an RPC implementation using ZeroMQ

How can i write my own RPC Implementation for Protocol Buffers utilizing ZeroMQ

拜拜、爱过 提交于 2020-04-10 04:45:46
问题 According to the Google Protocol Buffers documentation under 'Defining Services' they say, it's also possible to use protocol buffers with your own RPC implementation. To my understanding, Protocol Buffers does not implement RPC natively. Instead, they provide a series of abstract interfaces that must be implemented by the user (Thats me!). So I want to implement these abstract interfaces utilizing ZeroMQ for network communication. I'm trying to create an RPC implementation using ZeroMQ

ZeroMQ简介以及使用(二)

一笑奈何 提交于 2020-03-26 17:02:30
3 月,跳不动了?>>> 接着上次博客写的内容 ZeroMQ简介以及使用(一) Pipeline pattern PipeLine模式用于任务分配,通常在多级流水线中,其中一个或几个节点将工作推给许多工作人员,然后依次将结果推向一个或几个收集器。该模式在大多数情况下是可靠的,因为除非节点意外断开连接,否则它不会丢弃消息。它具有可伸缩性,因为节点可以随时加入。 ZeroMQ通过以下两种类型支持 PipeLine : PUSH 类型 PULL 类型 PUSH socket PUSH 以一组匿名的 PULL 同行,使用循环算法发送消息。该 接收 操作没有此Socket类型实现。 当 PUSH Socket由于已达到所有下游节点的高水位线而进入静音状态时,或者如果根本没有下游节点,则Socket上的任何 发送 操作都将阻塞,直到静音状态结束或至少一个下游节点为止可以发送;消息不会被丢弃。 特征摘要: 兼容的对等套接字 PULL 方向 单向 发送/接收模式 仅发送 入网路由策略 不适用 外发路由策略 轮循 静音状态下的动作 块 PULL socket PULL类型与一组匿名PUSH对等方对话,并使用公平队列算法接收消息。 该 发送 操作没有此套接字类型实现。 特征摘要: 兼容的对等套接字 PUSH 方向 单向 发送/接收模式 仅接收 入网路由策略 公平排队 外发路由策略 不适用

ZeroMQ简介以及使用(一)

浪尽此生 提交于 2020-03-26 14:53:38
3 月,跳不动了?>>> ZeroMQ简介 ZeroMQ(也称为ØMQ,0MQ或ZMQ)是一种高性能的异步消息传递库,旨在用于分布式或并行应用程序中。它提供了一个消息队列,但是与面向消息的中间件不同,ZeroMQ系统可以在没有专用消息代理的情况下运行。 ZeroMQ通过各种传输(TCP,进程内,进程间,多播,WebSocket等)支持通用消息传递模式(发布/订阅,请求/答复,客户端/服务器等),使进程间消息传递变得简单作为线程间消息传递。这样可以使您的代码清晰,模块化并且易于扩展。 ZeroMQ由大型贡献者社区开发。许多流行的编程语言都有第三方绑定,而C#和Java有本地端口。 ZeroMQ 特点 ZeroMQ的理念从零开始。零表示零代理(ZeroMQ是无代理),零延迟,零成本(免费)和零管理。 更广泛地说,“零”是指渗透到项目中的极简主义文化。我们通过消除复杂性而不是通过公开新功能来增加功能。 Socket API Socket是用于网络编程的事实上的标准API。这就是ZeroMQ提供熟悉的基于Socket的API的原因。使ZeroMQ特别受开发人员欢迎的一件事是,它使用不同的Socket类型来实现任何任意的消息传递模式。此外,ZeroMQ Socket提供了对基础网络协议的干净抽象,从而隐藏了那些协议的复杂性,并使它们之间的切换变得非常容易。 与传统 Socket 的主要区别

c++ zeromq azmq用法

丶灬走出姿态 提交于 2020-03-24 17:27:51
3 月,跳不动了?>>> 概述 zeromq是一个非常简单使用的socket库,但是其使用方法又不同于通常意义上的socket,也和那些mq级的库也不同,这里主要以azmq为类来说明zeromq的使用方式。使用zeromq的时候理解其使用方式是最为重要的,这样才能融会贯通到自己的项目中去。本文主要讲述zeromq常用的使用方式。 REQ-REP socket通信有个很原始的用法就是客户端请求,服务端回复,这个模式就是应对这种使用方式来而来的,客户端请求,服务端回复,双方严格遵守这个规则,zeromq通过一个状态机来维护这个状态,任何一方不遵守这个约定都会导致混乱。 服务端: #include <azmq/socket.hpp> #include <boost/asio.hpp> #include <array> #include <glog/logging.h> #include <boost/make_shared.hpp> #include <boost/bind.hpp> #include <azmq/actor.hpp> namespace asio = boost ::asio; /** * rep req 模式的服务端 * @param argc * @param argv * @return */ int main( int argc, char **argv) {