总共113331次浏览,今日100469次。

Mysql高可用性相关备忘

1 辙道辕门 发表于:2014-07-03 16:28:40 +0800

          
          
    组建MySQL集群的几种方案LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个)DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?)MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?)MySQL Cluster (社区版不支持INNODB引擎?商用案例不足?)MySQL + MHA (如果配上异步复制,似乎是不错的选择,又和问题?)MySQL + MMM (似乎反映有很多问题,未实践过,谁能给个说法)回答:不管哪种方案都是有其场景限制 或说 规模限制,以及优缺点的。1. 首先反对大家做读写分离,关于这方面的原因解释太多次数(增加技术复杂度、可能导致读到落后的数据等),只说一点:99.8%的业务场景没有必要做读写分离,只要做好数据库...


阅览(113)评论(0) 全文

redis的failover相关解决方案备忘

1 辙道辕门 发表于:2014-07-02 15:37:39 +0800

          
          
    国内的IDC机房一般只能保证99%的可用率,因此粗略计算的话一年会有三天多的时间无法访问服务。因此建立一个failover机制就相当有必要。我们使用Mysql和redis,因此需要解决mysql和redis的failover问题。     
    关于redis:对redis进行failover的思路主要有以下几种(参考自:http://tech.gmo-media.jp/post/48748908427/introduce-redis-sentinel

         

VIP方式,可以使用keepalived等软件来实现。keepalived也可以用来做mysql的failover。     
    hosts或dns方式。这种需要有脚本来定时监测和控制,如果发现失效就更新dns缓存或hosts表。     
    iptables方案。这种办法的优点是无需引入其他中间件,但是可能难以解决主从同步的问...


阅览(133)评论(0) 全文

erlang学习备忘

1 辙道辕门 发表于:2014-07-01 21:10:15 +0800

          
          
    erlang是一门函数式语言。它最初是以prolog为蓝本进行改进的。它在可靠性方面有比较明显的优势,并且非常擅长并发。鉴于线程在共享资源时的许多瓶颈,erlang采用轻量级进程的办法来执行并发任务。     
    可靠性:erlang所要面对的是需要高容错度的应用。因此比起常规的语言,erlang有许多独到的机制来保证这一点。它可以热插拔代码、崩溃时拥有超强的恢复机制。     
    函数式语言一般来说有以下几点特性:

         

程序完全基于函数编写出来,很可能压根就没有对象的概念     
    一般来说给定相同输入,会返回相同的值     
    函数通常没有副作用,也即:不改变程序的状态     
    变量只能赋值一次

         

实际上erlang也并非100%纯度的函数式语言,因此也有例外。     
    erl打开erlang的命令行;在erl中执行c(filename). 编译文件。filename可以不加扩展名,但要与...


阅览(92)评论(0) 全文

搜索功能的一个小问题折腾了好久

1 辙道辕门 发表于:2014-07-01 18:10:33 +0800

    这个博客系统顶栏的搜索框,按我的想法是在单击搜索按钮,或者在搜索框里敲回车时就执行搜索的,但是突然发现按回车无法搜索,原因是没有跳转url,仅仅是把get参数发送到本页面了。     
    发现了这个bug,于是我试图解决。一开始我发现,搜索框里根本就没写enter键相应的代码。但是我没多想,直接把判断有按键按下时检测是否回车,如果是回车键则调用搜索按钮的click事件。     
    加完了以后发现居然还是无效,问题依旧。经过反复测试居然发现,在调用click事件后加上一个无关紧要的alert就正确了。但是这个结果显然不是我想要的,于是反复测试:把调用click事件改成直接调用js方法,甚至是把方法里的代码直接复制过来都无效,但是只要加上这个alert就正确了。     
    后来偶然发现,原来搜索框外面包着的是一个form,直接把form改成div就行了……这样不加alert也没问题了。...


阅览(79)评论(0) 全文

scala学习备忘

1 辙道辕门 发表于:2014-07-01 17:09:23 +0800

          
          
    scala是运行在JVM上的一门语言。与java相比,引入了类型推导、高阶函数等特性。它试图将命令式编程和函数式编程结合起来。scala-java的关系有点类似swift-objc的关系,前者使用后者的运行时,但在语法层面比前者有了许多改进,也支持后者的类库等。类似的,scala也可以用于编写安卓程序。     
    scala本身是一门“编译型”语言,它需要编译成java字节码才能被执行。但在交互式控制台中,它可以逐句地编译,从而提供类似解释性语言的交互式控制台。     
    scala包含了类型推导的特性,val声明不可变的变量(用于函数式编程);但也保留了使用var来声明可变的变量的特性(提供接近传统语言的变量声明方式)。在交互式控制台里val声明的变量可以被覆盖掉,但在.scala文件中如此会报错。类似地,swift用let来声明不可变变量,...


阅览(85)评论(0) 全文