zookeeper client使用笔记

本文是最近使用zookeeper client时所看资料的一些总结,主要内容来自Zookeeper的官方手册,以及FAQ文档

继续阅读

发表在 分布式系统 | 标签为 | 留下评论

分布式环境下ID生成方法总结

ID即标示符,在某个搜索域内能唯一标示其中某个对象。在关系型数据库中每个表都需要定义一个主键来唯一标示一条记录。为了方便一般都会使用一个auto_increment属性的整形数做为ID。因为数据库本身能保证这个数是在这个表范围内一直累加的,所以任何两条记录不会有相同的ID值,包括已经删除的记录。可是一旦表大到一定程度,要跨机器分表的时候,那么就不能再依靠这个auto_increment字段唯一表示一条记录了。因为此时的搜索域已经扩大到多个机器,而每台机器的auto_increment都是独立增长的。本文总结了几种在分布式环境下可用的ID生成方式。主要内容来自Instagram的一篇Blog。 继续阅读

发表在 分布式系统 | 标签为 , | 5 条评论

单件模式之C++版

单件模式(Singleton Pattern)应该是设计模式中实现起来最简单的一个了。通过使用单件模式,能够保证全局只存在一个类的实例化对象。本文用C++语言来说明如何写一个简单的单件类。 继续阅读

发表在 系统编程 | 标签为 , , | 4 条评论

深入理解PIPE

在linux中要进行进程间通信有多种方法:pipe、fifo、共享内存,信号量,消息队列,共享文件等等。其中pipe和fifo使用最广泛,二者的区别为pipe为匿名管道,只能用在有父子关系的进程间通信,而fifo可以通过文件系统中的一个文件取得,所以不受上述限制。作为父子进程间通信的通道,pipe同样可以看作是一个先进先出的队列。 继续阅读

发表在 系统管理, 系统编程 | 标签为 , | 一条评论

I/O事件处理模型之Reactor和Proactor

在编写服务端软件的时候,如何处理各种I/O事件是其中很重要的一部分。在Unix Network Programming中介绍了5种Unix/Linux下可用的I/O编程模型:1)阻塞式I/O; 2)非阻塞式I/O; 3)I/O复用; 4)信号驱动式I/O; 5)异步I/O。这几种都是基本的I/O编程模型,可以单独使用其中一种,也可以组合使用。为了应对高并发量的情形,在C10K Problem中另外总结了5种高性能的I/O编程模型:1) 单线程非阻塞式水平触发I/O(Serve many clients with each thread, and use nonblocking I/O and level-triggered readiness notification); 2) 单线程非阻塞式边沿触发I/O(Serve many clients with each thread, and use nonblocking I/O and readiness change notification); 3) 多线程异步I/O模型(Serve many clients with each server thread, and use asynchronous I/O); 4) 单个服务线程对应单个客户(Serve one client with each server thread); 5) 将服务线程放到内核(Build the server code into the kernel)。本文介绍的两种模型都是基于I/O多路复用的单线程处理模型。 继续阅读

发表在 系统管理 | 标签为 , , , , | 5 条评论

由一次ls错误发现的服务器入侵

实验室有几台linux服务器,有的用来做项目开发和测试,有的用来做代码库和知识共享。服务器都是直接接入教育网,理论上分配到的IP地址都是公网地址。但是考虑到教育网与公网之间的访问障碍以及有伟大的校长保护,对服务器的安全配置也就没怎么在意,iptables神马的都是默认配置。另外因为服务器地址都是通过DHCP获得的,为了方便实验室同学访问,给每台机器都绑定了dynamic dns。一直以来运行的都非常好,直到清明假期过后。 继续阅读

发表在 系统管理, 脚本编程 | 标签为 , , , | 一条评论

MacOS Lion编译安装GCC-4.6.2

Mac中的开发工具链都是围绕xcode展开的,但是对于只想使用gcc,g++编译c/c++代码的情况,装一个动辄3,4G的开发工具实在是不符合KISS原则。更新:4.3版本的xcode已经将图形开发界面和命令行工具分开了发布了。还有即使装了xcode,默认带的gcc编译器都是lvmm做前端的,并非纯正的gnu gcc。如果你想用纯正的gcc,最好的办法就是自己手动编译一个。 继续阅读

发表在 系统管理 | 标签为 , , , | 留下评论

Linux Shell编程几则

2012真是不安稳,才放假回来线上服务就各种问题==# 好一点的直接出core,还算有的调试。还有直接莫名其妙Hang住的,而且之前设计的运行监控在这个关键时刻也失灵了。为了保证服务进程运行正常,我们自己写了一套进程监控脚本,当服务异常时会报警或是重启服务。经过检查发现正是这个监控脚本的问题,记录在此。 继续阅读

发表在 系统管理, 脚本编程 | 标签为 , , , , | 留下评论