存档

2013年3月 的存档

系统设计 — SOA架构

2013年3月19日 没有评论

从开始进入软件行业,到走到今天,也见识过很多项目,就简单对于系统架构中服务层的设计做个总结吧

阅读全文…

分类: 且行且思, 架构设计 标签: , 2,701 views

面向对象之 — 封装

2013年3月19日 没有评论

概述

面对对象的设计和编码中,经常碰到的一个问题,怎么算是面向对象,这个很虚,也很难去描述,也是自己早年很困惑的东西,虽然看了很多的书,但是很难有一个整体层面的理论去概述,一直很想将这种概念进行落地。
这次就个人经验来来做个总结吧,大致上分为三个层面来进行面向对象的落地。

阅读全文…

分类: java, programing skill 标签: , 1,287 views

cat命令把玩

2013年3月13日 没有评论

工作上对于cat的使用,最多的还是当做查看文件或是日记的命令,例如cat app.log,其实这个并不是cat自身最核心的功能,cat本身的含义就是拼接,不过是被误用为查看比较多,那就先看看它的第一个功能吧。
拼接
生成两个文件

阅读全文…

分类: linux 标签: , 1,278 views

前端优化原则

2013年3月12日 没有评论

内容主要来之雅虎的前端优化原则:http://developer.yahoo.com/performance/rules.html
对于部分内容做了解释,感觉其中的部分原则是相同的,遵循了一种一条,自然就遵循了另一条,例如第一条和第二十条,同时还有一些原则是单纯的优化而优化,大可从整体设计风格和设计原则上考虑,例如第15条。

阅读全文…

分类: performance 标签: , 3,969 views

系统设计 — 缓存

2013年3月2日 没有评论

现在的软件系统设计中,基本上已经很难脱离缓存的去考虑问题,或者已经不能脱离缓存,在不同的层面有不同的缓存,我们现在使用的互联网的一些基础设施也都在使用缓存,那么就先看看缓存的优缺点吧。
优点:
1.提高系统的响应速度,就数据放在离用户最近的地方,让请求直接从缓存中获取数据,而不是每次都需要到服务器进行加载。
2.减少网络带宽压力,在存在大量并发请求的情况下,很多时候网络带宽会成为瓶颈,而从缓存中获取数据能够降低服务端的带宽压力
3.减少服务端的负载压力,一般服务的资源包含CPU,内存,连接数,磁盘等等(网络归属到外部资源中),这些资源是非常有限的,对于一些请求能够通过缓存很好的处理掉,那么就能腾出更多的资源去处理其他更重要的业务
4.在网络失效的情况下,亦能提供一个静态的服务
缓存和无状态约束
WEB的关键架构原则之一就是服务器和服务不应维护应用的状态。这个约束有助于分布式应用的容错和横向扩展。但是缺点也很明显,由于应用的状态不会持久保存在服务商,那么每次请求都需要和服务器交换应用的状态。这个就会增加消息的大小和带宽的消耗(在上章也提到了),缓存也就能很好的解决这个问题,将会话信息保留在离客户端最近的地方。

阅读全文…

分类: 架构设计 标签: , 2,449 views

系统设计 — 会话状态的处理

2013年3月2日 没有评论

对于状态要从两个角度来考虑,一个是对象状态,对象包含了状态(数据)和行为,一个没有状态的对象是不合理的,是种不良设计。
另一种是分布式服务器无状态:指的是在多次请求间不保存对象的状态,但是对象自身是有状态的。服务器端的无状态保证了每次请求不关心是哪个对象来处理,若是需要保存状态,就需要找同一个对象来处理。无状态可以使得我们缓存这些对象,用很少的对象就能处理很多用户。同时在高流量的情况,我们的服务端一般对应的是一个集群,无状态对于集群的横向扩展基本是0代价。无需考虑服务的状态。

阅读全文…

分类: 架构设计 标签: 2,511 views

系统设计 — 并发控制

2013年3月1日 没有评论

并发应该是软件开发中最难处理的问题之一。因为在多进程或是多线程操作一个数据时候,为了保证数据的一致性就必然碰到并发。这个数据可能存在于内存中,也可能存在一个持久化设备中,更复杂的情况是存在于多个数据源中。例如一个订单请求,库存存在于一个数据源中,在库存安全的情况下,去检测用户的金额是否足够,这个是存在于另一个数据源中,在完成两者的检查都满足条件下,去建立一个订单,但是可能在你检查金额的过程中,另一个用户成功下单,并修改了库存信息,而在你检查完金额后,实际库存已经不满足你的下单条件了,但是你还是下单成功了,如此就是并发导致的问题。术语上称之为离线并发。

阅读全文…

分类: 架构设计 标签: 3,140 views