- 博客(53)
- 收藏
- 关注
敬请期待
2年多没有写博客了,很期待自己的下一系博客文章,考虑主要以这两年接触多的移动互联、IOS、four in one 、Meteor为主,公司做移动互联产品定位以及风投的一些感想!!...
2015-05-22 21:49:30
186
原创 tddl+diamond(二)
diamond的相关原理介绍,我们已经通过其他的文章进行了讲解,这篇文章我们着重讲解下diamond的初始化配置,以及tddl的初始化配置。下载、部署diamonddiamond的svn下载地址:http://code.taobao.org/svn//diamond/trunk(下载16版本的diamond,我们稍后要用到tddl,因此我们不能下载diamond的最新版本20,因为td...
2013-05-05 15:37:28
407
原创 tddl+diamond(一)
简介:tddl的相关介绍请在http://rdc.taobao.com/team/jm/archives/1642中进行了解,这里就不做介绍了,diamond是淘宝开源管理持久配置的系统,持久配置是指配置数据会持久化到磁盘和数据库中,diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数...
2013-05-05 15:36:45
202
webx3整合dubbo
由于webx3是maven项目,dubbo又是一个分布式服务框架,网上也没有任何文章来介绍,因此在对maven不了解的情况下是无法找到头绪来和dubbo整合的,这里我按照步骤进行图解,以便于有这方面框架的爱好者能够快速整合。webx3集成到eclipse并在tomcat下独立运行的方法,我的blog中有相关文章介绍,这里就不讲解了,dubbo的原理以及搭建、集群配置、优化等可以在官网上了解...
2013-04-30 02:10:08
147
原创 webx3初接触
由于webx3采用maven管理项目部署,本地通过maven生成了一个webx3程序开发的框架后,为了能够做二次开发,在eclipse下需要安装maven插件(for eclipse)、springext插件(for eclipse)、git插件(for eclipse),安装后,在eclipse导入了webx3的工程(eclipse中选择import->existing maven p...
2013-04-29 12:51:59
191
原创 用消息队列和消息应用状态表来消除分布式事务(转载)
由于数据量的巨大,大部分Web应用都需要部署很多个数据库实例。这样,有些用户操作就可能需要去修改多个数据库实例中的数据。传统的解决方法是使用分布式事务保证数据的全局一致性,经典的方法是使用两阶段提交协议。长期以来,分布式事务提供的优雅的全局ACID保证麻醉了应用开发者的心灵,很多人都不敢越雷池一步,想像没有分布式事务的世界会是怎样。如今就如MySQL和PostgreSQL这类面向低端用户的开源...
2012-11-21 11:12:38
104
对淘宝tair分布式K、V的一些理解
Tair是什么Tair是由淘宝开发的key/value方案,系统默认支持基于内存和文件的存储引擎,对应于通常我们所说的缓存和持久化存储,这里可以获取更多关于tair的信息,淘宝团队介绍,Tair在淘宝有着大规模的应用,在登录淘宝、查看商品详情页面、在淘江湖和好友“捣浆糊”等等时候,后面都在直接或间接的和Tair交互。对照表Tair使用路由表来解决数据的路由问题。简单的路由表...
2012-09-23 10:18:51
172
CA认证原理以及实现(下)
在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。OPEN SSL 环境搭建在基础原理中我们提到了两种认证服务,单项认证服务和双向认证服务,我们就以双向认证服务举例说明。OpenSSL是一个开放源代码软件包,实现了SSL以及相关加密技术,是最常用的证书管理工具,OpenSSL功能远胜于KeyTool,可用于根证书(KeyTool不含有,因此KeyTool没有办法作为CA)、服务器证书...
2012-09-10 20:38:58
1720
CA认证原理以及实现(上)
原理基础数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体,依靠数字证书,我们可以构建一个简单的加密网络应用平台,数字证书就好比我们生活中的身份证,现实中,身份证由公安机关签发,而网络用户的身份凭证由数字证书颁发认证机构—CA签发,只有经过CA签发的证书在网络中才具备可认证性,CA并不是一个单纯的防御手段,它集合了多种密码学算法:消息摘要算法:MD5、和SHA(对数字证...
2012-09-10 20:00:41
3903
企业追逐的--网络热点(云、海量数据、虚拟化)(下)
云管理平台云是IT实现,是造出来的,不是买来的。我们可以买服务器,买数据库,但买不了云,不可能说买来以后一装就行了,那就不是云了,那只能是买一个服务器,或者买一个集群,要想买一个云的是不大可能。反过来说,这个集成本身就有复杂性,所以会遇到比如说多种虚机不一样的,不同厂家的虚拟机,多种存储设备,很多API都不一样。然后物理机和虚机又混着使用,有些应用在物理机上运行,有些应用在虚机上运行,还有跟已有的...
2012-06-28 21:58:08
107
企业追逐的--网络热点(云、海量数据、虚拟化)(上)
云之所以热,是因为现在以及未来市场的业务推动力(回报率),现在哪个家庭中只有一台计算机?哪个企业只有几台计算机?计算机多了就会出现耗电、占地、维修保养、商业软件升级等问题,对于家庭而且这个成本算不上什么,但是对于服务行业的企业而言,这个成本是不可估量的,所以加快信息化脚步的同时,也会无形中出现相应的负担,成本越来越高,大家都在琢磨该如何解决?我们现在家庭中用水、用电是没有在自己家里安装发电机的...
2012-06-28 21:08:13
173
Terracotta Server[兵马俑]集群
Terracotta的介绍以及原理在我之前的文章中已经做了相关介绍,那么这次我们就来看看它是如何实现集群的。 测试代码编写我们首先写一个demo,该demo在没有terracotta的环境下执行一次,看看结果我们首先先写一个简单的多线程代码(我们这个例子制定共享TerracottaDemo类的demo对象,它包含的count和yale对象也就随之被整个集群共享了): packa...
2012-06-14 01:23:09
331
原创 Terracotta设计原理分析--(部分内容来自官方描述)
因为工作中历史产品采用了terracotta作为分布式缓存线性扩展平台,因此不得不提前对其原理做了相关了解,当然其中很多的设计思想和oracle、memcached的设计相似,但也有自己的亮点,那就是JVM的懒加载细粒度拷贝以及线性扩展,使得序列化对象消耗大大降低,提高CPU使用率以及内存无缝线性扩展。我在研究terracotta的时候,没有急于去尝试环境搭建以及demo实现,首先我去了解了一...
2012-05-25 23:47:37
137
原创 分布式事务设计-三段式提交
前面的文章提到的两段式提交,已经能够很好得解决分布式事务了,然而两阶段在即使只有一个进程发生故障时(协调员发生故障了),那么整个系统中也会存在较长时间的block(参与者进程需要block直至协调员恢复,或者与其他参与者进程进行协同终止协议,直至获得决定)。但如果只有个别进程发生故障,就要长时间得被block住这就令人无法忍受,这个block时间能否减少。于是,3段式提交设计出现。在实际应用中,由...
2012-05-25 20:24:39
1012
原创 HDFS框架中便于借鉴的设计
HDFS几个设计特点:1. Block的放置:默认不配置。一个Block会有三份备份,一份放在NameNode指定的DataNode,另一份放在与指定DataNode非同一Rack上的DataNode,最后一份放在与指定DataNode同一Rack上的DataNode上。备份无非就是为了数据安全,考虑同一Rack的失败情况以及不同Rack之间数据拷贝性能问题就采用这种配置方式。2. 心跳检测D...
2012-05-25 14:03:38
96
hadoop分布式集群
hadoop的基础知识我就不在这里介绍了,任何有关hadoop书籍中都有非常详细的原理以及其开源框架(HDFS、Mapreduce、combiner、Partitioner等)、子项目(Hive、Hbase等)的介绍以及讲解,而这些方面的知识也不是在短期内能够了解和深入的,有一个循序渐进的过程,我这里只是针对其集群结合介绍其原理介绍,让大家更快速的对hadoop有一个了解,但也请大家意识到,会...
2012-04-05 19:31:13
231
oracle10gRAC+Data Guard环境配置以及原理说明(非常详细)
文章中相关配置虽然是在虚拟机上进行的,但是配置内容在正式环境下已经成功运行,如果在环境搭建好后出现宕机或者节点服务器重启,请核对配置是否正确,如果配置无误,请检查硬件(HBA卡等)、网络等。。因为此配置已经逐步优化过,已经在生产环境中使用,因此不会出现问题,如果出现其他问题,请留言,或者上网搜索,上述有些需要通过metalink帐号才能下载的补丁包,如果需要,请留言,其中还附带了相关的原理内容,已...
2012-04-05 19:07:28
222
原创 分布式事务设计-两段式提交
事务是一个很重要的概念,它必须满足ACID特性,在单机的数据库中,这很容易实现。但在分布式数据库中,各个表分散在各台不同的机器上,如何对这些表实施分布式的事务处理就成为一个比较困难的问题,其中两段式提交就是解决分布式事务的一种方式。两段式提交设计本身的思路非常的容易理解,步骤如下:1. 协调员服务器(协调员)发送一条投票请求消息给所有参与这次事务的服务器(参与者)。2. 当一个参与者收...
2012-02-08 17:16:26
294
替代分布式事务策略
由于数据量的巨大,现在大部分的Web应用都需要部署很多个数据库实例。这样,有时候某些操作就可能需要去修改多个数据库实例中的数据。传统的解决方法是使用分布式事务保证数据的全局一致性,经典的方法是使用两阶段事务提交(我的blog中已经提到过),现在MySQL和PostgreSQL这类面向低端用户的开源数据库都支持分布式事务了,开发者泪在其中的同时,却没有考虑分布式事务是否给系统带来了伤害。 分...
2011-06-10 19:59:45
176
原创 redis的主从复制配置
一、 集群介绍Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:1.master可以有多个slave2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构3.主从复制不会阻塞master。也就是说当一...
2011-04-28 22:24:03
84
原创 redis jredis jedis 使用
一、 简介Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合(list,set ,sorted set和hash)。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。Redis的所有数据都是保存在内...
2011-04-28 18:53:35
156
原创 JAVA垃圾回收分析
JAVA垃圾回收简介java中的内存java虚拟机自己去管理的,java的内存分配分为两个部分,一个是数据堆,一个是栈。 堆是给开发人员用的,是在JVM启动时创建,程序在运行的时候一般分配数据堆,把局部的临时的变量都放进去,生命周期和进程有关系,在堆中分配的内存由java虚拟机的自动垃圾回收器来管理,堆内存用来存放由new创建的对象和数组。 栈是留给JVM自己用的,用来存放类的信息的,它...
2011-04-23 12:17:19
103
原创 你还在用IO吗?
回顾传统有必要了解传统的I/O操作的方式。以网络应用为例,传统方式需要监听一个ServerSocket,接受请求的连接为其提供服务(服务通常包括了处理请求并发送响应),下图是服务器的生命周期图,其中标有粗黑线条的部分表明会发生I/O阻塞。 ServerSocket server=new ServerSocket(10000);//接受新的连接请求 Socket newCo...
2011-04-01 11:19:55
121
原创 oracle分区表
此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作.(1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。 分区表:...
2011-03-30 11:12:17
75
原创 Memcached缓存客户端连接池设计
设计的目的就是为了解决资源的申请和释放的开销增加系统压力的问题,将资源通过池的方式回收重用,有利于系统性能的提高。memcached cache client 其实是通过socket来和服务端进行通信,建立socket连接也是比较消耗时间的工作,因此设计配置池的初始连接数(initConn),最小连接数(minConn),最大连接数(maxConn)。这三者关系如下图,维护他们之间状态转移的就是后...
2011-03-19 12:35:59
215
原创 缓存客户端集群
Memcached Cache是集中式Cache,它仅仅是支持将数据能够分片分区的存储到一台或者多台的Cache Server实例中,但是这些数据并没有作冗余,因此任何一个服务实例不可用,都会导致部分缓存数据丢失。当然很多人采取持久化等方式来保证数据的完整性,但是这种方式对于效率以及恢复的复杂性都会有影响。简单的来想,为什么不把数据在多保存一份或者多份呢,当其中一份不可用的情况下,就用另外一份补上...
2011-03-18 17:12:33
108
原创 Redis考虑虚拟内存设计
虚拟内存指当物理内存不够用时,借用硬盘的空间来当作物理内存使用,就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis server外。另外的能够提高数据库容量的办法就是使用vm把那些不经常访问的数据交换的磁盘上。如果我们的存储的数据总是有少部分数据被经常访问,大部分数...
2011-03-18 13:37:08
82
原创 如何检测一台机器是否宕机?(转载)
检测一台机器是否宕机的应用场景如下:1, 工作机器宕机,总控节点需要能够检测到并且将原有服务迁移到集群中的其它节点。2, 总控节点宕机,总控节点的备份节点(一般称为Slave)需要能够检测到并替换成主节点继续对外服务。检测一台机器是否宕机必须是可靠的。在大规模集群中,机器可能出现各种异常,比如停电,磁盘故障,过于繁忙导致假死等。对于机器假死,如果总控节点认为机器宕机并将服务迁移到其它节...
2011-03-15 20:19:26
635
原创 淘宝OceanBase设计(转载)
OceanBase有什么特点 OceanBase设计和实现的时候暂时摒弃了许多不需要的DBMS的功能,例如临时表,视图(view),SQL语言支持等,这使得研发团队能够把有限的资源集中到关键的功能上,例如数据一致性、高性能的跨表事务、范围查询、join等(更多的信息以及其开源的软件:http://oceanbase.taobao.org/)。 虽然数据总量比较大,但跟许多行业一样,淘宝业务...
2011-03-14 16:26:01
172
原创 Redis中持久化设计
redis的设计是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是“快照”,另一种是“文件追加”的方式。 快照 快照是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过...
2011-03-11 15:27:17
82
原创 memcache特性、优点、限制
这里需要说明,很多开发者觉得Memcached是一种分布式Cache,但其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键作分区存储,而这个区就是Memcached服务端的一个或者多个实例,如果将客户端也囊括到Memcached中,那么可以部分概念上说是集中式的。集中式的构架,无非两种情况:1.节点均衡的网状...
2011-02-14 17:10:42
304
原创 JPA中利用二级缓存优化访问性能
JPA使用也有好几年了,但是一直都没有对其中的缓存机制使用,我们知道在JPA2.0以后,作为JAVA6的标准,JPA2.0增加了对二级缓存的支持,比如中间件websphere、weblogic、JBOSS等也都相应提供了对OpenJPA2.0以及JPA二级缓存的支持,OpenJPA的缓存机制要比其他的ORM框架自带的缓存要强大的多,其他的ORM框架如hibernate自带的缓存Session级别的...
2010-11-24 18:25:05
243
原创 zookeeper初探
原理:ZK是Apache Hadoop的一个子项目(分布式服务框架),主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是ZK并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化(统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等)。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。 Z...
2010-09-27 12:22:33
108
原创 Memcached的分布式算法
memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。服务器端仅包括内存存储功能,其实现非常简单。至于memcached的分布式,则是完全由客户端程序库实现的。这种分布式是memcached的最大特点下面假设memcached服务器有node1~node3三台,应用程序要保存键名为“yale”的数据,首先向memcached中添加“yale”。将“yale”传给客户端程序...
2010-09-16 12:33:23
94
原创 EhCache辅助spring Acegi
因为在项目中想通过缓存来acegi的整合,因此选用了Ehcache,后来发现被terracotta收购后的Ehcache,由原本一个简简单单的 Java 缓存引擎变成了一个解决方案,而项目本身更是切分为以下几个大模块:ehcache打包了所有的模块ehcache-core核心缓存引擎,RMI复制模块和 Hibernate 的插件...
2010-09-14 16:36:44
141
原创 Facebook运用软件
2010年6月,Facebook现在的经营规模,诸多传统服务器的技术均将崩溃或根本无法支撑。那么面对5亿的活跃用户,Facebook的工程师们又将如何让网站平稳运转呢?这篇文章将展示Facebook的工程师完成这个艰巨任务所用到的一系列软件。 Facebook级别规模的挑战在我们深入细节之前,先了解一组Facebook不得不面对数据,你就可以想象这种规模。1) Facebook每月的PV量...
2010-08-12 15:51:04
201
Memcached内存利用建议
内存浪费 根据memcached的内存原理来提高缓存效率,可以看出memcached内存有所浪费,比如:slab的浪费、chunk的浪费。Slab浪费比如缓存的数据已经确定每个item的大小在1950左右,那么可以看出按照memcached初始分配内存的方式,将有很多的slab区域被浪费掉,比如下面的1952 区域 有890202个item,但是其他的slab却只有几个item ...
2010-04-17 14:08:59
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人