摘要: 解耦设计手法小结 设计是一个平衡的产物,需要在各个约束条件下(组织目标,业务目标,开发流程,技术能力,学习及维护成本等)不断地进行演进。 我们虽然不提倡做大而全的设计,但会坚持进行基础性设计,以保证我们的设计一直在正确的方向上演进。设计演进的过程既可以是自上而下的,也可以是自下而上的。 基本设计原则 阅读全文
posted @ 2017-03-20 16:57 有梦就能实现 阅读(1445) 评论(0) 推荐(0)
摘要: 架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。 本文是漫谈架构专栏的第四篇,作者将会介绍架构的切分,并直戳切分的本质其实就是利益的调整。文中作者将会讨论为什么需要切分、切分的原则、切 阅读全文
posted @ 2017-03-20 16:50 有梦就能实现 阅读(180) 评论(0) 推荐(0)
摘要: 阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DDD+GRASP进行分析和设计(防止主观的判断导致错误的假设) 5.SOA分布式下的数据一致性 5.1 阅读全文
posted @ 2017-03-20 16:43 有梦就能实现 阅读(282) 评论(0) 推荐(0)
摘要: 如何针对当前需求,选择合适的应用架构,如何面向未来,保证架构平滑过渡,这个是软件开发者,特别是架构师,都需要深入思考的问题。 本文首发于InfoQ垂直号「聊聊架构」,ID:archtime 本文首发于InfoQ垂直号「聊聊架构」,ID:archtime 无架构,不系统,架构是大型系统的关键。从形上看 阅读全文
posted @ 2017-03-20 16:39 有梦就能实现 阅读(363) 评论(0) 推荐(1)
摘要: gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。 我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。 我们可以设想一下,未来浏览器支持HTTP2.0,并通过现有开源序列化库比如protobuf等,可以直接 阅读全文
posted @ 2017-03-20 16:26 有梦就能实现 阅读(1636) 评论(0) 推荐(1)
摘要: 一、缘起 当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表: user( uid bigint, name varchar(16), pass varchar(16), age int, sex tinyint, flag tinyint, sig 阅读全文
posted @ 2017-03-20 16:06 有梦就能实现 阅读(236) 评论(0) 推荐(1)
摘要: 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。 什么是负载均衡 负载均衡(Load Balanc 阅读全文
posted @ 2017-03-20 15:57 有梦就能实现 阅读(179) 评论(0) 推荐(0)
摘要: 大多数域名注册商都支持对统一主机添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡。下图的例子是:有3台联通服务器、3台电信服务器,要实现“联通用户流量分摊到3台联通服务器、其他用户流量分摊到电信服务器”这个效果的设置。 DN 阅读全文
posted @ 2017-03-20 15:53 有梦就能实现 阅读(809) 评论(0) 推荐(0)
摘要: 很多Web架构的文章都在谈大规模,高流量,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳也说过,"过早优化是万恶之源"),所以,这里反弹琵琶,讨论一 阅读全文
posted @ 2017-03-20 15:05 有梦就能实现 阅读(228) 评论(0) 推荐(0)
摘要: *******************************前端*******************************1.增加必要的硬件和带宽,同时额外储备一部分,以备不时之需2.特别监控网络数据流量是否正常,如是否有大规模的爬虫、DDOS等浑水摸鱼,可以针对iP和Cookie的限流3.使 阅读全文
posted @ 2017-03-20 15:04 有梦就能实现 阅读(544) 评论(0) 推荐(0)
摘要: 当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。 于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问 阅读全文
posted @ 2017-03-20 14:55 有梦就能实现 阅读(276) 评论(0) 推荐(0)
摘要: 【IT168 技术】12月25日消息,2010互联网行业技术研讨峰会今日在上海华东理工大学召开。本次峰会以“互联网行业应用最佳实践”为主题,定位于互联网架构设计、应用开发、应用运维管理,同时,峰会邀请了来自盛大、阿里巴巴、五分钟等互联网企业的多位嘉宾演讲,他们将同大家一起探讨数据库技术在互联网领域的 阅读全文
posted @ 2017-03-20 14:50 有梦就能实现 阅读(559) 评论(0) 推荐(0)
摘要: 的方案去实现的,这样会有什么问题呢,假设如果放到一个实例里面,全部用一个单机事务去解决,这样是能比较方便的解决数据一致性问题。但是存在两个问题,一是无法进行多实例部署,用户量增长以后,无法快速应对。二是,PHP中做事务,如果PHP遇到异常,有时并不会自动终止事务,导致DB被锁住,这是第一个版本。之后 阅读全文
posted @ 2017-03-20 14:47 有梦就能实现 阅读(4289) 评论(0) 推荐(0)
摘要: 前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记 阅读全文
posted @ 2017-03-20 14:45 有梦就能实现 阅读(392) 评论(0) 推荐(0)
摘要: 前言应用场景 事务必须满足传统事务的特性,即原子性,一致性,分离性和持久性。但是分布式事务处理过程中, 某些场地比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证? 在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去 阅读全文
posted @ 2017-03-20 14:43 有梦就能实现 阅读(319) 评论(0) 推荐(0)
摘要: 一、需求缘起 【业务场景】 有一类写多读少的业务场景:大部分请求是对数据进行修改,少部分请求对数据进行读取。 例子1:滴滴打车,某个司机地理位置信息的变化(可能每几秒钟有一个修改),以及司机地理位置的读取(用户打车的时候查看某个司机的地理位置)。 void SetDriverInfo(long dr 阅读全文
posted @ 2017-03-20 14:34 有梦就能实现 阅读(616) 评论(1) 推荐(0)
摘要: 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 二 锁的 阅读全文
posted @ 2017-03-20 14:04 有梦就能实现 阅读(511) 评论(0) 推荐(0)
摘要: <!-- 收藏 --> 前言: 前言: 由于网站访问压力的问题,综合分析各种因素后结合实际情况,采用数据库读写分离模式来解决当前问题。实际方案中采用“事务发布”模式实现主数据库和只读数据库的同步,其中: 发布服务器1台:sql2008,推送订阅模式 订阅服务器2台:sql2008 问题: 以上方案后 阅读全文
posted @ 2017-03-20 13:59 有梦就能实现 阅读(736) 评论(0) 推荐(0)
摘要: 什么是死锁,如何避免死锁? 线程A需要资源X,而线程B需要资源Y,而双方都掌握有对方所要的资源,这种情况称为死锁(deadlock),或死亡拥抱(the deadly embrace)。 在并发程序设计中,死锁 (deadlock) 是一种十分常见的逻辑错误。通过采用正确的编程方式,死锁的发生不难避 阅读全文
posted @ 2017-03-20 13:54 有梦就能实现 阅读(644) 评论(0) 推荐(0)
摘要: 实际上kafka对机器的需求与Hadoop的类似。 原来,对于Linkin这样的互联网企业来说,用户和网站上产生的数据有三种: 需要实时响应的交易数据,用户提交一个表单,输入一段内容,这种数据最后是存放在关系数据库(Oracle, MySQL)中的,有些需要事务支持。 活动流数据,准实时的,例如页面 阅读全文
posted @ 2017-03-20 11:32 有梦就能实现 阅读(272) 评论(0) 推荐(0)
摘要: 1.背景 最近因为工作需要,调研了追求高吞吐的轻量级消息系统Kafka,打算替换掉线上运行的ActiveMQ,主要是因为明年的预算日流量有十亿,而ActiveMQ的分布式实现的很奇怪,所以希望找一个适合分布式的消息系统。 以下是内容是调研过程中总结的一些知识和经验,欢迎拍砖。 相关阅读:使用Kafk 阅读全文
posted @ 2017-03-20 11:27 有梦就能实现 阅读(518) 评论(0) 推荐(0)
摘要: 队列作为一种比较抽象的数据结构,在程序世界中被广泛的应用,而实现方式和形态也各式各样,有使用进程内堆栈实现的,如stl库中的queue;有基于管道、Shmem实现的,如常见的同机进程间通信模型,而随着分布式系统应用越来越广泛,跨机通信的场景需来需多,面临的问题不仅是消息投递问题,分布式系统普适性的挑 阅读全文
posted @ 2017-03-20 11:21 有梦就能实现 阅读(10331) 评论(1) 推荐(0)
摘要: 消息系统中,常用的一致性解决方案如下: 1) 发送消息给消息系统 2) 消息系统入库消息 3) 消息系统返回结果 4) 业务操作 5) 发送业务操作结果给消息系统 6) 更改存储中的消息状态 如果消息丢失,从业务数据补发消息是最彻底的容灾手段。一般地,把集群和集群之间对消息的消费作为topic模型处 阅读全文
posted @ 2017-03-20 11:06 有梦就能实现 阅读(695) 评论(0) 推荐(0)
摘要: 消息的可靠性,即消息的不丢失和不重复,是im系统中的一个难点。当初qq在技术上(当时叫oicq)因为以下两点原因才打败了icq:1)qq的消息投递可靠(消息不丢失,不重复)2)qq的垃圾消息少(它antispam做得好,这也是一个难点,但不是本文重点讨论的内容)今天,本文将用十分通俗的语言,来讲述w 阅读全文
posted @ 2017-03-20 11:01 有梦就能实现 阅读(1169) 评论(0) 推荐(0)
摘要: 前几天研究数据库分表分库的问题,其中有一个关键的地方就是生成唯一键的问题,假如数据表有1亿条数据,而且还在不断的增加,这里我们就需要考虑到分表分库,假设我们采用Hash或者是用户取模求余的方法将这个表拆分成10个表,每个表的结构相同,其中有一个主键id,那么10个表中的id需要唯一不同,在单表的时候 阅读全文
posted @ 2017-03-20 10:23 有梦就能实现 阅读(803) 评论(0) 推荐(1)
摘要: 1. FLP impossibility背景 FLP Impossibility(FLP不可能性)是分布式领域中一个非常著名的结果,该结果在专业领域被称为“定理”,其地位之高可见一斑。该定理的论文是由Fischer, Lynch and Patterson三位作者于1985年发表,之后该论文毫无疑问 阅读全文
posted @ 2017-03-20 09:38 有梦就能实现 阅读(15439) 评论(1) 推荐(4)