自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (2)
  • 收藏
  • 关注

原创 消息中间件选型分析:从Kafka与RabbitMQ的对比看全局

一、前言消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件,有着举足轻重的地位。目前开源的消息中间件可谓是琳琅满目,能让大家耳熟能详的就有很多,比如 A...

2018-05-11 09:31:22 684

原创 复杂性应对之道 - 领域建模

为什么要领域建模软件的世界里没有银弹,是用事务脚本还是领域模型没有对错之分,关键看是否合适。就像自营和平台哪个模式更好?答案是都很好,所以亚马逊可以有三方入住,阿里也可以有自建仓嘛。实际上,CQRS就是对事务脚本和领域模型两种模式的综合,因为对于Query和报表的场景,使用领域模型往往会把简单的事情弄复杂,此时完全可以用奥卡姆剃刀把领域层剃掉,直接访问Infrastructure。我个人也...

2018-05-04 21:31:59 324

原创 技术漫谈:为何KPI毁了索尼,而OKR却成就了谷歌?

从技术 leader 的角度出发,看技术人绩效考核的痛。大多数公司里面总会因为 KPI 的考核方式而存在各种各样的问题,OKR 是一个在硅谷互联网公司比较流行的做法。怎样去理解 OKR 这个概念,并在技术团队中推行,从而使绩效考核更合理也更有意义?KPI 的困惑索尼公司前常务董事天外伺朗的《绩效主义毁了索尼》一文,曾经在业界流传甚广,也激起了广泛的争议,支持的反对的意见和声音到现在为止都...

2018-04-25 16:16:16 619

原创 Service Mesh深度解析

微服务方兴未艾如火如荼之际,在 spring cloud 等经典框架之外,Service Mesh 技术正在悄然兴起。到底什么是 Service Mesh,它的出现能带来什么,又能改变什么?本文整理自数人云资深架构师敖小剑在 QCon 2017 上海站上的演讲。简单回顾一下过去三年微服务的发展历程。在过去三年当中,微服务成为我们的业界技术热点,我们看到大量的互联网公司都在做微服务架构...

2018-04-17 10:53:21 9709 2

原创 微服务开发中的数据构架设计

前言微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容。微服务技术框架中的多层数据架构设计数据架构设计中的要点要点1:数据易用性要点2:主、副数据...

2018-03-19 15:20:41 165

原创 MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)

锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具。在计算机中,是协调多个进程或县城并发访问某一资源的一种机制。在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素。从这一角度来说,锁对于数据库而言就显得尤为重要。...

2018-03-06 15:30:49 117

原创 体系化认识RPC

RPC(Remote Procedure Call),即远程过程调用,是一个分布式系统间通信的必备技术,本文体系性地介绍了 RPC 包含的核心概念和技术,希望读者读完文章,一提到 RPC,脑中不是零碎的知识,而是具体的一个脑图般的体系。本文并不会深入到每一个主题剖析,只做提纲挈领的介绍。RPC 最核心要解决的问题就是在分布式系统间,如何执行另外一个地址空间上的函数、方法,就仿佛在本地调用一样...

2017-12-25 10:11:21 243

原创 MongoDB的水平扩展,你做对了吗?

分布式数据库的前世今生当人们一开始使用数据库系统的时候,所有数据都是跑在一台服务器上,即所谓的单机数据库服务器。在企业级应用中,我们会搭建一台应用程序服务器,一般它会被运行在一台服务器或者工作站上,大多数情况下采用 Linux/Unix/Windows 操作系统,也有人把这样的服务器称之为应用程序服务器。顾名思义,他的作用是处理复杂的业务逻辑。但是一点需要注意的是,在这样的构架中,这台应用程...

2017-12-25 10:02:06 2410

原创 聊一聊分布式锁的设计

起因前段时间,看到redis作者发布的一篇文章《Is Redlock safe?》,Redlock是redis作者基于redis设计的分布式锁的算法。文章起因是有一位分布式的专家写了一篇文章《How to do distributed locking》,质疑Redlock的正确性。redis作者则在《Is Redlock safe?》文章中给予回应,一来一回甚是精彩。文本就为读者一一解析两位...

2017-04-10 13:43:21 129

原创 如何正确对用户密码进行加密?

本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式。还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路。相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施。本文由Defuse Security安全团队撰写,作者采用了 CC协议 ,InfoQ翻译并分享,以飨读者。作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是...

2017-03-26 10:18:35 3669

原创 HTTP,HTTP2.0,SPDY,HTTPS看这篇就够了

作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处还请指出。  1. web始祖HTTP全称:超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络...

2016-11-30 14:53:58 159

原创 服务发现:Zookeeper vs etcd vs Consul

【编者的话】本文对比了Zookeeper、etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考。如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口。管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多。因此我们应该部署无需指定端口的服务,并且让Docker为...

2016-11-29 17:00:08 108

原创 深度学习框架的比较(MXNet, Caffe, TensorFlow, Torch, Theano)

1. 基本概念1.1 MXNet相关概念    深度学习目标:如何方便的表述神经网络,以及如何快速训练得到模型    CNN(卷积层):表达空间相关性(学表示)    RNN/LSTM:表达时间连续性(建模时序信号)    命令式编程(imperative programming):嵌入的较浅,其中每个语句都按原来的意思执行,如numpy和Torch就是属于这种    声...

2016-11-18 10:56:59 312

原创 深度学习框架的评估与比较

人工智能无疑是计算机世界的前沿领域,而深度学习无疑又是人工智能的研究热点,那么现在都有哪些开源的深度学习工具,他们各自的优缺点又是什么呢?最近zer0n和bamos在GitHub上发表了一篇文章,对Caffe、CNTK、TensorFlow、Theano和Torch等深度学习工具从网络、模型能力、接口、部署、性能、架构、生态系统、跨平台等方面做了比较。网络和模型能力Caffe可能是第一个...

2016-11-18 10:50:38 166

原创 Java I/O模型

Java I/O模型同步 vs. 异步同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行。异步I/O 多个请求可以并发地执行,一个请求或者任务的执行不会导致整个流程的暂时等待。用户线程发起I/O请求后仍然继续执行,当内核I/O操作完成后会通知用户线程,或者调用用...

2016-10-24 17:42:14 143

原创 如何使代码审查更高效

本文要点代码审查者在审查代码时有非常多的东西需要关注。一个团队需要明确对于自己的项目哪些点是重要的,并不断在审查中就这些点进行检查。人工审查代码是十分昂贵的,因此尽可能地使用自动化方式进行审查,如:代码格式、代码样式、检查常见bug、确定常见安全问题以及运行自动化测试。当针对性能进行审查时,了解系统的性能需求是明确潜在问题的关键。一些简单的人工检查可以显著提升应用的安全性。...

2016-10-22 07:14:59 471

原创 MySQL 5.7并行复制实现原理与调优

前言 这篇文章花了Inside君整整3个晚上的时间,码了3000多字,可谓满满的诚意之作,献给最有品味的你们。然由于微信公众账号对于技术博文的支持并不是很友好,对于有代码洁癖的小伙伴,Inside君推荐点击下方的阅读原文来进行更好地阅读体验。 MySQL 5.7并行复制时代 众所周知,MySQL的复制延迟是一直被诟病的问题之一,然而在Inside君之前的两篇博客中(1,2...

2016-10-21 18:38:42 140

原创 各版本MySQL并行复制的实现及优缺点

摘要: MySQL并行复制已经是老生常谈,笔者从2010年开始就着手处理线上这个问题,刚开始两三年也乐此不疲分享,现在再提这个话题本来是难免“炒冷饭”嫌疑。 最近触发再谈这个话题,是因为有些同学觉得“5.7的并行复制终于彻底解决了复制并发性问题”, 感觉还是有必要分析一下。大家都说没有银弹,但是又期待MySQL并行复制已经是老生常谈,笔者从2010年开始就着手处理线上这个问题,刚开始...

2016-10-21 18:32:19 163

原创 TDDL、Amoeba、Cobar、MyCAT架构比较

比较了业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线框架比较TDDLAmoebaCobarMyCat点评TDDL不同于其它几款产品,并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。属于JDBC Shard的思想,...

2016-10-12 16:39:57 281

原创 分布式服务框架 Zookeeper -- 管理分布式环境中的数据

Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选...

2016-10-09 17:22:52 82

原创 实施微服务,我们需要哪些基础框架?

 微服务(MicroServices)架构是当前互联网业界的一个技术热点,圈里有不少同行朋友当前有计划在各自公司开展微服务化体系建设,他们都有相同的疑问:一个微服务架构有哪些技术关注点(technical concerns)?需要哪些基础框架或组件来支持微服务架构?这些框架或组件该如何选型?笔者之前在两家大型互联网公司参与和主导过大型服务化体系和框架建设,同时在这块也投入了很多时间去学习和研...

2016-09-29 10:20:54 100

原创 Java并发的四种风味:Thread、Executor、ForkJoin和Actor

本文由 ImportNew - shenggordon 翻译自 Oleg Shelajev。欢迎加入翻译小组。转载请见文末要求。这篇文章讨论了Java应用中并行处理的多种方法。从自己管理Java线程,到各种更好几的解决方法,Executor服务、ForkJoin 框架以及计算中的Actor模型。Java并发编程的4种风格:Threads,Executors,ForkJoin和Actor...

2016-09-28 20:04:43 102

原创 如何成为一名合格的CTO?

本文来源于微信公众号“线性资本”(ID:LinearVenture)成为一名合格 CTO我们投过很多技术型的公司,对于什么是合格的 CTO 有过自己的一些思考。最近关于什么是一名合格的 CTO 有些争论,我们以Q&A 的方式分享一些我们的看法。这些看法一方面有时候会影响到我们投不投一家公司,一方面也是从被投公司的历程中总结出来的。CTO 的定义是什么?根据...

2016-09-27 16:14:28 142

原创 千万级规模高性能、高并发的网络架构经验分享

主 题 :INTO100沙龙时间 :2015年11月21日下午地点 :梦想加联合办公空间分享人:卫向军(毕业于北京邮电大学,现任微博平台架构师,先后在微软、金山云、新浪微博从事技术研发工作,专注于系统架构设计、音视频通讯系统、分布式文件系统和数据挖掘等领域。)架构以及我理解中架构的本质在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常...

2016-09-23 17:39:03 94

原创 mysql 开发规范

1.  简介持续借鉴、收集并整理一些开发规范和技巧,期望能更充分利用MySQL的特性,得到更好的性能。规范是死的,人是活的。现在定义的规范,是为以后推翻准备的。1.1 目的提供给开发人员参考,方便写成更有效率的开发。1.2 范围文档涉及的范围:需要基于MySQL做应用开发的人员。1.3 定义、首字母缩写词和缩略语暂无2.  数据库设计...

2016-09-22 19:54:06 217

原创 技术文章精华合集(持续更新中)

Kafka深度解析 分库分表系列文章 来自 Google 的高可用架构理念与实践 Web安全知多少 分布式锁 Java常用技术方案章文嵩博士和他背后的负载均衡帝国高并发限流特技1从限流削峰到性能优化,谈1号店抽奖系统架构实践 微服务架构的基础框架选择:Spring Cloud还是Dubbo?Spring Cloud构建微服务架构(一)...

2016-09-20 19:09:33 281

原创 怎样打造一个分布式数据库

在技术方面,我自己热衷于 Open Source,写了很多 Open Source 的东西,擅长的是 Infrastructure 领域。Infrastructure 领域现在范围很广,比如说很典型的分布式 Scheduler、Mesos、Kubernetes,另外它和 Microservices 所结合的东西也特别多。Infrastructure 领域还有比如 Database 有分 AP(...

2016-08-19 09:13:47 527

原创 从LongAdder 看更高效的无锁实现

接触到AtomicLong的原因是在看guava的LoadingCache相关代码时,关于LoadingCache,其实思路也非常简单清晰:用模板模式解决了缓存不命中时获取数据的逻辑,这个思路我早前也正好在项目中使用到。言归正传,为什么说LongAdder引起了我的注意,原因有二:1. 作者是Doug lea ,地位实在举足轻重。2. 他说这个比AtomicLong高效。我们知道...

2015-12-08 15:27:20 143

原创 分布式系统的事务处理

2014年1月20日 陈皓 当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务:...

2014-02-15 20:49:07 105

原创 Hadoop 新 MapReduce 框架 Yarn 详解

简介: 本文介绍了 Hadoop 自 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理,优势,运作机制和配置方法等;着重介绍新的 yarn 框架相对于原框架的差异及改进;并通过 Demo 示例详细描述了在新的 yarn 框架下搭建和开发 hadoop 程序的方法。 读者通过本文中新旧 hadoop map-reduce 框架的对比,更能深刻理解新的 yarn 框架...

2013-11-02 13:22:29 166

原创 理解本真的REST架构风格

作者 李锟 发布于 八月 26, 2013 | 引子在移动互联网、云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了。夸张点说,甚至“出了门都不好意思跟别人打招呼”。尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段。常常听到各种各样关于REST的说法,例如:有人说:“我们...

2013-09-02 13:51:06 106

原创 Linux文件系统十问,你知道吗?

作者:yanfei,腾讯后台架构师,参与项目为搜搜网页开发和搜搜开放平台。   关于文件系统,相信大家都不陌生。身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢。那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧:1、机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的? 2、touch一个新的...

2013-08-20 17:31:04 111

原创 深入CloudFoundry一周年

篇前语本文在《程序员》杂志2013年1月刊刊登过,但由于篇幅排版等原因,部份内容被删除。研究院博客这次发表的版本是原稿版。可能文笔措辞有些许粗糙,但希望能给大家带来更详尽的信息。前言去年4月份,VMware突然发布了业内第一个开源的PaaS,Cloud Foundry;紧接着5月,Redhat发布了另外一个开源的PaaS,OpenShift。从此PaaS不再神秘,开始成为技术圈内的...

2013-06-14 10:15:04 310

原创 阮志敏谈平台即服务PaaS

 作者 阮志敏 发布于 六月 28, 2011 | 9 评论  云计算的三种服务模式是SaaS(Software as a Service),PaaS(Platform as a service)和IaaS(Infrastructure as a service)。相对于SaaS和IaaS,PaaS最难被理解,人们对PaaS的解读往往也不尽相同。这是我继“云计算与SOA之我见”之后...

2013-05-28 09:43:46 170

原创 剖析开源云

M. Tim Jones, 独立撰稿人简介: 现在的云计算已不再是一个新的尖端技术,它已成为彻底改变我们使用和开发随需应用程序方式的一种极有价值的重要技术。正如您所知,Linux 和开源技术为云(公共的和私有的基础架构)提供了基础。在本文中,我们将对云进行剖析,探究其架构以及用来构建这些可伸缩的动态计算和存储平台的各种开源技术。2012 年 6 月 5 日,作者对整篇文章进行...

2013-03-15 16:42:57 123

原创 开源日志系统比较

 1. 背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3) 具有高可扩展性。即:当数据量增加时,可以通过增加...

2013-02-28 10:02:12 93

原创 Spring AOP 实现原理与 CGLIB 应用

Spring AOP 实现原理与 CGLIB 应用 李 刚, 自由撰稿人简介: AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在 Java EE 应用中,常常通过 AOP 来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓...

2013-02-19 15:16:13 110

原创 NoSQL数据库的分布式算法

本文另一地址请见NoSQL数据库的分布式算法本文译自 Distributed Algorithms in NoSQL Databases系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性。这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去。尽管NoSQL运动并没有给分布式数据处理带来根本性的技术变革,但是依然引发了铺天盖地的关...

2013-01-16 09:59:42 79

原创 Brewer’s CAP Theorem

Amazon和EBay一直在喝的酷爱(kool aid)饮料。by Julian Browne on 2009.1.11 (经Julian授权翻译此文,原文参见)1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall,Sex Pistols乐队(注:Sex Pistols的经理人Malcolm Mc...

2013-01-05 15:10:40 109

原创 知名网站的技术实现

在上一篇《知名网站的技术发展历程》中,介绍了一些知名网站在发展的过程中技术的演变,在这篇文章中则会根据这些网站的发展经验,来总结通常网站是如何来应对可伸缩性、可用性、高性能以及低成本这四方面的挑战的。在上一篇文章中,介绍了一些Alexa排名较前的网站的技术发展历程,在这篇文章中,将结合提及到的网站的技术发展历程,来总结下网站在可伸缩性、可用性、高性能以及低成本四点上通常采用的技术。...

2012-09-13 10:17:29 71

架构风格和基于网络的软件架构设计

架构风格和基于网络的软件架构设计,掌握更多的架构风格

2012-04-13

HTTP协议中文版

help to further understand the http protocal

2012-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除