NOSQL数据库--HBase简介

最近因为项目原因,研究了Cassandra,Hbase等几个NoSQL数据库,最终决定采用HBase。在这里,我就向大家分享一下自己对HBase的理解。

在说HBase之前,我想再唠叨几句。做互联网应用的哥们儿应该都清楚,互联网应用这东西,你没办法预测你的系统什么时候会被多少人访问,你面临的用户到 底有多少,说不定今天你的用户还少,明天系统用户就变多了,结果您的系统应付不过来了了,不干了,这岂不是咱哥几个的悲哀,说时髦点就叫“杯具啊”。

其实说白了,这些就是事先没有认清楚互联网应用什么才是最重要的。从系统架构的角度来说,互联网应用更加看重系统性能以及伸缩性,而传统企业级应用都是比较看重数据完整性和数据安全性。那么我们就来说说互联网应用伸缩性这事儿.对于伸缩性这事儿,哥们儿我也写了几篇博文,想看的兄弟可以参考我以前的博文,对于web server,app server的伸缩性,我在这里先不说了,因为这部分的伸缩性相对来说比较容易一点,我主要来回顾一些一个慢慢变大的互联网应用如何应对数据库这一层的伸缩。 Continue reading

NOSQL中Cassandra与HBase的比较,及我们迁移系统的原因

原文地址:http://ria101.wordpress.com/2010/02/24/hbase-vs-cassandra-why-we-moved

HBase vs Cassandra: why we moved

下文中将讨论为何选择Cassandra作为我们的NOSQL方案。

是否Cassandra的血统预言了未来?

我发现在软件问题上,我们先去考虑上层问题而不是直接深入到细节,可以节约大量时间。在选择HBase还是Cassandra上我也遵循了这一信条。HBase还是Cassandra具有完全不同的血统和基因,这决定了他们在我们应用的可行性。

HBase及其支持系统源自Google的GFS和BigTable设计;而最初由Facebook开源出来的Cassandra采用了BigTable的数据模型,确实是用类似Amozon的Dynamo的存储系统(实际上Cassandra最初的开发工作都是由两个原Dynamo工程师开发的)。 Continue reading

配置php支持sqlite数据库

php5-windows默认已经包含了sqlite模块,但没有启用

如果需要支持sqlite,则修改php.ini

启用三个扩展语句

extension=php_pdo.dll

extension=php_pdo_sqlite.dll

extension=php_sqlite.dll (可能不是必须的,但最好一起啦)

我第一次只开了下面两个,因此始终无法启用,测试程序会报错

Fatal error: Call to undefined function sqlite_open()

也就是sqlite没有成功启动

是用js 实现 图片“另存为” 最后怎样实现的? (FireFox没有测试过)

使用JS实现单击连接保存图片
2种形式都可以

第一种:
<script> 
function   SaveAs5(imgURL) 
...{ 
  var   oPop   =   window.open(imgURL,"","width=1,   height=1,   top=5000,   left=5000");   
  for(;   oPop.document.readyState   !=   "complete";   )   
  ...{ 
    if   (oPop.document.readyState   ==   "complete")break; 
  } 
  oPop.document.execCommand("SaveAs"); 
  oPop.close();   
} 
</script>
<img   src="t_screenshot_17616.jpg"   id="DemoImg"   border="0"   onclick="SaveAs5(this.src)"> 
 Continue reading 

JS打开图片另存为对话框

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>

<script language="JavaScript">
<!--
function downLoadImage(imagePathURL){

//如果中间IFRAME不存在,则添加
if(!document.getElementById("_SAVEASIMAGE_TEMP_FRAME"))
jQuery('<iframe style="display:none;" id="_SAVEASIMAGE_TEMP_FRAME" name="_SAVEASIMAGE_TEMP_FRAME" onload="_doSaveAsImage();"
width="0" height="0" src="about:blank"></iframe>').appendTo("body");

if(document.all._SAVEASIMAGE_TEMP_FRAME.src!=imagePathURL){
//图片地址发生变化,加载图片
document.all._SAVEASIMAGE_TEMP_FRAME.src = imagePathURL;
}else{
//图片地址没有变化,直接另存为
_doSaveAsImage();
}
}
function _doSaveAsImage(){
if(document.all._SAVEASIMAGE_TEMP_FRAME.src!="about:blank")
document.frames("_SAVEASIMAGE_TEMP_FRAME").document.execCommand("SaveAs");
}

//-->
</script>

</head>

<body>
<input type="button" value="download image" onclick="downLoadImage('http://www.blogjava.net/images/blogjava_net/weiwei/46570/r_beyond1991.jpg');">
</body>
</html>

Memcache mutex设计模式

周六的S2 Web 2.0技术沙龙上介绍了memcache中使用mutex场景(文后要演讲稿),有网友对详情感兴趣,简单介绍如下。

场景

Mutex主要用于有大量并发访问并存在cache过期的场合,如

  • 首页top 10, 由数据库加载到memcache缓存n分钟
  • 微博中名人的content cache, 一旦不存在会大量请求不能命中并加载数据库
  • 需要执行多个IO操作生成的数据存在cache中, 比如查询db多次

问题

在大并发的场合,当cache失效时,大量并发同时取不到cache,会同一瞬间去访问db并回设cache,可能会给系统带来潜在的超负荷风险。我们曾经在线上系统出现过类似故障Continue reading

Twitter系统运维经验

最近看到的另外一个介绍Twitter技术的视频[Slides] [Video (GFWed)],这是Twitter的John Adams在Velocity 2009的一个演讲,主要介绍了Twitter在系统运维方面一些经验。 本文大部分整理的观点都在Twitter(@xmpp)上发过,这里全部整理出来并补充完整。

Twitter没有自己的硬件,都是由NTTA来提供,同时NTTA负责硬件相关的网络、带宽、负载均衡等业务,Twitter operations team只关注核心的业务,包括Performance,Availability,Capacity Planning容量规划,配置管理等,这个可能跟国内一般的互联网公司有所区别。

1. 运维经验

* Metrics

Twitter的监控后台几乎都是图表(critical metrics),类似驾驶室的转速表,时速表,让操作者可以迅速的了解系统当前的运作状态。联想到我们做的类似监控后台,数据很多,但往往还需要浏览者做二次分析判断,像这样满屏都是图表的方法做得还不够,可以学习下这方面经验。 据John介绍可以从图表上看到系统的瓶颈-系统最弱的环节(web, mq, cache, db?) Continue reading

js里面如何获取网络地址的图片的高度和宽度 (变通办法)

原图片是 :<img src="http://gg.blueidea.com/2008/blueidea/flash2008.gif">

<div id="box"></div>

<script language="javascript">
(function(){
var img=document.createElement('img');//创建一个img元素
img.src="http://gg.blueidea.com/2008/blueidea/flash2008.gif";//指定src
img.style.position="absolute";//防止正常的内容变形
img.style.visibility='hidden';//藏起来
var inj=document.getElementById('box').appendChild(img);//插入到box中。当然插入到document.body也可以
alert('宽:'+inj.offsetWidth);//然后就可以通过 offset 取得宽和高了
alert('高:'+inj.offsetHeight);
})();
</script>

简单地说就是把图片放入一个自动伸缩的DIV中,然后获取DIV的宽和高!

Allowed memory size of 8388608 bytes exhausted解决方法

出现该错误的原因:

是因为php页面消耗的最大内存默认是为 8M (在PHP的ini件里可以看到) ,如果文件太大 或图片太大 在读取的时候 会发生上述错误。

解决办法:

1,修改 php.ini
将memory_limit由 8M 改成 16M(或更大),重启apache服务

2,在PHP 文件中 加入 ini_set(”memory_limit”,”100M”);

注意:为了系统的其它资源的正常使用 请您不要将 memory_limit设置太大,其中-1为不限

3,修改.htaccess 文档(前提是该目录支持.htaccess)
在文档中新增一句:php_value memory_limit 16M(或更大)

6个最佳房地产 WordPress 主题

WordPress 并不是一个简单的博客程序,它能干的事情非常多。如果你是一个地产中介,想通过互联网出售房子,那么你也可以通过 WordPress 来实现,是的,选择一个适合房地产的 WordPress 主题,就会让你事半功倍,并且现在网络上有非常多的和房地产相关的 WordPress 主题,并且还集成了房地产相关的功能(如位置,价格,大小,几房几厅,经纪人,代理等)。所以今天就给大家介绍下5个非常不错的房地产相关的 WordPress 主题。

本文翻译自 14 Real Estate WordPress Themes,原文有 14 个房地产相关的 WordPress 主题,这里节选其中最好的 6 个。 Continue reading