• architecture

    分布式系统简介

    1. 分布式系统理论基础 CAP定理,又被称作布鲁尔定理(Brewer's theorem),民间又称帽子定理,是加州大学伯克利大学埃里克·布鲁尔在2000年的PODC(分布式计算原理研讨会)上提出的一个猜想,随后在2002年,MIT的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为一个定理。CAP的概念如下: Consistency(一致性):对于每次读取,都会返回最新的修改…

  • architecture

    GCC编译优化和调试选项

    在没有开启编译优化时,GCC编译器的目的是:减少编译时间和生成预期的调试结果。对于GCC编译的程序,调试的语句都是独立的,可以在程序的任何语句中设置断点,并设置变量的值和修改语句的执行,得到你想要的执行结果。 在开启编译优化的开关时,GCC编译器的目的是:优化程序的性能和减少代码的大小…

  • architecture

    Service Mesh架构的发展

    本文是对Phil Calçado的文章Pattern: Service Mesh的翻译,主要是为了学习一下Service Mesh发展的历史和对Service Mesh的简介,欢迎批评指正。 自从分布式系统的概念提出几十年来(Lynch, Nancy A. (1996), Distributed Algorithms),分布式系统用在了我们很多想不到的地方…

  • algorithm architecture

    一致性HASH的原理和实现

    一致性HASH的概念在我们的工作中经常会用到,例如对于集群中一些有状态的服务,我们希望对于同一个玩家的请求总是由固定的服务器来处理,且不会因为该服务的扩缩容而导致请求失效,即转发到了其他服务器处理。那么为什么一致性HASH可以保证被映射到某个服务的请求持久有效呢? 一致性HASH(Consistent Hashing)(维基)定义:一种特殊的HASH,在HASH表大小发生变化时…

  • architecture

    服务器架构之后台进程防多开

    这两天在想如何防进程多开的问题,先说一下项目中是如何做的,其实项目的框架使用了公司tapp组件,进程在启动的时候传入pid文件,tapp本身就会进行进程多开的保护。 在讨论具体防进程多开的实现方式前,先说一下项目过程中遇到的问题,在一开始接触项目的时候其实并没有太注意到这块,后来发现我们自己的开发环境的进程经常会发生启动了多份,那为啥会启动多份呢?本身业务进程的监控都是通过tcm来进行管理的…

  • architecture

    ZooKeeper的基本介绍

    ZooKeeper:分布式应用的分布式协调程序(官方介绍定义)。曾经是Hadoop的一个子项目,但现在是Apache的一个独立的顶级项目。它提供了一组简单的原语,应用程序可以在此之上实现更高级别的服务:分布式同步、配置管理、集群管理、命名服务等。 ZooKeeper的设计易于编程,并且使用了类似文件系统目录树结构的数据模型。zk是java编写的,需要在java虚拟机中运行…

  • architecture

    协程:posix::ucontext用户级线程实现原理分析

    在听完leader的<分布式rpc框架的介绍>课程后,对其中协程的实现方式有了基本的了解,无论的POSIX的ucontex,boost::fcontext,还是libco,都是通过保存和恢复寄存器状态,来进行各个协程上下文的保存和切换。所以有了这篇对ucontext实现原理的分析。 文章首先初略的温习了一下汇编的一些基础知识,其次就是ucontext源码分析…

  • architecture

    Linux内核时钟系统和定时器实现

    1. Linux内核时钟系统和定时器实现 Linux 2.6.16之前,内核只支持低精度时钟,内核定时器的工作方式: 系统启动后,会读取时钟源设备(RTC, HPET,PIT...),初始化当前系统时间; 内核会根据HZ(系统定时器频率,节拍率)参数值,设置时钟事件设备,启动tick(节拍)中断。HZ表示1秒种产生多少个时钟硬件中断,tick就表示连续两个中断的间隔时间。在我电脑上,HZ=250…