![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
海量架构设计
tenfyguo
目前在国内某互联网公司从事移动支付和互联网金融相关产品的架构设计和研发管理工作。
展开
-
HDFS Namenode是如何工作的?
来自:http://www.csdn.net/article/2012-07-03/2807066HDFS(Hadoop Distributed Filesystem)客户端通过被称之为Namenode单服务器节点执行文件系统原数据操作,同时DataNode会与其他DataNode进行通信并复制数据块以实现冗余,这样单一的DataNode损坏不会导致集群的数据丢失。但NameN转载 2012-10-06 16:19:36 · 11848 阅读 · 1 评论 -
MySQL 架构 - MySQL 存储引擎 - 其他存储引擎
MEMORY (HEAP)引擎 当你需要快速读取数据,在服务器重启后,也不需要改变和保存数据,使用Memory表(以前叫做HEAP 表)是非常合适的。Memory表要比MyISAM表快上一个级别。所有的数据都放在内存中,所以查询不用等待硬盘的I/O。在服务器重启后,表结构依然存在,但是数据都会丢失。 下面说几个可以用到Memory表的情况。 对于查找或映射表比较适合,如转载 2012-09-29 16:06:15 · 1057 阅读 · 0 评论 -
MySQL 架构 - MySQL 存储引擎 -InnoDB
InnoDBInnoDB支持事物处理,它处理许多短期的事物,这些事物常常是成功执行而不是回滚的。InnoDB是MySQL最受欢迎的存储引擎了。常见的非事物引擎需求,如性能和自动回复,它也完全具备。 InnoDB在一些列的文件中存储数据,被称为表空间(tablespace)。表空间对于用户来说是黑盒,InnoDB内部负责处理。在MySQL4.1以及更新的版本中,InnoDB可以存储数据以转载 2012-09-29 11:09:54 · 857 阅读 · 0 评论 -
使用反向代理服务器进行负载均衡
普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外原创 2012-06-08 14:46:32 · 1321 阅读 · 0 评论 -
负载均衡网络探测方式
在集群系统中,尽管有多种的负载均衡算法可以较好的把数据流量分配给RS服务器去,但如果负载均衡策略没有对网络系统状况的检测方式和能力,一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下,负载均衡设备依然把一部分数据流量引向那台服务器,这势必造成大量的服务请求被丢失,达不到不间断可用性的要求。所以良好的负载均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力:原创 2012-06-07 14:40:48 · 1879 阅读 · 0 评论 -
IPVS调度器的八种负载调度算法学习总结
一,轮叫(Round Robin) 调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上(i = (i+1) mod n, i 表示上次选中的RS,n 表示总共有多少台RS),它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。注意:这里其实认为每台服务的权重是0和1,对权值为0的RS,则认为不可用而不会被调度器调度到。二,加权轮叫原创 2012-05-30 17:11:49 · 1255 阅读 · 0 评论 -
LVS中前置机LB的容错机制
LVS前端的调度器有可能成为系统的单一失效点(Single Point of Failure)。一般来说,调度器的可靠性较高,因为调度器上运行的程序较少而且大部分程序早已经遍历过,但我们不能排除硬件老化、网络线路或者人为误操作等主要故障。为了避免调度器失效而导致整个系统不能工作,我们需要设立一个从调度器作为主调度器的备份。两个心跳(Heartbeat)进程分别在主、从调度器上运行,它们通过串口线和原创 2012-05-29 17:52:50 · 1510 阅读 · 0 评论 -
负载均衡技术列表
1,基于DNS的Round-Robin负载均衡;2,基于客户端探测的负载均衡;3,基于应用层的负载均衡;4,基于IP的负载均衡,如LVS。原创 2012-04-23 18:54:18 · 884 阅读 · 0 评论 -
DNS解析经验
DNS解析有有个缺陷,每个单独域名里写在最前面的那个ip,它被轮询到的概率要比同组的服务器高10%,而且随着同组服务器的增多,这个差距会变大。所以最解析时候,每个IDC最好把硬件性能最好的服务器ip放在最前面。原创 2012-03-07 14:18:56 · 698 阅读 · 0 评论 -
apache的MPM模块两种工作模式详解(prefork和worker)
空闲子进程:是指没有正在处理请求的子进程。1、prefork.c模块(一个非线程型的、预派生的MPM) prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:他能够使用那些没转载 2011-11-30 14:10:54 · 1656 阅读 · 0 评论 -
合理设置apache httpd的最大连接数
来自:http://hi.baidu.com/rainchen/blog/item/095f0a551fa802c5b645ae46.html 手头有一个网站在线人数增多,访问时很慢。初步认为是服务器资源不足了,但经反复测试,一旦连接上,不断点击同一个页面上不同的链接,都能迅速打开,这种现象就是说明apache最大连接数已经满了,新的访客只能排队等待有空闲的链接,而如果一旦连接上转载 2011-11-28 13:18:44 · 1117 阅读 · 0 评论 -
双网卡实现负载均衡技术的实现与原理
<br />网卡出错冗余 <br /> : AFT(Adapter Fault Tolerance)技术是一种在服务器和交换机之间建立冗余连接的技术,亦即在服务器上安装两块网卡,一块为主网卡,另一块作为备用网卡,然后用两根网线将两块网卡都连到交换机上。 <br />: AFT技术的基本工作过程是,当在Netware或NT服务器上装配两块网卡后,AFT技术就能把这两块网卡当作一个网卡工作组来对待,一块为主网卡,另一块为备用网卡。当主网卡工作时,智能软件通过备用网卡对主网卡及连接状态时刻进行监测,即采转载 2011-03-01 23:24:00 · 7133 阅读 · 0 评论 -
一种提升IT服务水平的方法论和最佳实践----- itil学习小结
Itil :全称:(Information Technology Infrastructure Library,信息技术基础架构库)。是什么?是一种提升IT服务的方法论和最佳实践,帮助IT服务的提供者以合适的成本提供满足要求的高质量的服务。 但实际上,该方法论不止用在IT服务,其他的服务提供者都可以借鉴和参考。 一,itil的核心和本质。原创 2012-08-01 18:54:46 · 3876 阅读 · 0 评论 -
复杂大系统需要对服务依赖关系进行管理
当一个系统变得越来越复杂的时候,它必然大量的依赖外部系统和内部其他系统的服务才能达成业务目标,因此,这个时候,对服务依赖进行有效的管理才能提升服务的故障容忍度,这也是大系统小做的核心思路。 那么如何进行服务依赖管理呢?1,首先,我们需要区分服务的强依赖和弱依赖关系,即区分关键路径和非关键路径。对弱依赖的设置开关。 那么说明是强依赖呢?强依赖即若强依赖的该系统如果无法原创 2013-09-01 17:58:17 · 2782 阅读 · 0 评论 -
无锁队列的实现
来自: http://coolshell.cn/articles/8239.html 关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compa转载 2013-05-02 18:00:52 · 1382 阅读 · 0 评论 -
关于云调度运营的原则
一,原则:资源替换优先于故障诊断。条件:1,需要建立荣誉的资源池,关键时候可以进行灵活调度;2,需要明确的服务质量要求,在xx时间内可以提供一个全新的资源 - 如设备,os等。 二,虚拟化是一个趋势1,建立统一的标准化的资源单元,如机器型号等。2,资源标准化和定制化的矛盾3,虚拟化解决资源的云化,解决资源的聚合和隔离问题,解决资源的利用率问题。原创 2013-04-27 12:43:51 · 1028 阅读 · 0 评论 -
架构分析—LinkedIn出品的databus
来自:http://blog.sina.com.cn/s/blog_6c9b83990101bbzq.html一、关于databus LinkedIn于2月26日开源了其低延时变化数据捕获系统Databus,该系统可以在MySQL以及Oracle数据源上捕获数据,当下LinkedIn只开源了Oracle上的连接器。Databus作为LinkedIn生态系统中的转载 2013-04-22 18:40:23 · 4065 阅读 · 0 评论 -
如何应对美国春晚“超级碗”带来的海量访问请求?
来自:http://www.infoq.com/cn/news/2013/02/advices-on-superbowl-spike笔者说明:这篇转载的文章列举到的一些站点优化策略,对搭建高性能的服务具有借鉴意义。 美国时间2013年2月4日,美国人民的春晚——美国橄榄球联盟(NFL)第47届“超级碗(Super Bowl)”总决赛——在新奥尔良穹顶体育场上演。“超级转载 2013-02-15 22:59:41 · 1089 阅读 · 0 评论 -
java中的cas实现
转载自:http://www.blogjava.net/xylz/archive/2010/07/04/325206.html 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其转载 2012-12-31 18:51:49 · 5766 阅读 · 3 评论 -
常用的基于token的实现方案
token常常用在各种应用中,如下场景: 1,用户输入密码和帐号后,系统进行验证后,生成一个session,分配一个sessionid给使用者,后续服务使用者就无需每次都输入密码和验证密码了,只需把对应的帐户和sessionid带上即可,后端只需进行高效的sessionid的有效性校验即可。解决了关键接口或者敏感接口的多次调用,并且对sessionid的有效期等可以进行管理。原创 2012-11-26 12:56:33 · 18805 阅读 · 1 评论 -
HTTP学习小结1 - 关于URI,URL和URN的说明
URI是统一资源描述符(Uniform Resource Identifier),它是一种用于描述互联网上资源的一种机制。我们知道每个Web服务器资源都有一个名字,这样其他客户端需要该资源的时候就引用和获取了,URI就像是因特网上的邮政地址一样,在全世界范围内都可以唯一的标识并定位信息资源。 URI包括了两种主要的形式 - URL和URN,其中URL是统一资源定位符(Uniform原创 2012-11-11 21:16:36 · 1650 阅读 · 0 评论 -
Base: ACID外的另外一种选择
Base: ACID外的另外一种选择 在分区数据库中,为可用性牺牲一定的一致性能够显著提高可扩展性DAN PRITCHETT, EBAY 在过去的十年中,Web应用变得日益流行。无论您是为最终用户构建应用程序还是为应用程序开发人员(即服务),您希望您的应用程序是最可能被广泛采用的,而广泛的应用将会使事务处理量增长。如果您的应用程序依赖于持久性,那么数据存储很可能将成为你(系统)翻译 2012-10-18 21:23:40 · 6758 阅读 · 2 评论 -
按set部署的小结
互联网常常把一定号段的用户路由到某个一组指定的服务中,而这一组服务就是常说的set,固然一个set的设计需要考虑许多不同的因素,但一个n+1的set冗余部署在某些业务也是一个较经济的部署策略。 即根据用户的号段,部署n个set,每个一个set只服务某个号段的用户群,一旦这个set出异常,则只影响这部分的用户,对号段的用户没有影响。同时部署一个支持全量用户的set,为了较好原创 2012-10-09 14:20:32 · 4290 阅读 · 0 评论 -
一个基本帐户系统的职能
一个基本帐户系统的设计职能:1,开户;2,销户;3,余额查询;4,流水查询;5,冻结和解冻功能;6,请款功能;7,充值功能;8,提现功能;9, 可重入扣款功能;10,可重入退款功能;11,实时查询功能;12,授权设置;(如每日,每天的限额等力度控制)13,对账单下载功能;14,其他一些管理类的功能接口设原创 2013-10-18 11:25:09 · 2060 阅读 · 0 评论 -
原来利用SVN的钩子函数可以实现自动的版本更新管理
备注一下:通过SVN钩子实现一些需要自动更新文件的版本号管理,配置该svn hook后,每次提交更新文件都会自动更新一个指定的的版本配置文件如version.js。通过发布变更文件list和该配置文件即可实现按需Load的目的,特别是移动互联网支持前端本地cache的模式下,该方式能够较好的提升用户体验。具体如何操作,可以实验一下。原创 2013-10-30 17:39:10 · 2474 阅读 · 0 评论 -
互联网高级研发人员需要具备怎样的知识结构?
作为互联网研发的高级技术人员,应该具备怎样的知识结构才能真正的胜任呢?tenfy从目前自己从事互联网的开发工作的角度出发,总结了几个点是个人觉得比较重要的,当然不一定很全,但觉得是必须掌握或者熟练理解的。一,技术相关方面 1,后台开发技术: linux/unix 开发,c/c++,shell脚本,内存管理,网络通信模型,进程/线程,tcp/ip协议原创 2010-02-06 16:56:00 · 3867 阅读 · 2 评论 -
不合理超时设置带来的“坑”
在后台服务的实现中,我们通过基于TCP/UDP协议封装起来的RPC机制实现了跟不同系统的通信,进而协同各个系统完成一系列业务流程和功能的执行,在这个过程中,每个参与合作的子系统都有自己的能力描述,如并发能力,响应速度,接口稳定性和安全级别等。并发能力是其中非常关键的一个指标,我们常用TPS等指标进行描述,表示单位时间内能够处理的事务数量。在多进程模型中:假如系统启用了n个处...原创 2019-10-05 11:15:30 · 1540 阅读 · 0 评论 -
【设计价值观】架构设计核心价值观之一
一,变更是万恶之源,所有架构设计的核心挑战是如何应对变更。 变更来源很多,可能来自业务特性的变化,也可能来自用户行为触发的系统资源调度变化。二,好的原则应该是:变更的范围应该跟变更的频度成反比。 如果一个变更涉及的范围很大,我们应该控制它变更的频率,相反,若一个变更的频率很大,我们应该减少变更的影响范围。...原创 2019-09-29 15:34:28 · 1055 阅读 · 0 评论 -
移动互联网的架构设计浅谈一
一,图片体验的优化。 在手机上显示图片,速度是一个非常重要的体验点,试想,如果您打开一个网站,发现里面的图片一直显示失败或者是x,稍微做得好一点的,可能是一个不消失的loading或者是菊花等等,但不管如何, 没能快速的拉取和展示图片对用户体验是一个极大的挑战。那么,手机上的图片体验如何做呢?这里笔者有些小总结: 1,减少图片的大小。在失真度和图片大小中做好折衷,尽量利用原创 2014-06-24 15:34:06 · 10644 阅读 · 4 评论 -
nginx折腾记(HTTP性能能测试,与Apache对比)
来自:http://www.cnblogs.com/killkill/archive/2010/04/14/1711810.html转载 2014-10-24 14:24:11 · 1847 阅读 · 0 评论 -
依赖外部数据源准确性的活动设计
最近团队做了一个世界杯的活动,活动的内容很简单:用户在比赛前进行竞猜比赛结果并支付一定的金额提交,如果比赛结束10分钟后,竞猜正确,则有机会获得一定的礼物赠送。那么这个活动中,很关键的一个问题是:系统如何准确的知道在比赛结束10分钟后的结果;基本思路有两种:一,一个人值班,实时观察比赛,一旦有结果,马上录入系统; 这个方法的好处是:不容易出错,因为是人工确认后录入的,但最大的问题是原创 2014-07-11 10:45:43 · 1404 阅读 · 0 评论 -
LMAX架构
LMAX架构原文地址:http://martinfowler.com/articles/lmax.html 作者:Martin Fowler译文地址:http://www.jdon.com/42452 译者:banqLMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线转载 2014-05-13 15:27:52 · 1408 阅读 · 0 评论 -
事件溯源(Event Sourcing)
一个对象从创建开始到消亡会经历很多事件,以前我们是在每次对象参与完一个业务动作后把对象的最新状态持久化保存到数据库中,也就是说我们的数据库中的数据是反映了对象的当前最新的状态。而事件溯源则相反,不是保存对象的最新状态,而是保存这个对象所经历的每个事件,所有的由对象产生的事件会按照时间先后顺序有序的存放在数据库中。可以看出,事件溯源的这种做法是更符合事实观的,因为它完整的描述了对象的整个生命周期过程转载 2014-05-13 15:44:59 · 3094 阅读 · 0 评论 -
跨行清算系统的实现过程
来自:http://www.godiscoder.com/?p=611转载 2014-05-05 14:22:09 · 3550 阅读 · 2 评论 -
一个简单的跨库事务问题
来自:http://www.cnblogs.com/aigongsi/archive/2013/01/14/2860372.html最近在做一个项目,其中一个方案涉及到跨库事务一致性问题,是一个简单的场景。这个项目是对老的业务进行性能提升,业务逻辑基本上保持不变。主要是在于新项目采用了分库分表的设计,从而提升了性能。考虑到项目发布之后可能存在风险,采取了新老系统的并行方案。这个系统的业转载 2014-03-18 09:40:47 · 5364 阅读 · 0 评论 -
X/Open DTP——分布式事务模型
来自:http://www.cnblogs.com/aigongsi/archive/2012/10/11/2718313.html 这一几天一直在回顾事务相关的知识,也准备把以前了解皮毛的知识进行一些深入总结,虽然这一些知识并没有用到,但是了解其实现原理还是很有必要的,因为知道了原理,你也能把它实现出来。在上一节事务的编程模型里面,主要说明了三种编程模型,一般情况下,我们转载 2014-03-13 12:48:55 · 1825 阅读 · 0 评论 -
关于pos终端功能的简要总结
一,余额查询指持卡人通过POS终端渠道进行相关账户余额查询的交易。二,消费指特约商户在出售商品或提供服务时,通过POS 终端渠道完成消费者用卡付款的交易。包括了自动冲正的功能支持。三,消费撤销指特约商户由于各种原因对已经通过POS 联机完成的成功交易,于当日当批主动发起取消的交易。注意消费撤销跟退货的不同是必须是当日当批,且只能在原先消费的pos上主动发起,需要输入原创 2013-11-22 15:39:59 · 3912 阅读 · 0 评论 -
接口层设计的重要作用
1,简化调用方对实现细节的依赖。本质仍然是解耦。 对业务透明,便于后续的扩容和升级,而对服务调用方保持不变,降低影响; 2,便于进行负载均衡和过载保护。原创 2012-08-06 15:21:29 · 3028 阅读 · 0 评论 -
如何充分利用CPU资源提高服务器的性能
基本思路是如何让CPU的超线程或者多核更加均衡和高效的利用起来,我们知道总是有一块cpu去专门响应网卡的中断请求,如果网络请求包非常大,很可能单个CPU就处理不过来,因此,需要激活多核或者超线程,把网卡中断请求分发到多个CPU去执行,从而提高整体服务器的接入性能,也是提高CPU资源利用率的好办法。下面分别进行讨论:一, 双CPU超线程的服务器 我们知道,在linux下,对于原创 2012-07-11 22:32:39 · 7309 阅读 · 0 评论 -
冗余切换的方法汇总
一,串口心跳线方式 active 和 backup 通过一条心跳线进行连接。 1,active设备负责在心跳线上产生高电平信号,表示active还“活”着。 2,backup设备通过心跳线监听active的高电平,如果一直存在,则表示active继续在提供服务,backup不接管。 3,当backup设备监听到对端没有高电平信原创 2012-06-20 19:15:18 · 2831 阅读 · 0 评论