摘要: 在分布式系统的数据一致性问题(一)里面,简单的介绍了分布式数据的同步问题,上面的问题比较抽象,在目前的互联网应用中还很少见,这次在通过一个比较常见的例子,让大家更深入的了解一下分布式系统设计中关于数据一致性的问题这次我们拿我们经常使用的功能来考虑吧,最近网购比较热门,就以京东为例的,我们来看看京东的一个简单的购物流程用户在京东上下了一个订单,发现自己在京东的账户里面有余额,然后使用余额支付,支付成功之后,订单状态修改为支付成功,然后通知仓库发货。假设订单系统,支付系统,仓库系统是三个独立的应用,是独立部署的,系统之间通过远程服务调用。订单的有三个状态:I:初始 P:已支付 W:已出库,订单金额 阅读全文
posted @ 2012-09-22 17:59 猫叔玩流量 阅读(12855) 评论(6) 推荐(1) 编辑
摘要: 最近写了一个关于 铁道部购票系统的若干文章铁道部新客票系统的设计(一)铁道部新客票系统的设计(二)铁道部新客票系统的设计(三)正好遇到一个博友,咨询了一个问题,这个问题正好可以作为分布式系统的数据一致性的简单例子,当然,这个只是比较简单的情况现在先抛出问题,假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心,现在的问题是,假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,在把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)。数据更新的消息是通过一台中心的MQ进行转发。先把问题简单化 阅读全文
posted @ 2012-09-21 13:34 猫叔玩流量 阅读(41430) 评论(9) 推荐(5) 编辑
摘要: 铁道部新客票系统的设计(一)铁道部新客票系统的设计(二)铁道部新客票系统的设计(三)最近只是一时兴起,觉得无聊,正好要到买票的时候,写了这个一系列文章,首先是对自己这些年来的工作经验的总结,其次是把分布式事务性系统的设计思想进行分析和整理,最后也就是和想集大家的智慧,讨论系统的设计。我不是铁道部的工程师,我只是一家互联网金融类公司的屌丝工程师,级别不高,能力也一般,就是喜欢技术而已。在第二篇文章里面,重点分析了余票库的整体设计,我看到有的评论说了几点,现在整理一下1 为什么要用悲观锁为什么要用锁,由于之前是做金融系统,对数据的一致性要求很高。铁道部的出票操作要保证数据一致性,所以必须在获取余票 阅读全文
posted @ 2012-09-20 21:33 猫叔玩流量 阅读(11810) 评论(43) 推荐(11) 编辑
摘要: 今天早上坐车的时间正好读完了这一篇文章《一位资深程序员对当前软件行业的技术感悟》,觉得有一点意思,可以拿来写写作者有15年的IT工作经验,3年的管理经验,想想自己,如果算上大学自己两年做的项目,加上工作6年的经验,也有8年了作者说:“不过在这同时,给公司内部也做了很多J2EE的项目,例如公司的门户网站,公司内部的release平台,以及team内部用的小工具。不过好景不长,从开发就转向了管理,一管就是3年,在这三年中不夸张的说去趟厕所都是跑着去跑着回,这还不是最杯具的,最杯具的是根本没有时间写任何代码!!!”其实很多人期待从技术转向管理,技术人员转让管理人员最大的挑战就是会有一种失去安全感的感 阅读全文
posted @ 2012-09-20 17:12 猫叔玩流量 阅读(5894) 评论(11) 推荐(3) 编辑
摘要: 铁道部新客票系统的设计(一)铁道部新客票系统的设计(二)铁道部新客票系统的设计(三)在上一篇文章中 铁道部信客票系统设计(一) 里面,探讨了关于数据库层面的功能性需求以及非功能性的需求,在非功能性需求里面,一博主 提出了没有考虑到峰值的情况,这一点的确漏掉了,因为我们铁道部的特殊需求,在春运期间负载很大,平时可能一般,如果用考虑最大的情况,则回存在浪费的情况,如果考虑不足,就像网络订票一样,苦逼。就好比 铁道部春运的时候,发车量大,但是如果制造大量列车,平时就空闲了,也就很亏。机器的折旧很是块的。春运期间可以考虑紧急扩容来实现,所以从设计上可以保持这种扩展性。 扩容是一项工程,整体来说比较复杂 阅读全文
posted @ 2012-09-18 22:25 猫叔玩流量 阅读(17806) 评论(64) 推荐(10) 编辑
摘要: 从刚毕业到目前所在公司,差不多6年了,想想这六年里面,自己的能力和刚毕业比有了很大的提升,但是现在在什么能力上,我不知道,毕竟没有去过别的公司。最近也在思考自己未来,算是比较迷茫阶段。趁最近比较闲,顺便整理一下自己的职业路程刚毕业阶段---工作一年半 刚毕业进入公司,公司的规模还算比较小的,那个时候觉得很开心,过的也比较充实,自己的任务就是写代码,读代码。在那个时候,自己的能力提升的非常快,毕竟在学校里面做的项目完全无法和公司的所在的项目类比。公司有一套自己的框架,在那个时候的我看来,写的非常不错。有很多比较好的编程规范:约定大于配置,强制树状依赖,多工程模型,但是也存在明显的问题,就是大量. 阅读全文
posted @ 2012-09-17 19:06 猫叔玩流量 阅读(10773) 评论(30) 推荐(15) 编辑
摘要: 铁道部新客票系统的设计(一)铁道部新客票系统的设计(二)铁道部新客票系统的设计(三)这几天正好看到一条新闻铁道部:新客票系统2015年建成 ,正好最近想整理和总结一下这几年的工作中的收获,正好可以借这个机会,尝试设计一下铁路客票系统,把自己所学全部用到这个系统中去,顺便也希望各位猿们拍砖,一起探讨一下设计,技术吗,讨论讨论总是有点收获的,总比一个人在那里看书好。非功能性要求废话不说,这里先脱离系统的整体架构,后续在不断完善整体架构,这里首先讨论的是数据库层面的设计,因为对于整个架构系统来说,数据库的设计是最为关键重要的,数据库的设计好与坏,决定了整个系统的性能,可用性,扩展性。在考虑数据库的设 阅读全文
posted @ 2012-09-17 09:20 猫叔玩流量 阅读(31899) 评论(109) 推荐(48) 编辑
摘要: 无意中看到程序员杂志中 关于编程的四个境界,觉得非常有意思,也比较有道理,想想自己也是这么过来的1 无意识无能力(不知道自己不知道这个时候是刚开始接触编程到编程有差不多一年左右的时间,大多数这个时候在大学生涯,年少轻狂,激情四射,学习起来超级有干劲,尤其当自己知道一个个编程法则,写出很自己认为很牛逼的程序,研究过高深的算法,做过几个项目,觉得编程很简单。我当初就是这样的,在大学的时候会用 spring,hibernate,tapestry(貌似这个不是很流行),struts做过两个中型项目,学习过设计模式,部署过ejb,看过soa相关的皮毛知识,觉得自己无敌了,都不知道学习什么了,觉得所有框架 阅读全文
posted @ 2012-09-13 09:17 猫叔玩流量 阅读(10335) 评论(30) 推荐(8) 编辑
摘要: 想想从大学到现在,也用过很多编程语言,比如C,C++,java,javascript,objective c ,php主要编程语言吗,当然是java ,由于自己所在的公司是金融互联网行业,虽然在行业归属上算是互联网行业,但是更偏向软件行业。间接的会用到javascript和php捣鼓自己的网站,目前在开发ios上面的一些产品,用到objective c。由于自己在所在的公司N久没有写过代码了,写java代码的时间也越来越少了,最近重新开始做项目,不知为啥,越来越讨厌java语言了。正如《黑客与画家》里面所描述的,喜欢编程的人的确是不喜欢使用java语言的。为啥,首先java语言的强类型,是静态 阅读全文
posted @ 2012-08-31 08:35 猫叔玩流量 阅读(1001) 评论(0) 推荐(1) 编辑
摘要: 最近和一个朋友在讨论职场的上的一些问题,为什么有些人升的非常快,有些人升的比较慢。有些人同事都非常认同,但是领导不认同,有些人领导认同,但是同事却不认同。在和他聊过之后,有一些事情自己豁然开朗,比较后悔为什么自己没有早一点明白这个道理。1 职场上最重要的就是积极的心态。领导永远喜欢的就是积极的人的,也就是我们常说的比较主动。很多人在职场上,会遇到一些挫折,不想干活,有时候在积极主动一小段时间之后,发现没有结果,就容易放弃。而我的想法就是,要一贯的积极主动。如果你对你自己的工作木有兴趣,实在提不起来精神,就果断的放弃的,找新的环境和事情去挑战。只有积极主动的人,才能够取得成功。也是聪明工作的前提 阅读全文
posted @ 2012-08-31 07:40 猫叔玩流量 阅读(6118) 评论(24) 推荐(22) 编辑
摘要: 今天给自己的macbook装上了公司的apple开发者账号,以前总是用我的机器写代码但因为没有开发者账号不能给真机装也不能在真机上测试,想测试还需要把代码转移到其他机器上,很不方便,刚在网上找到一些方法装上了账号。感觉这个问题还是很普遍的,而且今天就为装这个也费了不少功夫有很多方法都没走成,因此把它总结出来,方便更多人能很快装上~我的情况是这样的,公司有一个开发者账号,我个人的机器上没有装开发者证书,写的程序无法在真机上测试,因此我今天的任务就是在已有开发者账号、证书的基础上给自己电脑装上。我之前是用账号登陆apple developer网站,从网站上下载了公共证书,但最后实验成功的那个帖子上 阅读全文
posted @ 2012-08-04 09:43 猫叔玩流量 阅读(659) 评论(0) 推荐(0) 编辑
摘要: http://www.cocoachina.com/newbie/basic/2012/0105/3835.html原帖地址:http://www.cocoachina.com/bbs/read.php?tid=59387ElementSize (in points)Window (including status bar)320 x 480 ptsStatus Bar(How to hide the status bar)20 ptsView inside window(visible status bar)320 x 460Navigation Bar44 ptsNav BarImage/ 阅读全文
posted @ 2012-08-03 15:41 猫叔玩流量 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 对知识资产的投资总能获得最好的回报 -----本杰明-富兰克林在《程序员修炼知道》里面,提到了知识投资,其实知识投资就是不断学习,提高自己能力的过程而这个能力,就是知识资产的外在表现形式。对知识资产的投资和金融资产的投资有很多地方其实很像,对于金融投资来说,基本原则如下需要持续的投资,周期性的投资需要找有价值的股票进行投资要控制好风险,一般来说,高风险高收益,低风险低收益。需要自己评估风险,来进行组合投资。不能把鸡蛋放在一个笼子里面金融投资的基本原则是低买高卖需要定期的分析和评估自己目前资产而知识投资也很类似,对于一个程序员,对自己的知识投资也有... 阅读全文
posted @ 2012-07-29 16:43 猫叔玩流量 阅读(2607) 评论(6) 推荐(4) 编辑
摘要: 采用面向服务的架构设计的系统,随着服务越来越多, 面向服务的架构也会带来的副作用,会有盲区,也会有雷区副作用:1 业务被分成独立的单元,服务高度的自组织性,每个人只关于自己负责的单元,自己提供的服务和引用其他单元的服务,缺乏对系统整体的了解。而对整体视图了解的人相对决定业务的质量。2 沟通成本比较高,虽然开发可以并行,但是由于沟通的成本,导致效率低下。盲区:从战略目标到最后业务的实现,由于业务分割成多个独立的单元,每个单元的理解程度不一样,导致最后业务偏离整体目标。例如战略目标是100%,不同单元的理解程度为90%,如果有5个单元,目标会有90%*90%*90%*90%*90% = 59%雷区 阅读全文
posted @ 2012-07-27 15:36 猫叔玩流量 阅读(2136) 评论(0) 推荐(0) 编辑
摘要: 随着公司的架构逐步发展,越来越多的问题被提出来,也发现一个良好的技术架构需要考虑的问题1 架构的可扩展性这里面又包括以下几个方面水平垂直可拆分服务无状态数据可缓存可异步处理(提高性能)可复制(提高效率)无单点设计2 架构的可管控性这里面又包括以下几个方面服务可监控性支持服务降级升级故障可隔离(可禁用)发布可回滚3 架构的可测性可测试4 架构的可部署应用程序和数据可分开部署支持多数据中心的支持多异地灾备以上就是一些技术架构需要考虑的问题,可能对于每个点不同的业务,不同的系统要求不一样,但是总体来说,都是作为一个架构师要考虑的。 阅读全文
posted @ 2012-07-20 12:43 猫叔玩流量 阅读(1530) 评论(0) 推荐(0) 编辑