随笔分类 -  04.系统架构和开发

上一页 1 ··· 3 4 5 6 7
摘要:当系统数据量发展到一定程度后,往往需要进行数据库的垂直切分和水平切分,以实现负载均衡和性能提升,而数据切分后随之会带来多数据源整合等等问题。如果仅仅从应用程序的角度去解决这类问题,无疑会加重应用程度的复杂度,因此需要一个成熟的第三方解决方案。Amoeba正是解决此类问题的一个开源方案,Amoeba位于应用程序和数据库服 务器之间,相当于提供了一个代理,使得应用程序只要连接一个Amoeba,相当于只是在操作一个单独的数据库服务器,而实际上却是在操作多个数据库服务 器,这中间的工作全部交由Amoeba去完成。本文针对基于MySQL的水平切分的实现机制,讲解Amoeba For MySQL的简单应. 阅读全文
posted @ 2013-12-02 10:57 海上浪子 阅读(552) 评论(0) 推荐(0) 编辑
摘要:故事背景: 本人有幸,经老友( 现为x知名快递公司技术总监 ) 推荐进入中国前三大民营快递公司之一工作,在此非常感谢他,在此也非常感谢我在第一家公司帮助我进步的兄弟(我在时的项目经理,现为 x 知名自动识别行业企业部门高级经理)。下面介绍6年后和6年前的我的职业生涯中的两个单表大数据故事。(1) 6年后 单表大数据 之故事(一) 来之前老友告之现在核心运营系统 Oracle数据库中单表数据半年过10亿了,使用传统T-Sql不论如何优化,查询客户信息速度也提升不上去。需要使用企业级搜索引擎(Solr)来解决本部门其余两大辅助业务系统去查询客户信息。如果我过去的话,先把这块带肉的骨头啃了。当时一听 阅读全文
posted @ 2013-11-28 17:36 海上浪子 阅读(2844) 评论(35) 推荐(9) 编辑
摘要:在使用Memcached时,一般实时读写的场景并不多见。但多是Memcached写入后,在一定时间后才会有读操作。但是如果应用场景,是写入后瞬间即会有读操作呢?似乎没有什么特别之处,我们依然可以这样写:注:此处使用的是spymemcached客户端。MemcachedClientcache=newMemcachedClient(cacheServerAddr);cache.set("key",3600,bigData);returncache.get("key");如此写入缓存后,如果立刻就有其他客户端进行读操作,则会读取失败,因为set是异步操作(as 阅读全文
posted @ 2013-11-28 15:30 海上浪子 阅读(382) 评论(0) 推荐(0) 编辑
摘要:1. 源程序packagecom.sinosuperman.memcached;importjava.io.IOException;importjava.net.InetSocketAddress;importnet.spy.memcached.CASResponse;importnet.spy.memcached.CASValue;importnet.spy.memcached.MemcachedClient;publicclassTest{privatestaticMemcachedClientclient=null;static{try{client=newMemcachedClient 阅读全文
posted @ 2013-11-28 15:25 海上浪子 阅读(298) 评论(0) 推荐(0) 编辑
摘要:1. 非CAS首先看一个不是CAS的Memcached程序实例。实例的问题原型,见上一篇博文。程序实例:packagecom.sinosuperman.memcached;importjava.io.IOException;importjava.net.InetSocketAddress;importnet.spy.memcached.MemcachedClient;publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{MemcachedClientcache=newMemcachedClient(newInet 阅读全文
posted @ 2013-11-28 15:23 海上浪子 阅读(267) 评论(0) 推荐(0) 编辑
摘要:1. 什么是CAS协议很多中文的资料都不会告诉大家CAS的全称是什么,不过一定不要把CAS当作中国科学院(China Academy of Sciences)的缩写。Google.com一下,CAS是什么?CAS是Check And Set的缩写。2. CAS协议原文http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt3. CAS的基本原理基本原理非常简单,一言以蔽之,就是“版本号”。每个存储的数据对象,多有一个版本号。我们可以从下面的例子来理解:如果不采用CAS,则有如下的情景:第一步,A取出数据对象X;第二 阅读全文
posted @ 2013-11-28 15:21 海上浪子 阅读(184) 评论(0) 推荐(0) 编辑
摘要:一、基本参数在我们第一次安装Memcached时,一般都是用过这个命令:memcached-m512-uroot-d-l127.0.0.1-p11211我们先来解释这几个参数的含义吧。-m 指定缓存所使用的最大内存容量,单位是Megabytes,默认是64MB-u 只有以root身份运行时才指定该参数-d 以daemon的形式运行-l 指定监听的地址-p 指定监听的TCP端口号,默认是11211二、其他常用的参数-t 指定线程数,默认是4个-h 打印帮助信息-c 最大同时连接数,默认是1024.-U 指定监听的UDP端口号,默认是11211-M 内存耗尽时显示错误,而不是删除项一开始说的“-d 阅读全文
posted @ 2013-11-28 15:20 海上浪子 阅读(226) 评论(0) 推荐(0) 编辑
摘要:1. 构造函数publicMemcachedClient(InetSocketAddress[]ia)throwsIOException;publicMemcachedClient(Listaddrs)throwsIOException;publicMemcachedClient(ConnectionFactorycf,Listaddrs)throwsIOException;其中最简单的构造函数就是第一个,可以直接传递一个InetSocketAddress,也可以是InetSocketAddress的数组。其实InetSocketAddress也是被转换成数组的。比如:MemcachedCli 阅读全文
posted @ 2013-11-28 15:18 海上浪子 阅读(290) 评论(0) 推荐(0) 编辑
摘要:一, Amoeba简述 Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、Query过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 在Amoeba上面你能够完成多数据源的高可用、负载均衡、数据切片的功能。目前在很多企业的生产线上面使用。二, Amoeba使用指南说明文档见:http://docs.hexnova.com/amoeba/三, 安装小结:( 阅读全文
posted @ 2013-11-22 17:59 海上浪子 阅读(445) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7