![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高可用架构
pingyan158
这个作者很懒,什么都没留下…
展开
-
架构设计:生产者/消费者模式 第1页:“生产者/消费者模式”介绍
★简介 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从转载 2016-03-21 14:24:26 · 355 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第2页:如何确定数据单元
费了这么多口水,希望原先不太了解生产者/消费者模式的同学能够明白它是怎么一回事。然后在下一个帖子中,我们来说说如何确定数据单元。 另外,为了方便阅读,把本系列帖子的目录整理如下: 1、如何确定数据单元 2、队列缓冲区 3、队列缓冲区 4、双缓冲区 5、...... [1]:如何确定数据单元? 既然前一个帖子已经搞过扫盲转载 2016-03-21 14:25:51 · 321 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第3页:队列缓冲区
[2]:队列缓冲区 经过前面两个帖子的铺垫,今天终于开始聊一些具体的编程技术了。由于不同的缓冲区类型、不同的并发场景对于具体的技术实现有较大的影响。为了深入浅出、便于大伙儿理解,咱们先来介绍最传统、最常见的方式。也就是单个生产者对应单个消费者,当中用队列(FIFO)作缓冲。 关于并发的场景,在之前的帖子“进程还线程?是一个问题!”中,已经专门论述了进程和线程各自的优缺点,两者皆不转载 2016-03-21 14:28:06 · 725 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第4页:注意事项
顺便补充几个注意事项,大伙儿留意一下: 1、对stdio进行读写操作是以阻塞方式进行。比如管道中没有数据,消费者进程的读操作就会一直停在哪儿,直到管道中重新有数据。 2、由于stdio内部带有自己的缓冲区(这缓冲区和管道缓冲区是两码事),有时会导致一些不太爽的现象(比如生产者进程输出了数据,但消费者进程没有立即读到)。具体的细节,大伙儿可以看"这里"。 ◇SOCKET转载 2016-03-21 14:30:18 · 335 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第5页:环形缓冲区
[3]:环形缓冲区 前一个帖子提及了队列缓冲区可能存在的性能问题及解决方法:环形缓冲区。今天就专门来描述一下这个话题。 为了防止有人给咱扣上“过度设计”的大帽子,事先声明一下:只有当存储空间的分配/释放非常频繁并且确实产生了明显的影响,你才应该考虑环形缓冲区的使用。否则的话,还是老老实实用最基本、最简单的队列缓冲区吧。还有一点需要说明一下:本文所提及的“存储空间”,不仅包括内存,转载 2016-03-21 14:31:24 · 456 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第6页:环形缓冲区的实现
◇判断“空”和“满” 上述的操作并不复杂,不过有一个小小的麻烦:空环和满环的时候,R和W都指向同一个位置!这样就无法判断到底是“空”还是“满”。大体上有两种方法可以解决该问题。 办法1:始终保持一个元素不用 当空环的时候,R和W重叠。当W比R跑得快,追到距离R还有一个元素间隔的时候,就认为环已经满。当环内元素占用的存储空间较大的时候,这种办法显得很土(浪费空间)。转载 2016-03-21 14:32:47 · 458 阅读 · 0 评论 -
跟我快速理解Dubbo:-1 内容简介和使用。
1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者转载 2016-03-21 14:37:47 · 448 阅读 · 0 评论 -
跟我快速理解Dubbo:-2 架构设计详解
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。转载 2016-03-21 14:41:56 · 727 阅读 · 0 评论 -
mysql保障数据一致性:锁与解(一)
因项目需要有锁单业务,所以,涉及到两个技术点:分布式锁和数据库锁。项目前期(qps悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Opti转载 2016-03-21 14:45:32 · 437 阅读 · 0 评论