`
jiagyao
  • 浏览: 95868 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
文章列表
集群安装      为了在TOMCAT5容器中SESSION复制可用,必须完成以下步骤:      ●    为了集群能够工作,你必须使用你系统上的多点传送可使用   ●    为了有些使用SESSION复制,所有TOMCAT例程必须同样配置。这意味着WEB应用程序必须统一的部署在集群中的每台服务器上。这些配置同样简化了集群管理,维护和发现维修故障的任务。   ●    在server.xml未注释的Cluster 和Valve (ReplicationValve) 元素。起用server.xm中的CLUSTER元素意味着所有WEB CONTEXT的SESSION管理器将会改变。因此 当运行一个 ...
Tomcat 5服务器为集群和SESSION复制提供了集成的支持。本系列的第一篇文章将为大家提供SESSION持久性以及TOMCAT集群中SESSION复制的内在工作机制一个概要认识。我将会讨论SESSION复制在TOMCAT5中是怎样进行的以及跨越多集群节点的SESSION持久性的复制机制。在第2部分,我会详细讨论一个带有SESSION复制功能的TOMCAT集群的安装例子,并且比较不同的复制情形。      集群      传统独立服务器(非集群的)不提供任何失效无缝转移以及负载平衡能力。当服务器失败的时候,就无法获取整个网站的内容,除非服务器被重新唤起。由于服务器失效,任何存储在服务器内存中 ...
一 安装 1.  下载mysql-5.1.40源码 2.  编译 #配制 Shell> ./configure --prefix=/vogins/lib/mysql --with-charset=utf8 --with-mysqld-user=mysql --with-plugins=max --prefix : 主安装目录 --with-charset : 数据库默认编码 --with-mysqld-user : 指定运行mysqld 精灵进程的用户 --with-plugins : 支持的数据引擎插件 #编译 Shell> make #安装 Shell& ...
一个完整的mysql读写分离环境包括以下几个部分: 应用程序client database proxy database集群 在本次实战中,应用程序client基于c3p0连接后端的database proxy。database proxy负责管理client实际访问database的路由策略,采用开源框架amoeba。database集群采用mysql的master-slave的replication方案。整个环境的结构图如下所示: 实战步骤与详解 一.搭建mysql的master-slave环境 1)分别在host1(10.20.147.110)和host2(10.20 ...
总是想要证明自己时,就没有了投入工作的心态 你感觉不舒服的时候,就是成长的时候 自得其乐是一种能力 不要太把自己当回事,也别把自己太当回事 与其怕失败,不如狠狠地失败一回 不要总认为自己比别人聪明 心中无 ...
原则大于个人口味 很多架构师都有着丰富的经验和个人风格,以至于在平常工作中常以个人口味作为决策的依据,对于普通的开发人员也许是可行的,我们鼓励大家有个人特色,但架构师更应该依据原则办事,需要维护和遵守 ...
让开发人员自己做主 架构师虽然需要为系统的设计负责,但无须包揽所有的设计工作,应该给予团队成员足够的自主权,让他们发挥自己的创意和能力,你的工作是确保大家的工作能很好的组合在一起,帮助他人解决棘手困难 ...
先确保解决方案简单可用,再考虑通用性和复用性 系统的复杂性往往是架构师基于通用性和复用性的设计而引入的,很多具体问题往往不需要通用性和复用性的解决方案。如果存在多个可实施方案难以取舍,先简单后通用原则可以成为最终的评判标准。架构师提供具体解决方案时,无需排斥通用和灵活,但是如果过早脱离具体情况,只会迷失在无限的可能性里,被复杂的配置选项、超负荷的参数列表、冗长罗嗦的接口,以及存在缺陷的抽象所淹没。先简单满足需求,当重复需求再次发生时,通过重构来达到复用是一种不错的方式 架构师应该亲力亲为 架构师干久了往往会脱离技术本身,迷茫在抽象之中,这是很危险可怕的。架构师要取得其他同事的信任,应该 ...
最近看了一本书《软件架构师应该知道的97件事》,本来并没对它抱有太多期望和兴趣,毕竟这种讲大道理的书不可能带来什么实际收获,但看的过程中被里面中肯实在的建议给吸引,对于我这种在走向架构师这条路上常常迷失 ...
数据库设计:良好的数据库设计是优化代码的条件,是数据库优化的标准,设计比优化更重要.     主要分为四个部分:     #1#:数据库设计过程 :        第一步:要分析用户的应用需求.              第二步:根据用户需求,写出数据字典:它是关于数据库中数据的描述,即元数据,不是元数据本身.              第三步:对用户的需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型.                  也就是根据数据字典去画E-R<Entity-Relation>图.                      第四 ...
Spring在schedule这块支持JDK Timer、concurrent、quartz三种,这三种任务调度方案在实现机制和调用方法上都不同,但spring通过对其包装,使得基于spring能用统一的配置和编码风格来使用这三种schedule方案。 总得来说这三种schedule都是基于scheduler->trigger->job的基本流程,因此spring通过TimerFactoryBean、ScheduledExecutorFactoryBean和SchedulerFactoryBean分别实现JDK Timer、concurrent和quartz的基本流程。主要逻辑如下 ...
Quartz是运用最广的任务调度框架,它最核心的组成部分是Scheduler、Trigger、JobDetail,然后给Scheduler配置个线程QuartzSchedulerThread,此线程在Scheduler初始化时启动,等待Scheduler start,然后从JobStore里拿到最近要触发的Trigger,以线程等待的方式等到trigger触发时间点,之后就是执行trigger所关联的JobDetail,最后清扫战场。Scheduler初始化、start和trigger执行的时序图如下所示: 其中,最核心的地方是QuartzSchedulerThread运行机制。下面解析 ...
从Tomcat源码分析(二)可知,用户的一个请求会经过n个环节的处理,最后到达开发人员写的Servlet,传给Servlet也就是HttpServletRequest和HttpServletResponse,因此可以认为这一路走下来无非就是把最原始的Socket包装成Servlet里用到的HttpServletRequest和HttpServletResponse,只不过每个环节完成的包装功能和部分不一样而已,信息流如下图所示: 其中,Request与Response的类图如下所示: org.apache.coyote.Request和org.apache.coyote.Respon ...
最近想实现一个可携带状态的线程池,具体需求就是池中的线程被用来处理某种信息,而此信息可视为线程所依赖的外部状态。如果用简单的线程池来实现,线程初始化时就得赋予某些信息,使得线程无法被再次利用。在看老版Tomcat的源码时,找到了答案,其实现思路主要是利用了线程的等待和唤起,HttpProcessor的实现正好基于此思路,时序图如下所示: 初始化HttpProcessor线程时,没法赋予所需的Socket对象,因为如果在初始化阶段就赋予Socket会导致此线程没法回收用来处理其他Socket。因此,在HttpProcessor的run阶段,先把线程给wait住,具体在await方法里体现,代 ...
前几天分析了一下Tomcat的架构和启动过程,今天开始研究它的运转机制。Tomcat最本质就是个能运行JSP/Servlet的Web服务器 ,因此最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完后,把结果返回给客户端。今天就专门解析一下这么一个完整的请求的内部机理。 通过DEBUG,一路跟下来,发现Tomcat处理请求的核心过程是以下几点: 启动的时候启动预支持协议的Endpoint,Endpoint会起专门的线程监听相应协议的请求,默认的情况下,会启动JIoEndpoint,JIoEndpoint基于Java ServerSoc ...
Global site tag (gtag.js) - Google Analytics