
高可用高并发
架构魔方
这个作者很懒,什么都没留下…
展开
-
LVS的四种模式的实现
LVS 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之上,传输层上有我们熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的负载均衡。LVS 的转发主要通过修改 IP 地址(NAT 模式,分为源地址修改 SNAT 和目标地址修改 DNAT)、修改目标 MAC(DR 模式)来实现。那么为什么 LVS 是在第四层做负载均衡?首先 LVS 不像 HAProxy转载 2017-07-27 13:40:37 · 647 阅读 · 0 评论 -
Web大规模高并发请求和抢购的解决方案
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,转载 2017-06-14 17:47:10 · 499 阅读 · 0 评论 -
MySql binlog日志详解
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW!1.Statement:每一条会修改数据的sql都会记录在binlog中。优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者转载 2017-06-14 17:46:14 · 616 阅读 · 0 评论 -
Mysql日志解析
修改Mysql配置Mysql配置地址为:C:\Program Files (x86)\MySQL\MySQL Server 5.5如果无法修改可以把my.ini拷贝出来,修改完后,再拷贝回去!如果配置了Mysql的日志生成路径,但是该目录尚未创建,那么启动会报错!关于Mysql日志splunk内置了两种mysql的日志,分别是mysqld以及mysql_转载 2017-06-14 17:45:01 · 368 阅读 · 0 评论 -
IO中同步、异步与阻塞、非阻塞的区别
一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数转载 2017-06-14 13:07:21 · 283 阅读 · 0 评论 -
消息队列使用的四种场景介绍
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用转载 2017-06-14 11:53:53 · 444 阅读 · 0 评论 -
利用redis + lua解决抢红包高并发的问题
抢红包的需求分析抢红包的场景有点像秒杀,但是要比秒杀简单点。因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。另外像小米这样的抢购也要比淘宝的要简单,也是因为像小米这样是一个公司的,如果有少量没有抢到,则下次再抢,人工修复下数据是很简单的事。而像淘宝这么多商品,要是每一个都存在着修复数据的风险,那如果出故障了转载 2017-06-12 14:59:57 · 521 阅读 · 0 评论 -
Java对MySQL数据库进行连接、查询和修改
0. 一般过程: (1) 调用Class.forName()方法加载驱动程序。 (2) 调用DriverManager对象的getConnection()方法,获得一个Connection对象。 (3) 创建一个Statement对象,准备一个SQL语句,这个SQL语句可以是Statement对象(立即执行的的语句)、PreparedStatement语句(预编译的语转载 2017-06-12 11:49:37 · 824 阅读 · 0 评论 -
TDDL、Amoeba、Cobar、MyCAT架构比较
布式数据库中间件TDDL、Amoeba、Cobar、MyCAT架构比较分比较了业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线框架比较TDDLAmoebaCobarMyCat点评TDDL不同于其它几款转载 2017-06-12 11:37:45 · 553 阅读 · 0 评论 -
统一接入层方案
http://www.360doc.com/content/15/0215/18/5054188_448814879.shtml转载 2017-06-11 17:41:09 · 465 阅读 · 0 评论 -
nginx缓存设置proxy_cache
http://www.cnblogs.com/zlingh/p/5879988.html转载 2017-06-11 17:39:38 · 406 阅读 · 0 评论 -
聊聊Twemproxy是什么
最近看了京东的一些技术,发现京东中使用较多的,技术是nginx+redis+lua , 还有一种常用的就是 Twemproxy,这个东西是干什么的呢,根据名字可以看出它是一个代理的中间件 ,因为他的后端是多台REDIS 或memcached所以也可以被称为分布式中间件。Twemproxy介绍Twemproxy 也叫 nutcraker。是 Twtter 开源的一转载 2017-06-11 17:35:59 · 355 阅读 · 0 评论 -
Lua: 给 Redis 用户的入门指导
可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言。Hello, Lua!我们的第一个Redis Lua 脚本仅仅返回一个字符串,而不会去与redis 以任何有意义的方式交互。local msg = "Hello, world!"return msg这是非常简单的,第一行代码定义了一个本转载 2017-06-11 17:34:25 · 447 阅读 · 0 评论 -
mycat系列-mycat原理
Mycat的原理并不复杂,复杂的是代码,如果代码也不复杂,那么早就成为一个传说了。Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。上述图片里,Orders表被分为三个分片data转载 2017-06-14 17:47:46 · 546 阅读 · 0 评论 -
ngrok+nginx 实现内网穿透 共用80端口
内网穿透能干嘛:穿透后,你的机器指定端口就直接暴露在外网上,3389,vnc,web服务等等任何服务都可以支持。微信开发需要回调web服务器接口,如果开发机器在内网,就无法调试。原理外网服务器A,内网服务器B,通过某种协议连接,将域名解析到A,A将所有用户请求数据转发到B的指定端口,B返回的数据通过A转给用户,等于在B和用户之间加了代理A解决方案内网穿透有现转载 2017-06-14 17:48:23 · 12263 阅读 · 0 评论 -
浅谈 Nginx和LVS的各种优缺点
LVS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑。LVS基本能支持所有应用,因为工作在第4层,所以LVS可以对几乎所有应用进行负载均衡,包括Web、数据库等。注意:LVS并不能完全判别节点故障,比如在WLC规则下,如果集群里有一个节点没有配置VIP,将会导致整个集群不能使用。还有一些其他问题,目前尚需进一步测试。转载 2017-07-27 13:38:50 · 688 阅读 · 0 评论 -
lvs+keepalived+nginx几种模式的比较
本文根据自己实验以及调研得出的结论,纯属个人意见,如有不对之处请留言修正。下面是几种模式比较:1.lvs+keepalived做前端,nginx做后端反向代理和负载均衡 优点:keepalived双机备份实现负载均衡 缺点:nginx如果宕了,后端的realserver没宕就GG了 楼主不喜欢!2.nginx做前端反向代理VIP,lvs+keepa转载 2017-07-27 13:38:25 · 3306 阅读 · 0 评论 -
不需要登录的app业务如何记录用户状态
可以采用app获取设备号并服务端保存设备信息和业务信息的方式欢迎加入我的QQ技术交流群425783133原创 2017-06-15 15:35:59 · 1764 阅读 · 0 评论 -
订单超时 如何改变订单状态
默认首先想到的是springquartz群里哥们提了一种解决方案,可以用mq之类的中间件,定时和延时投递消息。欢迎加入我的QQ技术交流群425783133原创 2017-06-15 15:33:31 · 3355 阅读 · 0 评论 -
利用DelayQueue实现延时消息队列(简易版MQ)
1.上文关于阻塞队列的介绍:http://blog.youkuaiyun.com/caicongyang/article/details/506498972.需求 延迟消息队列:1)2个小时后给用户发送短信。2)15分钟后关闭网络连接。3)2分钟后再次尝试回调。3.案例demoMessage.Java[java] view plain cop转载 2017-06-15 15:06:51 · 1180 阅读 · 1 评论 -
DelayQueue延时队列的使用
在谈到DelayQueue的使用和原理的时候,我们首先介绍一下DelayQueue,DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed 元素。DelayQueue阻塞队列在我们系统开发中也常常会用到,例如:缓存系统的设计,缓存中的对象,超过了空闲时间,需要从缓存中移出;任务调度系统,能够准确的把握任务的执行时间。我转载 2017-06-15 15:05:48 · 1420 阅读 · 0 评论 -
activemq的几种基本通信方式总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择。这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。另外,通过结合这些模式的具体应用,我们在处理某些应用场景的时候也衍生转载 2017-06-15 14:59:09 · 335 阅读 · 0 评论 -
ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery)
有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。类似这种需求,ActiveMQ提供了一种broker端消息定时调度机制。我们只需要把几个描述消息定时调度方式的参数作为属性添加到消息,broker端的调度器就会按照我们想要的行为去处理消息。一共有四个属性:Prope转载 2017-06-15 14:57:02 · 947 阅读 · 0 评论 -
利用DelayQueue实现延时消息队列(简易版MQ)
1.上文关于阻塞队列的介绍:http://blog.youkuaiyun.com/caicongyang/article/details/506498972.需求 延迟消息队列:1)2个小时后给用户发送短信。2)15分钟后关闭网络连接。3)2分钟后再次尝试回调。3.案例demoMessage.Java[java] view plain cop转载 2017-06-15 14:54:28 · 1387 阅读 · 0 评论 -
Windows 下 配置 ngrok ngrok使用教程
1. ngrok介绍ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。简单来说就是可以通过外网访问你本地的服务器。这样可以方便调试本地的后台代码,不用老是把代码上传到外网服务器如bae、sae等。2.ngrok能做什么ngrok不但提供了一个在外网能够安全的访问内网W转载 2017-06-15 13:12:30 · 1781 阅读 · 0 评论 -
MySQL高可用架构之MHA
简介:MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在转载 2017-06-14 17:49:46 · 442 阅读 · 0 评论 -
MySQL实现两主多从架构
1.实现目标 目标清单: 1)Master(192.168.31.230)为正常运行环境下的主库,为两个Slave(192.168.31.231和192.168.31.232)提供“主-从”复制功能; 2)Master_Backup(192.168.31.233)是Master的备份库,只要Master是正常的,它不对外提供服务。它与Master之间属于"主-主转载 2017-06-14 17:49:11 · 2208 阅读 · 0 评论 -
用lua扩展你的Nginx(写的非常好)
一. 概述Nginx是一个高性能,支持高并发的,轻量级的web服务器。目前,Apache依然web服务器中的老大,但是在全球前1000大的web服务器中,Nginx的份额为22.4%。Nginx采用模块化的架构,官方版本的Nginx中大部分功能都是通过模块方式提供的,比如Http模块、Mail模块等。通过开发模块扩展Nginx,可以将Nginx打造成一个全能的应用服务器,这样可以将一些功能在前转载 2017-06-11 17:31:28 · 599 阅读 · 0 评论 -
mysql5.7 MGR集群搭建部署
最近看了一下mysql5.7的MGR集群挺不错的,有单主和多主模式,于是乎搭建测试了一下效果还不错,我指的不错是搭建和维护方面都比较简单。网上绝大多数都是单主模式,当然我这里也是,为了加深印象,特意记录一下搭建过程,等以后再去尝试多主模式,相信大家现在数据库的瓶颈基本都是在写,读写分离虽然是一种可行的解决方案,但是如果数据量很大,写一样会有问题,虽然有些解决方案能部署多个主节点,能同时进行读写,但转载 2017-06-23 14:17:30 · 1241 阅读 · 0 评论 -
mysql 双主方案优缺点
MySQL + MHA -- 可以解决脑裂的问题,需要的IP多,小集群是可以的,但是管理大的就麻烦,其次MySQL + MMM 的话且坑很多,有MHA就没必要采用MMM建议1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或 Keepalive 或 heartbeat2.若是双主复制,还做了数据的拆分,则可以考虑采用Cobar;3.若是双主复制+Slave,还做了数据转载 2017-06-23 13:45:44 · 15001 阅读 · 1 评论 -
Servlet3中的AsyncContext异步和多线程异步有什么区别
AsyncContext不是让你异步输出,而是让你同步输出,但是解放服务器端的线程使用,使用AsyncContext的时候,对于浏览器来说,他们是同步在等待输出的,但是对于服务器端来说,处理此请求的线程并没有卡在那里等待,则是把当前的处理转为线程池处理了,关键就在于线程池,服务器端会起一个线程池去服务那些需要异步处理的请求,而如果你自己每次请求去起一个线程处理的话,这就有可能会耗大量的线程。转载 2017-06-16 18:01:24 · 607 阅读 · 0 评论 -
Web Service工作原理及实例
一、Web Service基本概念Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。XML:(Extensible Markup Language)扩展型转载 2017-06-16 17:23:02 · 506 阅读 · 0 评论 -
关于Java WebService 的几种实现方式
1、jax-ws使用比较简单,就几个注解,2、但是如果想用服务器发布webservice,最好还是结合一些开源的webservice框架,我建议用CXF。3、xfire已经几年不更新了,cxf包含了xfire。虽然jar包多,但是兼容性问题都是可以解决的转载 2017-06-16 17:15:10 · 1279 阅读 · 0 评论 -
hessian、rmi、dubbo与rpc
简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。原创 2017-06-16 17:09:10 · 5550 阅读 · 1 评论 -
dubbo通信协议之对比
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况,本文参考dubbo官方文档http://dubbo.io/User+Guide-zh.htmdubbo共支持如下几种通信协议:dubbo://rmi://hessian://http://webservice://thrift://memcached://redis://部分协议的特点和使用场景如下转载 2017-06-16 16:52:08 · 676 阅读 · 0 评论 -
远程通信机制RPC与RMI的关系
1.RPC RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC不依赖于具体的网络传输协议,tcp、udp等都可以。由于存在各式各样的变换和细节差异,相应的rpc也派生出了各式远程过程通信协议。RPC是跨语言的通信标准,SUN和微软都有其实现,比如RMI可以被看转载 2017-06-16 16:50:20 · 843 阅读 · 1 评论 -
RPC与RMI的区别
RMI和RPC之间最主要的区别在于方法是如何被调用的。在RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为转载 2017-06-16 16:36:22 · 487 阅读 · 0 评论 -
RMI工作原理
RMI的本质就是实现在不同JVM之间的调用,它的实现方法就是在两个JVM中各开一个Stub和Skeleton,二者通过socket通信来实现参数和返回值的传递。 stub:为屏蔽客户调用远程主机上的对象,必须提供某种方式来模拟本地对象,这种本地对象称为存根(stub),存根负责接收本地方法调用,并将它们委派给各自的具体实现对象。 有关RMI的例子代码网上可以找转载 2017-06-16 16:29:19 · 621 阅读 · 0 评论 -
深入浅出 RPC
近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序员会感觉 RPC 比较神秘,而一些有多年使用 RPC 经验的程序员虽然使用经验丰富,但有些对其原理也不甚了了。缺乏对原理层面的理解,往往也会造成开发中的一些误用。本文分上下两篇《浅出篇》和《深入篇》,其目标就是想转载 2017-06-16 15:50:30 · 643 阅读 · 0 评论 -
Hystrix 使用与分析
转载请注明出处哈:http://hot66hot.iteye.com/blog/2155036一:为什么需要Hystrix?在大中型分布式系统中,通常系统很多依赖(HTTP,hession,Netty,Dubbo等),如下图: 在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机转载 2017-06-16 13:09:04 · 518 阅读 · 0 评论