高可用架构
文章平均质量分 83
小雄哥
勿忘心安
展开
-
ACE简介
ACE框架研究 开篇序言经历了一些通讯服务软件的开发,深知要想开发出一个高效易用的服务产品是多么不容易.于是整理一些近几年的一些思路和经验准备写一个通用的通讯产品的框架。可是想想看自己实现一个通用的通讯产品框架谈何容易啊,出于设计的问题你需要能够灵活运用各种设计模式;出于系统移植性的考虑你需要对各种操作系统API接口的细节有深入的理解;出于效率的考虑不仅需要对编程语言的灵活运用还需要对操作转载 2009-08-23 13:08:00 · 1229 阅读 · 0 评论 -
高并发面试必问:分布式消息系统Kafka简介
Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了已在同时搞定在线应用(消息)原创 2015-08-26 17:58:16 · 52057 阅读 · 1 评论 -
高并发面试必问:技术架构
高并发的业务架构是:前端:异步请求+资源静态化+cdn后端:请求队列+轮询分发+负载均衡+共享缓存数据层:redis缓存+数据分表+写队列存储:raid阵列+热备网络:dns轮询+DDOS攻击防护原创 2015-08-26 11:22:59 · 12882 阅读 · 1 评论 -
回顾:Thrift RPC框架介绍
u 简介Thrift是一种开源的跨语言的RPC服务框架。Thrift最初由facebook公司开发的,在2007年facebook将其提交apache基金会开源了。对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。所以thrift可以支持多种程序语言,支持的语言如下: 在多种转载 2015-09-06 11:05:20 · 2229 阅读 · 0 评论 -
Zookeeper简介、基本概念和工作原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookee转载 2015-09-11 10:16:38 · 7894 阅读 · 0 评论 -
SOAP和RESTful 框架的 简介、对比和区别
SOAP简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于XML的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是SOAP的一个优点。它还支持从消息系统到远程过程调用(Remote Procedure Call,RPC)等大量原创 2015-09-15 12:10:33 · 18863 阅读 · 0 评论 -
跟我快速理解Dubbo:-1 内容简介和使用。
公司项目需要,临时搞搞。1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web原创 2015-09-16 10:29:02 · 4387 阅读 · 0 评论 -
跟我快速理解Dubbo:-2 架构设计详解
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。转载 2015-09-16 10:34:00 · 2099 阅读 · 0 评论 -
mysql保障数据一致性:锁与解(一)
因项目需要有锁单业务,所以,涉及到两个技术点:分布式锁和数据库锁。项目前期(qps悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Opti原创 2015-11-16 16:47:34 · 1985 阅读 · 0 评论 -
何为幂等可重试(安全操作)
google了一些中文的资料, 基本了解了幂等是怎么回事儿. 备忘一下.PUT,DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。顺便说一句,因为GET操作是安全的,所以它自然也是幂等的。POST操作既不是安全的,也不是幂等的,比如常见的POST重复加载问题:当原创 2016-03-21 19:42:35 · 3089 阅读 · 0 评论 -
Redis实现分布式锁通用工具
import java.net.InetAddress;import java.net.UnknownHostException;import javax.annotation.Resource;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFact原创 2016-08-17 19:16:00 · 1251 阅读 · 0 评论 -
Lucene查询语法详解(Lucene query syntax)- 用于Kibana搜索语句
Lucene提供了丰富的API来组合定制你所需要的查询器,同时也可以利用Query Parser提供的强大的查询语法解析来构造你想要的查询器。本文章详细的介绍了Lucene的查询语法。通过Java语法分析器把一个查询字符串解析成 Lucene的查询器。在你选择使用Query Parser前,请考虑以下事项:如果你打算在程序中拼接查询语法串然后再利用Query Parser转换,那么强烈建议原创 2016-11-28 14:56:34 · 25216 阅读 · 0 评论 -
怎样理解一个新项目?
1,明确使用了什么框架?springmvc、struts1、struts2(Webwork2)Spring MVC和Struts2的区别http://blog.csdn.net/fireofjava/article/details/452736152,我们一般都是一个web项目,部署在tomcat上Tomcat 配置详解/优化方案http://www.jia原创 2016-12-16 10:03:43 · 1437 阅读 · 0 评论 -
可复用可扩展的红包后台系统设计方案
之前闲聊的分享,做了的以现有业务红包系统为例的可复用可扩展的系统设计。原创 2015-05-23 12:11:23 · 6549 阅读 · 0 评论 -
也谈谈Web Server,借助下Tencent的TWS。
也谈谈Web Server,借助下Tencent的TWS。原创 2015-05-17 13:08:39 · 3929 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第2页:如何确定数据单元
费了这么多口水,希望原先不太了解生产者/消费者模式的同学能够明白它是怎么一回事。然后在下一个帖子中,我们来说说如何确定数据单元。 另外,为了方便阅读,把本系列帖子的目录整理如下: 1、如何确定数据单元 2、队列缓冲区 3、队列缓冲区 4、双缓冲区 5、...... [1]:如何确定数据单元? 既然前一个帖子已经搞过扫盲原创 2010-05-17 10:20:00 · 11942 阅读 · 1 评论 -
ACE框架的三大部分
ACE这个开源项目的代码的量是很大的。对于系统编程、网络编程是非常的有用,但是对其介绍的书和资料是非常的少。要想了解和很好的使用,就必须要自己去看源代码了。(好在还有三本书,库中的事例还是比较的多) ACE库中的代码大体可以分为三大部分 1 OS Adaptation(操作系统适配)部分。这部分主要是屏蔽各操作系统的API的不同,将系统调用接口统一到C++函数的接口,转载 2009-08-23 13:23:00 · 1449 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第5页:环形缓冲区
[3]:环形缓冲区 前一个帖子提及了队列缓冲区可能存在的性能问题及解决方法:环形缓冲区。今天就专门来描述一下这个话题。 为了防止有人给咱扣上“过度设计”的大帽子,事先声明一下:只有当存储空间的分配/释放非常频繁并且确实产生了明显的影响,你才应该考虑环形缓冲区的使用。否则的话,还是老老实实用最基本、最简单的队列缓冲区吧。还有一点需要说明一下:本文所提及的“存储空间”,不仅包转载 2010-05-17 10:24:00 · 7963 阅读 · 1 评论 -
架构设计:生产者/消费者模式 第6页:环形缓冲区的实现
◇判断“空”和“满” 上述的操作并不复杂,不过有一个小小的麻烦:空环和满环的时候,R和W都指向同一个位置!这样就无法判断到底是“空”还是“满”。大体上有两种方法可以解决该问题。 办法1:始终保持一个元素不用 当空环的时候,R和W重叠。当W比R跑得快,追到距离R还有一个元素间隔的时候,就认为环已经满。当环内元素占用的存储空间较大的时候,这种办法显得很土(浪费空间)。原创 2010-05-17 10:29:00 · 7652 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第3页:队列缓冲区
[2]:队列缓冲区经过前面两个帖子的铺垫,今天终于开始聊一些具体的编程技术了。由于不同的缓冲区类型、不同的并发场景对于具体的技术实现有较大的影响。为了深入浅出、便于大伙儿理解,咱们先来介绍最传统、最常见的方式。也就是单个生产者对应单个消费者,当中用队列(FIFO)作缓冲。 关于并发的场景,在之前的帖子“进程还线程?是一个问题!”中,已经专门论述了进程和线程各自的优缺点,原创 2010-05-17 10:21:00 · 10311 阅读 · 0 评论 -
ACE中的Reactor框架简介
一、 概要目前用于事件多路分离的OS抽象既复杂又难以使用,因而也容易出错。反应器本质上提供一组更高级的编程抽象,简化了事件驱动的分布式应用的设计和实现。除此而外,反应器还将若干不同种类的事件的多路分离集成到易于使用的API中。特别地,反应器对基于定时器的事件、信号事件、基于I/O端口监控的事件和用户定义的通知进行统一地处理。 二、 使用a) 如转载 2009-08-23 13:06:00 · 1969 阅读 · 0 评论 -
反应器组件 ACE_Reactor
6.1 反应器组件 ACE_Reactor 反应器的基本原理是: 针对关心的某个事件写一个事件处理器(event_handler). 将该事件处理器登记到反应器中(同时指明关心的事件). 然后反应器会自动检测事件的发生. 并调用预先登记的事件处理器中的回调函数. 所以. 用户要做的工作就是: 创建事件处理器. 在反应器上登记该处理器. 告诉反应器它对某个事件有转载 2009-08-23 13:05:00 · 1183 阅读 · 0 评论 -
ACE_Reactor详解
Reactor 模型的基础是事件多路分离器 ,比如 selete(),poll(),WaitForMultipleObjects() 系统函数 。这些优秀的系统函数允许使用者只用一个进程或线程,就能处理许多事件。 下面,针对 selete() 作详解说明,其余系统函数类同。 select() 的机制 中提供一 fd_set 的数据结构,实际上是一 long 类型的数组 ,每一个数组元素转载 2009-08-23 13:04:00 · 2394 阅读 · 0 评论 -
ACE框架[推荐||精品]
ACE是高度可移植的开放源码主机基础设施中间件工具包,并已得到了广泛的使用。你可以从http://ace.ece.uci.edu/或http://www.riverace.com/自由获取其源代码。核心的ACE库大约包含了25万行C++代码,由约500个类组成。其中的许多类相互协作,形成了ACE的主要框架。ACE工具包还包括了许多较高级的组件,以及大量的示例和大范围的自动regressio转载 2009-08-23 13:03:00 · 5900 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第4页:注意事项
顺便补充几个注意事项,大伙儿留意一下: 1、对stdio进行读写操作是以阻塞方式进行。比如管道中没有数据,消费者进程的读操作就会一直停在哪儿,直到管道中重新有数据。 2、由于stdio内部带有自己的缓冲区(这缓冲区和管道缓冲区是两码事),有时会导致一些不太爽的现象(比如生产者进程输出了数据,但消费者进程没有立即读到)。具体的细节,大伙儿可以看"这里"。 ◇SOCKET转载 2010-05-17 10:23:00 · 8289 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第1页:“生产者/消费者模式”介绍
★简介 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从转载 2010-05-17 10:17:00 · 20393 阅读 · 1 评论 -
ACE中的Proactor介绍和应用实例
把这两天做Proactor的一些经验和心得写一下,可能会给一些人帮助。 Proactor是异步模式的网络处理器,ACE中叫做“前摄器”。 先讲几个概念: 前摄器(Proactor)-异步的事件多路分离器、处理器,是核心处理类。启动后由3个线程组成(你不需要关心这三个线程,我只是让你知道一下有这回事存在)。 接受器(Acceptor)-用于服务端,监听在一个端口上,接受用户的转载 2009-08-23 13:09:00 · 6032 阅读 · 3 评论 -
flume+kafka+storm
flume原理搭建配置文件kafka原理zookeeper搭建kafka搭建命令示例storm原理搭建Topology使用flume原理Flume 是一个可靠的,分布式的,用于采集,聚合,传输海量日志数据的系统。Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保原创 2017-11-30 20:18:52 · 825 阅读 · 0 评论