分布式与大数据系统
文章平均质量分 56
快乐的霖霖
一个人默默的奋斗者
展开
-
分布式系统性能测试框架
分布式系统性能测试框架1. 分布式系统性能测试介绍2. 测试框架原创 2015-09-08 16:46:17 · 4882 阅读 · 0 评论 -
Serverless架构模式简介
Serverless架构模式简介一. 简介 Serverless是一种无服务的架构,类似aws lambda。Serverless与跟传统架构不同,由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,短暂的(可能只存在于一次请求过程中),完全被第三方管理。另一种思考方式,这是函数服务‘Functions as a Service / FaaS’。原创 2017-05-06 11:48:03 · 11751 阅读 · 0 评论 -
分布式系统的SDK端通用退避策略
分布式系统的SDK端通用退避策略 分布式系统中SDK端一般使用退避算法进行重试行为,根据业务使用的场景不同,sdk端退避算法主要有两种: 1. 激进的退避算法:适用于那种及时性请求,可见性要求敏感类的。 2. 保守的退避算法:适用于那些不注重及时性,但是请求量比较大的。原创 2017-05-06 12:11:06 · 1394 阅读 · 0 评论 -
一种分布式系统中定时任务的解决思路和框架
一种分布式系统中定时任务的解决思路和框架 周期性定时任务在分布式系统中非常常见,如周期性地执行数据采集、统计、推送等等。一个业务系统的后台可能存在很多不同种类、不同粒度的周期性任务,而且它们分布在不同的服务器节点中执行。 常见的解决思路:1. 利用linux crontab或windows计划任务定时执行一段脚本或程序;2. 自编程序中实现定时器,原创 2017-05-21 15:42:10 · 4491 阅读 · 1 评论 -
美团点评分布式ID生成系统Leaf介绍
美团点评分布式ID生成系统Leaf介绍1. Leaf-segment数据库方案第一种Leaf-segment方案,在使用数据库的方案上,做了如下改变:原方案每次获取ID都得读写一次数据库,造成数据库压力大。改为利用proxy server批量获取,每次获取一个segment(step决定大小)号段的值。用完之后再去数据库获取新的号段,可以转载 2017-05-21 16:39:16 · 4639 阅读 · 0 评论 -
DNS在架构设计中的巧用
DNS在架构设计中的巧用一、缘起一个http请求从客户端到服务端,整个执行流程是怎么样的呢?一个典型流程如上:(1)客户端通过域名daojia.com请求dns-server(2)dns-server返回域名对应的外网ip(1.2.3.4)(3)客户端访问外网ip(1.2.3.4)向反向代理nginx(4)反向代理ng转载 2017-06-03 19:20:18 · 879 阅读 · 0 评论 -
session一致性架构设计
session一致性架构设计一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。 Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。转载 2017-06-04 08:16:07 · 1211 阅读 · 0 评论 -
高效实现延迟消息功能
高效实现延迟消息功能高效延时消息,包含两个重要的数据结构:(1)环形队列,例如可以创建一个包含3600个slot的环形队列(本质是个数组)(2)任务集合,环上每一个slot是一个Set 同时,启动一个timer,这个timer每隔1s,在上述环形队列中移动一格,有一个Current Index指针来标识正在检测的slot。原创 2017-06-04 08:53:29 · 2800 阅读 · 0 评论 -
分布式系统SLA怎么做?
分布式系统SLA怎么做? 分布式系统有自己的server端,也有提供给用户的SDK端,server端的SLA主要是给内部看的,外部使用用户看到的是SDK端呈现的SLA指标数据。 每个异常对应一个HTTP CODE。 每个请求一般要记录下:请求类型,请求大小,请求开始时间,请求latency,errcode, httpcode。 1.原创 2017-07-02 00:45:20 · 2459 阅读 · 0 评论 -
参考经典的Netfix架构
参考经典的Netfix架构团队的开源项目在 https://netflix.github.io/。Netflix 全栈架构一览大数据Genie - 对我们的各种数据处理框架(特别是 Hadoop)的强大抽象(基于REST)。Inviso - 详细了解我们的Hadoop作业和集群的性能。Lipstick - 以清晰,直观原创 2017-03-28 23:17:09 · 4578 阅读 · 0 评论 -
系统缓存设计
Redis架构之防雪崩设计理念原创 2017-03-28 15:05:40 · 1389 阅读 · 0 评论 -
分布式系统的自主服务
分布式系统的自主服务 分布式系统作为server运行在机器上,需要很好的自动化运维来操作集群上的复杂的分布式系统。自动化运维要做到基础数据的完整收集,关键信息的准确推送,运维流程的正确/简便执行和确认,进程内部数据按需获取,对象运行状况的长期监控、工具集成,方便运维人员和盘古内部人员操作。以满足devops和专有域输出,解放生产力。高级功能还有故障辅助诊断、workload自动原创 2016-12-19 22:30:37 · 694 阅读 · 0 评论 -
condition update在分布式系统中设计
condition update在分布式系统中设计 1. 定义 condition update称为条件更新,用于分布式系统中数据一致性,能够保证在并发操作数据时的正确性。 2. 方式 1. 可以通过version来保证condition update,每一次对文件的更新都产生一个version,而且客户端可以拿到这个versio原创 2016-07-02 16:08:50 · 807 阅读 · 0 评论 -
构建高并发高可用的电商平台架构大纲
构建高并发高可用的电商平台架构大纲 参考:http://blog.csdn.net/yangbutao/article/details/12242441原创 2016-06-19 01:00:52 · 800 阅读 · 0 评论 -
聊聊高并发系统之队列术
聊聊高并发系统之队列术队列在数据结构中是一种线性表,从一端插入数据,然后从另一端删除数据。本文目的不是讲解各种队列算法,而是在应用层面讲述使用队列能解决哪些场景问题。在我开发过的系统中,不是所有的业务都必须实时处理、不是所有的请求都必须实时反馈结果给用户、不是所有的请求/处理都必须100%处理成功、不知道谁依赖“我”的处理结果、不关心其他系统如何处理后续业务、不需要强一转载 2016-09-06 16:58:16 · 2084 阅读 · 0 评论 -
聊聊高并发之隔离术
聊聊高并发之隔离术 隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的;而资源隔离有脏数据隔离、通过隔离后减少资源竞争提升性能等。我遇到的比较多的隔离手段有线程隔离、进程隔离、集群隔离、机房隔离、读写隔离、动静隔离、爬虫隔离等。而出现系统问题时可以考虑负载转载 2016-09-16 00:31:55 · 1195 阅读 · 0 评论 -
API网关
API网关 api gateway 即 api 网关。所有的请求首先会经过这个网关。这有点类似于前端控制器模式,也有点类似于 Facade模式。 如下图所示: 由于所有的请求会先经过这个 api 网关,所以 可以在 这里做 权限控制,安全,负载均衡,请求分发,监控等等。 那么,为什么原创 2016-09-16 01:12:04 · 2328 阅读 · 0 评论 -
聊聊java高并发系统之异步非阻塞
聊聊java高并发系统之异步非阻塞几种调用方式同步阻塞调用即串行调用,响应时间为所有服务的响应时间总和;半异步(异步Future)线程池,异步Future,使用场景:并发请求多服务,总耗时为最长响应时间;提升总响应时间,但是阻塞主请求线程,高并发时依然会造成线程数过多,CPU上下文切换;全异步(Callback)转载 2016-09-16 10:51:17 · 5073 阅读 · 0 评论 -
Vector Clock/Version Clock
Vector Clock/Version Clockphysical clock 机器上的物理时钟,不同的机器在同一个时间点取到的physical clock不一样,之间会存在一定的误差,NTP可以用来控制这个误差,同一个机房内的机器之间的时钟误差可以控制在1us以内,跨机房可以控制在几十ms。两个事件a和b,a在机器M1上physical clock为12点5转载 2016-09-24 22:46:32 · 927 阅读 · 0 评论 -
分布式系统中生成全局唯一ID的3个思路
分布式系统中生成全局唯一ID的3个思路 本文根据http://chuansong.me/n/950274251672总结而来!1. 基于数据库的生成 标识的生成方法有很多,有集中式的,分布式的;有后端的,前端的,当然还有人工的。 并没有一种通用的生成方法来适应各种应用场景。人工生成的确是一种方式,比如电子邮箱,微信ID,各种论坛的账号原创 2016-10-12 22:41:28 · 2893 阅读 · 0 评论 -
分布式系统的时间
分布式系统的时间事件的顺序大家都知道,Linearizability在一些系统(譬如分布式数据库)里面是非常重要的,我们不能允许数据更新之后仍然能读到原先的值,譬如银行转账,用户A有100元,转给用户B 10元,这个操作之后用户A只可能有90元了,但如果A后续发起了另一个转账请求给C转10元的时候,事务里面读到A的余额仍然是100元,这个问题就大了。一个更简化的原创 2017-07-08 17:08:10 · 1007 阅读 · 0 评论 -
Spanner: CAP, TrueTime and Transaction
Spanner: CAP, TrueTime and Transaction参考资料: 点击打开链接原创 2017-07-08 17:24:28 · 763 阅读 · 0 评论 -
分布式系统SDK端重试策略
分布式系统SDK端重试策略1. API 的属性:成功率优先:强调成功率, 所以重试的时候,sleep 时间较长,按照指数退避的方式sleep。latency优先: 强调latency,所以重试的时候,sleep的时间较短。2. 重试次数retryTimes + 1原创 2017-07-09 23:46:14 · 650 阅读 · 0 评论 -
一种多级缓存的系统架构
一种多级缓存的系统架构 下面这个也是比较常用的多级缓存的系统架构图: 这是一个使用了多级缓存的系统。Nginx应用服务器的本地缓存解决了热点数据的缓存问题。Redis分布式缓存集群减少了访问回源率。Tomcat应用集群使用的平台级缓存防止了缓存失效/奔溃之后的冲击。数据库缓存提升了数据库查询时的效率。原创 2018-03-11 10:55:09 · 2313 阅读 · 1 评论 -
Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结Nginx对于中间件nginx常用来做流量的分发,同时nginx本身也有自己的缓存(容量有限),我们可以用来缓存热点数据,让用户的请求直接走缓存并返回,减少流向服务器的流量一、模板引擎通常我们可以配合使用freemaker/velocity等模板引擎来抗住大量的请求。小型系统可能直接在服务器端渲染出所有的页面并放入缓存,之...转载 2018-03-17 12:50:42 · 998 阅读 · 2 评论 -
Quorum Journal Manager原理
Quorum Journal Manager原理 在一个典型的HA集群,两个独立的物理节点配置为NameNodes。在任何时间点,其中之一NameNodes是处于Active状态,另一种是在Standby状态。 Active NameNode负责所有的客户端的操作,而Standby NameNode尽用来保存好足够多的状态,以提供快速的故障恢复能力。 为了保原创 2018-03-11 22:21:08 · 1669 阅读 · 0 评论 -
分布式系统技术—心跳
分布式系统技术—心跳心跳顾名思义,就是以固定的频率向其他节点汇报当前节点状态的方式。收到心跳,一般可以认为一个节点和现在的网络拓扑是良好的。当然,心跳汇报时,一般也会携带一些附加的状态、元数据信息,以便管理。故障检测是任何一个拥有容错性的分布式系统的基本功能,而实际上所有的故障检测协议都基于心跳通讯机制,原理很简单,被监控的组件定期发送心跳信息给监控进程(或者由监控进程轮询被监控组件)原创 2018-03-11 22:56:42 · 7403 阅读 · 1 评论 -
实现一个高性能网络通讯库的要点
实现一个高性能网络通讯库的要点 由于硬件的发展速度快,本来占时间消耗小头的软件层,变成了大头,原本占性能比例非常小的的中断、上下文切换,也成为了性能优化的方向。 许多bypass kernel的方案开始发展起来,以前在千兆网卡普及的时代,就有用户态报文处理框架如netmap,需要自己加载一个特殊的内核模块,将驱动使用的内存mmap到用户空间,供用户进程使用。也有我们现在在用的DPDK。...原创 2018-04-07 16:24:16 · 985 阅读 · 0 评论 -
基于容器构建具备一致性系统环境
原创 2018-08-24 16:43:16 · 511 阅读 · 0 评论 -
分布式系统之数据分片
分布式系统之数据分片详细参考:http://www.cnblogs.com/xybaby/p/7076731.html...原创 2018-09-18 18:07:21 · 1013 阅读 · 0 评论 -
基于分布式一致性系统实现的分布式锁的生命期问题探究
基于分布式一致性系统实现的分布式锁的生命期问题探究分布式锁的生命期,即占有分布式锁所有权的Client与Quorum Server之间建立连接上耦合的Session的生命期,依赖着Client与Quorum Server之间定期心跳来更新。Client与Quorum Server,如果在本端...原创 2018-11-08 15:25:53 · 366 阅读 · 1 评论 -
API调用次数限制实现
API调用次数限制实现参考资料: 1. https://zhuanlan.zhihu.com/p/20872901?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.ioToken BucketRedis IncrRedis EvalBetter Rate Limiting Wit转载 2016-05-21 20:24:42 · 29344 阅读 · 2 评论 -
一致性哈希之应用twemproxy与codis
一致性哈希之应用twemproxy与codis一. twemproxytwemproxy 是 twitter 开源的一个轻量级的后端代理,兼容 redis/memcache 协议,可用以管理 redis/memcache 集群。 twemproxy 内部有实现一致性哈希算法,对于客户端而言,twemproxy 相当于是缓存数据库的入口,它无需知道后端的...原创 2018-03-08 22:28:06 · 2699 阅读 · 0 评论 -
zookeeper session实现机制
zookeeper session实现机制原创 2017-12-23 18:05:55 · 680 阅读 · 0 评论 -
分布式系统的正确性验证方法
Jepsen架构介绍 Jepsen是一个开源的分布式一致性验证框架,可用于验证分布式数据库、分布式消息队列、分布式协调系统。Jepsen探索特定故障模式下分布式系统是否满足一致性。Jepsen框架是一个Clojure程序库,Clojure是一门运行在JVM上的解释型的类Lisp语言。Jepsen测试程序是一个Clojure程序,它使用Jepsen框架来构建一个分布式系统,对其执原创 2017-08-25 17:03:26 · 4339 阅读 · 0 评论 -
Apollo分布式配置中心系统
Apollo分布式配置中心系统1.1 基础模型1.2 架构模块1.3 各模块概要介绍1.3.1 Config Service提供配置获取接口提供配置更新推送接口(基于Http long polling)服务端使用Spring DeferredResult实现异步化,从而大大增加长连接数量目前使用的tomcat embe原创 2017-08-26 15:53:26 · 6330 阅读 · 0 评论 -
分布式系统的Reliability和Availability区别
分布式系统的Reliability和Availability区别Reliability和Availability分别对应可靠性和可用性, 这两个概念既有区别也有联系:Reliability定义为一个服务连续无故障运行的时间,无故障运行的时间越长,可靠性就越高。Availiability定义为在足够长的时间里,比如一年的时间里,一个服务可用的时间,服务可用时间越长越好。一原创 2017-09-09 17:00:23 · 4513 阅读 · 0 评论 -
架构师需要了解的Paxos原理、历程及实战
架构师需要了解的Paxos原理、历程及实战数据库高可用性难题数据库的数据一致和持续可用对电子商务和互联网金融的意义不言而喻,而这些业务在使用数据库时,无论 MySQL 还是 Oracle,都会面临一个艰难的取舍,就是如何处理主备库之间的数据同步。对于传统的主备模式或者一主多备模式,我们都需要考虑的问题,就是与备机保持强同步还是异步复制。对于强同步转载 2016-01-18 22:21:16 · 13533 阅读 · 0 评论 -
分布式存储系统压力模拟测试器
分布式系统压力模拟测试器1. 设计目标 模拟线上压力,复现生产集群中的压力情况,作为测试场景中的背景压力。 1)测试压力(QPS)和执行(Execute)分离。 2)压力的可配置描述化(分布,Replay Log)。 3)Execute(一次Pangu File的读/写)的可以配置描述化。 4)每个Case需要做的事情足够简原创 2017-10-14 17:27:28 · 1649 阅读 · 0 评论 -
阿里云飞天系统
阿里云飞天系统 有幸在阿里云飞天部门工作几年,下面给出基础架构一览:原创 2017-10-24 09:38:47 · 8068 阅读 · 0 评论