上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 41 下一页
摘要: 第1章 引言随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取(Read)数据的速度和并发量。目前国内的大型互联网应用中,大量的采用 阅读全文
posted @ 2011-11-02 17:49 ajian005 阅读(166) 评论(0) 推荐(0)
摘要: 呼唤架构设计的多重视图方法灵感一闪,就想出了把大象放进冰箱的办法,这自然好。但希望每个架构设计策略都依靠灵感是不现实的--我们需要系统方法的指导。需要架构设计的多重视图方法,从根本上来说是因为需求种类的复杂性所致。以工程领域的例子开道吧。比如设计一座跨江大桥:我们会考虑"连接南北的公路交通"这个"功能需求",从而初步设计出理想化的桥墩支撑的公路桥方案;然后还要考虑造桥要面临的"约束条件",这个约束条件可能是"不能影响万吨轮从桥下通过",于是细化设计方案,规定桥墩的高度和桥墩之间的间距;另外还要顾及"大桥的 阅读全文
posted @ 2011-11-01 14:18 ajian005 阅读(189) 评论(0) 推荐(0)
摘要: 程调试对应用程序开发十分有用。例如,为不能托管开发平台的低端机器开发程序,或在专用的机器上(比如服务不能中断的 Web 服务器)调试程序。其他情况包括:运行在内存小或 CUP 性能低的设备上的 Java 应用程序(比如移动设备),或者开发人员想要将应用程序和开发环境分开,等等。先决条件启动配置类型启动配置 保存一组用于启动程序的属性。启动配置类型是一种可以在 Eclipse 平台上启动的独特程序。如果您还没安装该程序,请下载 Eclipse V3.4(Ganymede)。在 Ganymede 中,套接字(socket)监听连接器被添加到 Remote Java Application 启动配置 阅读全文
posted @ 2011-09-29 17:45 ajian005 阅读(328) 评论(0) 推荐(0)
摘要: 架构师的启蒙战歌下面几个What的问题是架构师的入门Question。1.什么是架构? 如果自问自答,这是个相当鸡肋的问题。看看书里的答案可能有点收获。 架构定义了系统元素的结构与行为,关注最重要的元素,记录决策原理,受涉众利益与环境的影响。架构不仅是结构,也不是企业架构,系统架构,信息架构,硬件架构..... 架构设计也不是面向对象分析/设计,虽然架构设计基于面向对象设计,但补充了面向对象设计里没有关注的视点。2.架构有什么用途? 人类所有行为都是目的驱动的,不同目的下架构的过程也会不同,继续看书里的答案,经常的用途有:培训与沟通 满足系统的质量属性,与涉众沟通达成一致的目标 有效管理复杂性 阅读全文
posted @ 2011-09-27 17:31 ajian005 阅读(299) 评论(0) 推荐(0)
摘要: 原文: http://terrylee.me/blog/post/2010/09/25/garbage-collection-and-performance-part1.aspx垃圾回收系列(1):没有GC,世界将会怎样最近在公司内部做了一次关于垃圾回收的讲座,我打算用几篇文章把讲座的内容整理出来,供大家参考。在开始之前,我们有必要稍微复习一下内存分配的主要方式,大多数主流语言都支持三种内存分配方式:1. 静态分配:静态变量和全局变量的分配形式 2. 自动分配:在栈中为局部变量分配内存的方法 3. 动态分配:在堆中动态分配内存空间以存储数据的方式如何管理堆对象的生命周期,正是我们要探讨的话题。 阅读全文
posted @ 2011-09-26 17:19 ajian005 阅读(244) 评论(0) 推荐(0)
摘要: 一、首先是struts的jar包Struts1.2包介绍: commons-digester.jarDigester基于规则的XML文档解析,主要用于XML到Java对象的映射(用来处理struts-config.xml配置文件,以达到通过XML生成相应的对象的功能)。 commons-beanutils.jar 提供对Java反射和自省API的包装。 struts的验证框架依赖以下的两个包 commons-validator.jar(校验方法)和校验规则,支持校验规则的和错误消息的国际化。struts使用它对表单进行验证。 jakarta-oro.jar一套文本处理工具,能提供pe... 阅读全文
posted @ 2011-09-24 18:13 ajian005 阅读(256) 评论(0) 推荐(0)
摘要: 池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能。要了解Java连接池我们先要了解数据库连接池(connection pool)的原理,Java连接池正是数据库连接池在Java上的应用。——我们知道 阅读全文
posted @ 2011-09-23 14:21 ajian005 阅读(309) 评论(0) 推荐(0)
摘要: 分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如naming service、分布式lock等,这些分布式的基础服务有以下要求:高可用性高一致性高性能对于这种有些挑战CAP原则的服务该如何设计,是一个挑战,也是一个不错的研究课题,Apache的ZooKeeper也许给了我们一个不错的答案。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它暴露了一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。关于ZooKeeper更多信息可以参见官方文档ZooKeepe 阅读全文
posted @ 2011-09-18 19:51 ajian005 阅读(241) 评论(0) 推荐(0)
摘要: 分布式设计与开发中有些疑难问题必须借助一些算法才能解决,比如分布式环境一致性问题,感觉以下分布式算法是必须了解的(随着学习深入有待添加):Paxos算法一致性Hash算法Paxos算法1)问题描述分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各个服务端节点是互为同步数据的,所以运行完客户端这系列消息指令后各服务端节点的数据应该是一致的,但由于网络或其他原因,各个服务端节点接收到消息的序列可能不一致,最后导致各节点的数据不一致。举一个实例来说明这个问题,下面是客户端与服务端的结构图:当client1、client2、client3分别发出消 阅读全文
posted @ 2011-09-18 19:50 ajian005 阅读(156) 评论(0) 推荐(0)
摘要: 在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上早已悄悄地成为了时代的主流,吵得很热的云计算实际上只是包装在分布式之外的商业概念,很多开发者(包括我)都想加入研究云计算这个潮流,在google上通过“云计算”这个关键词来查询资料,查到的都是些概念性或商业性的宣传资料,其实真正需要深入的还是那个早以被人熟知的概念------分布式。分布式可繁也可以简,最简单的分布式就是 阅读全文
posted @ 2011-09-18 19:49 ajian005 阅读(128) 评论(0) 推荐(0)
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 41 下一页