@[toc]一、信号量的概念信号量(信号灯)本质上是一个计数器,用于协调多个进程(包括但不限于父子进程)对共享数据对象的读/写。它不以传送数据为目的,主要是用来保护共享资源(信号量、消息队列、socket连接等),保证共享资源在一个时刻只有一个进程独享。信号量是一个特殊的变量,只允许进程对它进行等待信号和发送信号操作。最简单的信号量是取值0和1的二元信号量,这是信号量最常见的形式。通用信号量(可以
分类:
系统相关 时间:
2020-04-20 16:14:27
阅读次数:
93
前言 这一章节我们将讲解高并发解决方案中的应用拆分思路,也可以称之为系统拆分。单个服务器再优化,它的处理都是有上限的,因此我们采用扩容、缓存、消息队列等对程序进行优化,这些手段都可行,但还不是全部。随着项目的需求要求越来越多,应用自然会跟着越来越大,因此呢,架构师设计出了特别容易扩展的方案,从整体将 ...
分类:
其他好文 时间:
2020-04-19 18:21:17
阅读次数:
72
消息队列 每当想到消息队列:我们都会想到RabbitMQ,ActiveMQ,RocketMQ,等等一些专业的消息中间件。但是如果我们做的事情比较简单,只有一个消息队列,要使用专业的消息中间件是非常麻烦的,因此我们可以使用Redis做消息队列。 如果对消息的可靠性没有较高的要求的话,那么就可以使用Re ...
分类:
其他好文 时间:
2020-04-19 16:19:09
阅读次数:
74
自定义windows消息 #define MY_MSG (WM_USER+1) //为了防止用户自定义消息ID与系统消息ID冲突,用户只能定义WM_USER(0x0400)以后的ID使用 PostThreadMessage 将一个队列消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回 ...
分类:
编程语言 时间:
2020-04-19 10:41:45
阅读次数:
70
简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。支持主流的操作系统,多种开发语言支持。 什么是MQ 消 ...
分类:
其他好文 时间:
2020-04-18 13:35:28
阅读次数:
58
秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。 从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是 ...
分类:
其他好文 时间:
2020-04-18 09:48:00
阅读次数:
92
栈和队列 1.栈 栈:栈是一种仅支持在表位插入删除的线性表。栈底称为表头,栈顶称为表尾。 栈的存储结构: 顺序存储: 顺序栈:用一组地址连续的内存单元依次存放从栈底到栈顶元素的结构。 栈的入栈操作是:栈顶指针+1,元素入栈。 栈的出栈操作是:元素出栈,栈顶指针-1。 共享栈:两个栈共享栈顶空间,两个 ...
分类:
其他好文 时间:
2020-04-17 23:38:47
阅读次数:
66
#开发语言:Erlang – 面向并发的编程语言。 AMQP是消息队列的一个协议。 ...
分类:
其他好文 时间:
2020-04-17 20:20:32
阅读次数:
60
消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。 其主要用途:不同进程Process/线程Thread之间通信。 为什么会产生消息队列?有几个原因: 不同进程(process)之间传递消息时,两个进程之间耦 ...
分类:
其他好文 时间:
2020-04-17 20:05:56
阅读次数:
148
一、概述1.1、简介Kafka最初是由LinkedIn公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统。ApacheKafka也是一个开源消息系统,由Scala写成;Kafka是一个分布式消息队列。Kafka对消息保存是根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每
分类:
其他好文 时间:
2020-04-17 09:28:47
阅读次数:
71