灌溉梦想,记录脚步

新浪推出云计算产品Sina App Engine

  新浪近期推出云计算产品Sina App Engine(SAE)(sae.sina.com.cn),允许开发者使用新浪的SDK(Software Development Kit,软件开发工具包)开发Web应用程序。
  据悉,SAE将由新浪提供带宽、服务器和计算资源。目前支持PHP 5.3.0、Mysql 5.0.86、Memcache和Fetch URL服务,目前还是Alpha版本,暂时只提供一小部分开发者进行邀请内测。
  根据其官方介绍,SAE是由新浪公司开发和运营的开放云计算平台的核心组成部分。SAE的目标是实现互联网应用在开发运维上的无缝整合,为App开发者提供稳定、快捷、透明、可控的服务化的平台,同时减少开发者的开发和维护成本。
  同时通过对消耗资源的量化,反向作用于开发过程,促进新浪公司互联网应用服务的质量提升。

InnoDB线程并发检查机制

  InnoDB在接受MySQL线程调用时,有一个并发线程的检查机制,通过innodb_thread_concurrency参数进行控制。如果参数设置大于0,则表示检查机制开启,允许进入的线程数就是参数的值。等于0则禁用并发检查。
  在新的MySQL线程调用Innodb接口前,Innodb会检查已经接受的请求线程数,如已经超过innodb_thread_concurrency设置的限制,则该请求线程会等待innodb_thread_sleep_delay微秒后尝试重新请求,如果第二次请求还是无法获得,则该线程会进入线程队列休眠。重试两次的机制是为了减少CPU的上下文切换的次数,以降低CPU消耗,这和Oracle中latch的spin机制是同样的道理。如果请求被Innodb接受,则会获得一个次数为innodb_concurrency_tickets(默认500次)的通行证,在次数用完之前,该线程重新请求时无须再进行前面所说innodb_thread_concurrency的检查。
  上述检查逻辑在源码storage/innobase/srv/srv0srv.c(Innodb很多参数都可以在该文件中找到定义)的srv_conc_enter_innodb函数中,有兴趣的可以仔细阅读一下,代码比较浅显,不难理解。另外,如果是一个已经持有lock的线程,则通过调用srv_conc_force_enter_innodb函数可以无视该检查,这是为了避免线程长时间持有锁影响性能,且可能增加死锁的机率。除此之外,slave线程也是有无视检查直接通行的权限。
  简单思考一下上述机制,可以得出一个初步的推论:在数据库并发请求较小的情况下,从性能上来说禁用检查机制应该是更好的,毕竟执行检查机制本身也需要加锁(Mutex)。当并发线程很高的情况下,则开启检查机制对性能更有利。至于具体innodb_thread_concurrency设置为多少,可能就需要在不同的条件下实际的做一下测试了,不同的硬件环境,不同的MySQL版本和Innodb版本,应该都会有一些区别。
  源代码中对于innodb_thread_concurrency参数的注释如下:
  /* The following controls how many threads we let inside InnoDB concurrently:
  threads waiting for locks are not counted into the number because otherwise
  we could get a deadlock. MySQL creates a thread for each user session, and
  semaphore contention and convoy problems can occur withput this restriction.
  Value 10 should be good if there are less than 4 processors + 4 disks in the
  computer. Bigger computers need bigger values. Value 0 will disable the
  concurrency check. */
  ulong srv_thread_concurrency = 0;
  因为检查机制需要Mutex保护(Mutex-based Model),所以开启检查本身也有性能消耗,并且扩展性也会受到限制,在MySQL5.4版本中引入了一种新的机制(Timer-based Model),这里就不讨论了,实际上XtraDB存储引擎里已经包含Timer-based Model,通过参数innodb_thread_concurrency_timer_based可以开启,默认为OFF。在MySQL5.4的srv0srv.c的源代码中的注释中,可以看到Google和Percona的版权声明,看来MySQL5.4中吸引了很多第三方的改进代码,值得期待。

RouerOS DDNS 设置方法

先到www.changeip.com填写注册申请,并添加一个域名。

并在RouterOS的调度程序中添加下列代码:

:log info "DDNS: Begin"
:global ddns-user "你的用户名"
:global ddns-pass "你的密码"
:global ddns-host "*1"
:global ddns-interface "外网拨号线路,比如(pppoe-out3)"
:global ddns-ip [ /ip address get [/ip address find interface=$ddns-interface] address ]
:if ([ :typeof $ddns-lastip ] = nil ) do={ :global ddns-lastip 0.0.0.0/0 }
:if ([ :typeof $ddns-ip ] = nil ) do={
:log info ("DDNS: No ip address present . " . $ddns-interface . ", please check.")
} else={
:if ($ddns-ip != $ddns-lastip) do={
:log info "DDNS: Sending Update!"
:log info [ /tool dns-update name=$ddns-host address=[:pick $ddns-ip 0 [:find $ddns-ip "/"] ] key-name=$ddns-user key=$ddns-pass ]
:global ddns-lastip $ddns-ip
} else={
:log info "DDNS: No change"
}
}
:log info "DDNS: End"

Sina App Engine

sina App Engine http://sae.sina.com.cn/
支持的服务:

PHP 5.3.0
Mysql 5.0.86
Memcache
Fetch URL
如果新浪免费,那么国内的虚拟主机商是不是将面临极大的挑战?因为无论是新浪还是国内的主机商,面临的政策风险都是一致的。

如果sina App Engine适当收费,国内主机商同样也会受到不小的冲击。

其实,我个人倒是希望sina App Engine能做大做强,毕竟在政策的影响下,google的所有服务基本上被防火墙攻击的支离破碎,国内用户谁还敢放心的使用?

现在国内的企业都在嚷嚷着云计算,不过一直都是雷声大,雨点小,多数仅仅是属于概念炒作而已。

无论如何sina App Engine总算是出来了,而且让人激动的是,支持的语言竟然是php+mysql。

云计算、sina App Engine,我们拭目以待。

Games for Windows

  Games for Windows指的是一种由微软定义的游戏特性。支持该特性的游戏,将可以在装有Windows Vista的电脑中运行,并可以网络互联。
  Games for Windows定义了一系列的规范。这些规范使得在Windows中开发Xbox360的程序,并可以在符合此架构的计算机或游戏机中执行而不需修改代码。同时,此规范定义了网络互联的协议,因此运行于Games for Windows特性的游戏可以忽略平台差异性进行网络互联。
  微软官方表示DirectX 10将不会支持Vista以前的操作系统,Xbox360之前的游戏机也不支持Games for Windows,这说明说明了Vista与XBOX360的网络互联支持
  Games for Games for Windows列表:http://zh.wikipedia.org/zh-cn/Games_for_Windows%E6%B8%B8%E6%88%8F%E5%88%97%E8%A1%A8
  众所周知,Windows是一个了不起的游戏平台,也是最
  在地球上流行的游戏平台,的确如此!不然你也不会关注这里。
  但是你可能不知道的是,在微软和一些的游戏
  业界名企共同努力下,将使游戏
  在Windows上的表现比以往更好,Games for Windows就是努力
  的结果。什么是Games for Windows?这是一个承诺在windows平台上提新的伟大的游戏体验。
  Games for Windows组成的四个主要方面:
  1)质量。微软自身对Games for Windows进行广泛的测试,而不只是发行他。微软还注重每个游戏点的质量,以确保它们满足性能和可靠性标准。
  2)兼容性。 Games for Windows可以运行在安装有Windows XP、Windows Vista和Windows 7的PC上,并且同时支持32位和64位版本。 Games for Windows,支持游戏游戏控制器,并且可以兼容微软的Xbox 360的Windows平台上的相关硬件和应用,其中包括Xbox 360游戏机控制器、无线游戏接收器可以用于Windows。甚至支持宽屏会议等。
  3)安全功能。你可以相信,任何携带有关
  Games for Windows的产品一贯支持家长控制功能,在Windows Vista和Windows 7已经提供这些设置。
  4)容易发挥。Games for Windows易于安装,
  容易添加和删除,特别是在Windows Vista和Windows 7系统中。每一个游戏当在Windows以标题的游戏中出现,Games for Windows上的资源都会提供某种形式的“简易安装”,这会让你很快的获得游戏。

LiveCD的制作方法

1、建立自己的yum-repository或者使用官方的(考虑到你需要的软件小,所以这一步不是很必要)。

2、安装一个centos系统,修改 /etc/yum.repos.d/centos-livecd.repo 文件,加入以下内容:

# Name: CentOS LiveCD repository
[livecd]
name = CentOS $releasever – LiveCD
baseurl = http://www.nanotechnologies.qc.ca/propos/linux/centos-live/$basearch/live
enabled=1
protect=0
gpgkey = http://www.nanotechnologies.qc.ca/propos/linux/RPM-GPG-KEY-PGuay

保存之后,执行以下命令:

# yum install livecd-tools syslinux

这样就安装好了工具,接下来就是写自己想要的ks脚本;

3、ks脚本

名称:centos-livecd-minimal.ks(这个就是你所说的linux+GNOME)

内容:

lang en_US.UTF-8
keyboard us
timezone US/Eastern
auth –useshadow –enablemd5
selinux –disabled
firewall –disabled

repo –name=base –baseurl=http://ftp.telus.net/pub/centos/5/os/$basearch
repo –name=updates –baseurl=http://ftp.telus.net/pub/centos/5/updates/$basearch
repo –name=extras –baseurl=http://ftp.telus.net/pub/centos/5/extras/$basearch
#repo –name=base –baseurl=http://isoredirect.centos.org/centos/5/os/$basearch
#repo –name=updates –baseurl=http://isoredirect.centos.org/centos/5/updates/$basearch
#repo –name=extras –baseurl=http://isoredirect.centos.org/centos/5/extras/$basearch
repo –name=live –baseurl=http://www.nanotechnologies.qc.ca/propos/linux/centos-live/$basearch/live

%packages
bash
kernel
syslinux
passwd
policycoreutils
chkconfig
authconfig
rootfiles
comps-extras
xkeyboard-config
gnome-desktop

4、生成

# LANG=C livecd-creator –config=centos-livecd-minimal.ks –fslabel=linux-gnome

执行这个命令需要一会时间,你耐心等下,执行成功后,你会看到一个linux-gnome.iso的文件,这个文件可以刻录到光盘,在光驱中直接启动,也可以安装到硬盘,并且你可以定制里面的配置和桌面背景之类的,都是通过ks脚本实现。注意(ks 脚本路径要写对,上面那样写,要在ks脚本所在目录执行)

Tips and tricks for anaconda and kickstart

  真正的文本模式运行anaconda
  大家应该都知道在Kickstart脚本中加入一行"text" 就能以文本模式安装CentOS,不过这还不算"纯文本" 模式,下边这个选项可以使用真正的shell-like文本模式进行安装。那就是使用 "cmdline" 替换KS文件中"text"选项。这个选项当你使用了%packages –nobase 或者运行很复杂的%post脚本的时候特别有用,因为你可以从屏幕上直接看到脚本的运行输出,可以省却你大量的debug的时间。
  anaconda 安装中各终端显示内容
  Alt-F1
  安装程序主画面(text或cmdline模式)
  Alt-F2
  shell提示符
  Alt-F3
  安装程序输出的log
  Alt-F4
  kernel等输出的系统
  Alt-F5
  所有其他信息
  Alt-F7
  安装程序主画面(图形模式)
  给%pre 和 %post 段添加log
  当使用%pre 或 %post 脚本的时候,可以把脚本的输出记录到日志文件中,使用–log=/path/to/file
  %post –log=/root/my-post-log
  echo 'Hello, World!'
  另外一个记录和显示屏幕输出的方法是:
  %post
  exec < /dev/tty3 > /dev/tty3
  chvt 3
  echo
  echo "################################"
  echo "# Running Post Configuration #"
  echo "################################"
  (
  echo 'Hello, World!'
  ) 2>&1 | /usr/bin/tee /var/log/post_install.log
  chvt 1
  使用指定网卡运行kickstart
  当系统有多块网卡时anaconda安装程序会询问使用哪一块来进行kickstart安装。使用哪一块网卡可以在启动时通过ksdevice参数来指定。
  第一种方法:ksdevice=eth0
  第二种方法:ksdevice=link. 这种情况下anaconda会使用第一个具有活动连接的网卡。
  第三种方法:用于PXE安装。 在PXE配置文件中加入 IPAPPEND 2 ,然后使用 ksdevice=bootif。在这种配置下,anaconda 会使用做了PXE启动的那块网卡。 (不要求这块网卡是第一个具有活动连接的网卡)。
  在kickstart配置文件中需要使用network段来定义网络配置。如果你使用方法2 或 3 ,那么你不能明确知道哪块网卡会被选中。如果你在Kickstart文件中的network配置段没有明确指定一个设备的话,anaconda会根据你在network段中的信息来配置那块进行了kickstart安装过程的网卡。
  强制kickstart询问网络配置
  自CentOS 5开始出现了一个隐藏的kickstart选项,可以强制在安装过询问网络配置。在网络配置那里把 "query”关键字加到 –bootproto=后边:
  network –device=eth0 –bootproto=query
  安装过程中会谈出一个对话框询问IP地址配置。
  允许/禁止 firstboot
  在Kickstart文件中 "firstboot –enable" 或者 "firstboot –disable"
  配置防火墙信任接口
  可以使用–trust选项配置多个信任接口:
  # Enable firewall, open port for ssh and make eth1 and eth2 trusted
  firewall –enable –ssh –trust=eth1 –trust=eth2