大型网站技术之存储的瓶颈(6)

在讲数据库水平拆分时候,我列出了水平拆分数据库需要解决的两个难题,它们分别是主键的设计问题和单表查询的问题,主键问题前文已经做了比较详细的讲述了,但是第二个问题我没有讲述,今天我将会讲讲如何解决数据表被水平拆分后的单表查询问题。 要解决数据表被水平拆分后的单表查询问题,我们首先要回到问题的源头,我们…

那些年,我们踩过PHP的坑

PHP尽管已经成为“世界最好的编程语言”,但是在开发的过程中,它的有些特性仍旧给我们造成了一些不明所以的困扰。 下面,苦李历数本人在开发的过程中踩过的一些坑,希望各位看客能从中汲取教训,绕坑而行。 1、PHP浮点计算的误差 先上码为敬: <?php $a = 0.0008; $b = 0.00…

大型网站技术之存储的瓶颈(5)

上文里我遗留了两个问题,一个问题是数据库做了水平拆分以后,如果我们对主键的设计采取一种均匀分布的策略,那么它对于被水平拆分出的表后续的查询操作将有何种影响,第二个问题就是水平拆分的扩容问题。这两个问题在深入下去,本系列就越来越技术化了,可能最终很多朋友读完后还是没有找到解决实际问题的启迪,而且我觉得…

大型网站技术之存储的瓶颈(4)

如果数据库需要进行水平拆分,这其实是一件很开心的事情,因为它代表公司的业务正在迅猛的增长,对于开发人员而言那就是有不尽的项目可以做,虽然会感觉很忙,但是人过的充实,心里也踏实。 数据库水平拆分简单说来就是先将原数据库里的一张表在做垂直拆分出来放置在单独的数据库和单独的表里后更进一步的把本来是一个整体…

NSQ安装与使用

安装步骤 1、Mac系统 $ brew install nsq 2、Linux系统 $ gpm install $ go get github.com/bitly/nsq/… NSQ 使用 gpm 来管理依赖文件。 编译源文件,gpm 是首选方案 相应安装包下载(当前最新版本) Mac:nsq-…

认识NSQ

1、NSQ是个什么东西 NSQ,一个基于GO语言的实时、分布式消息队列系统。 GO语言、实时、分布式、消息队列,是对NSQ最简单且也较为全面的诠释。为了能够更好的学习本教程,苦李建议各位看客最好能对消息队列有个初步的认识(自行百度即可)。另外,如果你再有一点GO语言的知识,那么将会对你理解NSQ的特…

大型网站技术之存储的瓶颈(3)

存储的瓶颈写到现在就要进入到深水区了,如果我们所做的网站已经到了做数据库垂直拆分和水平拆分的阶段,那么此时我们所面临的技术难度的挑战也会大大增强。 这里我们先回顾下数据库的垂直拆分和水平拆分的定义: 垂直拆分:把一个数据库中不同业务单元的数据分到不同的数据库里。 水平拆分:是根据一定的规则把同一业务…

如何使用PHP的异常处理机制

在各种语言里,异常(Exception)和错误(Error)的概念是不一样的。PHP里的异常,是程序运行中不符合预期的情况以及与正常流程不同的状况。所谓不正常的情况,就是说按照正常逻辑不该出错,但仍然出错的情况,这属于逻辑和业务流程的一种中断。PHP里的错误则属于自身问题,是一种非法语法或者环境问题…

搭建Git服务器

第一步:安装Git yum install git 第二步,创建一个git用户,用来运行git服务 useradd git 第三步,创建证书登录(建立信任关系) 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_…