随笔分类 - 架构与设计
摘要:如果,一开始就从事dba和运维的专家们说他们有丰富的大型分布式系统架构设计经验,那纯属扯淡。除非,他们从是从开发专家或者架构师转型而来,那么他们才有资格说自己有丰富的大型分布式系统架构设计经验。 运维和数据库是很重要,但是他们必须依赖于上游产出的优质系统,上游做的不好,任凭你数据库如何优化、运维如何
阅读全文
摘要:通常来说,我们应该使用应用的特性而不是自己的爱好或者规定而去选择一种合适的组件,选择的标准应该是这个组件最适合或者本身其设计就是为了解决这个问题,而不是这个组件能够做这事情为标准。就拿存储来说,任何时候,我们都有至少文本文件、SQL数据库、文档数据库或者k/v方式来实现。在我们的一个监控MQ积压的系
阅读全文
摘要:设计一个好的框架和设计一个好的软件一样,需要考虑的方面很多,比如扩展性、性能、用户体验、稳健性等等,视不同的场景,每个点都可能导致成败,但他们通常并不是老板们关心的,因为在大部分情况下,他们通常都没有做到极限的渴望,或者说相比业务来说,一台机器不够上两台、十台不够上百台,没什么大不了的,反正花的都是
阅读全文
摘要:我们知道,couchbase默认情况下就是N主的HA模式,bucket同时存储在多个节点中。如下所示: 但事实上,有些时候我们希望某些节点只能读,不能写以避免各种副作用以及分布式系统下出于管理和安全性目的的考虑。也就是达到如下的目的: 这种情况需要借助XDCR,也就是两个集群的方式来实现。如下所示:
阅读全文
摘要:在某些情况下,我们在容器启动的时候做一些事情,举个例子,加载缓存等。。 此时我们会希望某个bean先被加载并执行其中的afterpropertiesset方法。 因为spring默认是根据是否有@Ordered注解(ordered和maven三方库依赖管理一样,也应该作为公共资源分配,这是正统方法)
阅读全文
摘要:现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase。那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多服务需要大量的访问分布式缓存,由于分布式缓存通常部署在单独的服务器中,在lan中,通常单次网络也需要
阅读全文
摘要:最近一段时间在反复思考需求、概要设计、详细设计应该到各自什么粒度以及各自的界线是什么。 根据业务功能的不同,有些功能的设计要求很高,有些功能的实现要求很高。前者设计思考的非常清楚之后,找任何开发几乎都能够完成,典型的比如说在高并发的架构设计点如计数器、日常的增删改查、甚至复杂的业务流程。后者,比如说
阅读全文
摘要:DB当然是第一重要,但是具体到选择oracle/mysql/postgresql亦或是mongodb,就需要有足够的的经验,主要要考虑如下点: 1、提供的feature是否足够丰富,能否满足OLTP/OLAP的需求; 2、是否支持高并发、HA机制(各优缺点、维护能否跟上、对开发有什么额外要求),这里
阅读全文