Jedis Sharding实现

随着业务的发展,当Redis单实例无法满足需求时,无可避免的要采用Redis集群方案。

目前普遍采用的Redis集群方案有:

  • 客户端做Sharding;
  • twenproxy;
  • redis cluster

Jedis sharding实现逻辑:https://github.com/jjmatrix/doraemon/tree/v2.1.0/doraemon-cache/src/main/java/org/jmatrix/cache/redis

 

如果未说[......]

Read more

Posted in Redis | Leave a comment

Tomcat源码走读——session管理(续)

2. session创建、过时处理等

public Session createSession(String sessionId ) {

        if ((maxActiveSessions >= 0) &&
                (getActiveSessions() >= maxActiveSessions)) {
            rejectedSessions++;[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Tomcat扩展——监控

最近心血来潮,想是否可以通过增加一个tomcat的扩展,来持续收集tomcat服务器本身的性能信息,如线程池的各项数据,请求数等等,这样可以配合业务方面的监控,可以更方便的分析调整tomcat配置,以提供更好的服务。

 

这样也不需要每次通过连接jmx去观察数据,而且idc环境要开启jmx,还得涉及各种安全问题…….

 

Tomcat manager中StatusManagerServlet就是通过JMX提供了Tomcat服务的当前状态信息。我[......]

Read more

Posted in J2EE, 读书笔记 | Tagged | Leave a comment

druid:保存监控记录

druid的datasource会记录下关于连接池各种信息,包括活动连接、已关闭连接、历史连接数,连接池的总连接数等等,同时支持将这些监控信息保存下来。

 

这个功能通过datasource的DruidDataSourceStatLogger实例statLogger来支持,DruidDataSource初始化的时候会创建一个LogStatsThread线程,这个线程每隔一定的时间就会将监控信息保存到特定位置,具体保存到哪里由statLogger决定,当然,如果需要我们可以自[......]

Read more

Posted in J2EE | Tagged | Leave a comment

druid:简单配置

druid的基本配置很简单,如果是从dbcp换成druid,基本上只需要更换class为druid的数据源,因为druid基本保持了dbcp一样的配置属性。

 

一个基本的dbcp数据池配置如:

<bean id= "dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
           <property name= "[......]

Read more

Posted in J2EE | Tagged | Leave a comment

druid:为什么使用这个数据库连接池?

druid是淘宝的一个开源项目,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。

 

对于是不是Java最好就不讨论了,但我看中它的监控和扩展功能,确实很好,也比较契合目前项目的需要,之前的项目中包括连接池泄露的监控,慢速sql语句统计等功能都是通过单独写程序来完成的,sql的监控更是要先用asm去拦截所有数据库操作,log出来,再统计是不是慢速等等情况。这样做使得整个监控功能散落各处,不好维护,也无法形成体系。

 

我想要这里的[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Tomcat的timeout机制

今天在stackoverflow看帖子,无意看到有个Tomcat timeout的问题。说到timeout机制,一般立马想到Tomcat连接配置中的connectionTimeout=”***”,但是这里的超时只是连接的超时时间,还有一个请求处理的时间,也即如果请求的处理时间太久,想直接终止请求。

 

对这种情况,貌似Tomcat并没有提供太好的机制?也可能有,是我不了解,知道的求告知。

 

如果说可以设置session的超时时间,那我认为这应该算是s[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Spring自定义Schema之具体实现过程

在Spring容器初始化的过程中,将Bean定义解析的任务交给了XmlBeanDefinitionReader,通过查看XmlBeanDefinitionReader加载Bean定义的过程即可知道Spring是如何处理自定义Schema。

 

在loadBeanDefinitions函数中:

public int loadBeanDefinitions(EncodedResource encodedResource ) throws BeanDefinitionStore[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Log4j2使用:一些与1.x版本不一样的地方

1. 在web中的使用

如果你曾经在使用了spring的web工程中使用了log4j 1.x版本,更新到2以后,web.xml的配置需要做一些改变。log4j2直接提供了log4j-web包支持web应用,只需配置好一个Listener和Filter即可,也即:

 

Log4jServletContextListener与Log4jServletFilter,Listener负责log4j的初始化, Filter则是负责请求前后LogContext的设置与清理,至于初[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Tomcat Manager提供的管理功能一窥

Tomcat的manager包中有几个Servlet为用户提供一些相关的管理功能,也即Tomcat的webapps下的manager项目。

 

<1> ManagerServlet

ManagerServlet提供的主要是项目deploy,undeploy,reload等相关功能

 

实现原理:

ManagerServlet实现了ContainerServlet接口,而Tomcat容器会调用所有ContainerServlet实[......]

Read more

Posted in J2EE | Tagged | Leave a comment
« Older