`
redhacker
  • 浏览: 495916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于socket分布式日志系统的设计与实现

阅读更多
一、约定

1、本文中分布式的每个应用都是java web应用;
2、本文所描述的分布式是指一个企业中的多个应用,这些应用在源码包结构前缀都为com.je;
3、本文所以F、M两个应用为例进行阐述。例如:F应用a模块的源码包为com.je.fa,b模块的源码包为com.je.fb。


二、摘要

在企业信息化建设中,通常出现多个应用系统位于不同的应用服务器,甚至于不同的物理主机,这就为我们管理和监控这些应用程序带来了难度。在企业应用监控的手段中,日志审计是一个很有效的办法,它是将应用系统运行期的状态及异常记录的日志里,通过一些辅助工具,去分析,审计。对于日志存储的形式可以多种多样,通常以文本的形式存储居多。本文主要阐述如何通过apache log4j这个组件来实现位于多台不通应用服务器和物理主机的多个应用系统的日志收集功能,我把这个具有分布式收集日志功能的系统称之为JELog4j(JE代表javaedu.com)。


三、需求

1、JELog4j要能够收集位于不同应用服务器,甚至不同主机上应用程序的日志;
2、JELog4j所产生的日志中应包含应用服务器的名称(主要是获取weblogic server的名称,为了简单期间以下用tomcat为例)、系统别,系统当前使用人这三个关键信息;
3、JELog4j要能够提供邮件发送与FTP下载两种日志查阅方式;
4、JELog4j要能够满足高并发,高性能的日志记录请求。

四、需求分析

从上述需求上看,前三个需求是功能性需求,最后一个是非功能性需求。

对于需求1,由于要实现分布式收集日志的功能,我将采用socket网络通信方式来实现分布式日志收集,通过查看log4j自身的代码,其实这部分功能它已经实现,我这次的实现是将其实现进行重新设计,使得它变得更加易用和可管理,其中也会参考原有socket server的实现源码。

对于需求2,实际上我已经在“客户化Apahce log4j日志信息”这边博客里做了说明,这里的设计跟它是一样的。

对于需求3,log4j本身就提供发送邮件的功能,也不需要进行设计开发,对于FTP,仅仅是对外提供服务,只需要搭建一个FTP服务器就好了。

对于需求4,主要是对log socket server的实现时,采用了线程池的方式,提高服务器端接受客户端请求的并发效率。

五、系统设计

1、逻辑架构图:



2、日志存储结构图:



3、程序设计类图:



Note:
1、AdminServer类是Server类的帮助类,它是整个JELog4j Server的入口类,通过它可以从外部脚本传递一个参数,用户使得Server启动或停止;
2、Server类是JELog4j Server的核心类,它实现了一个server生命周期的两个阶段:服务监听、停止服务;
3、SocketNode类是从线程池中创建出用于处理记录日志和反向通过消息管理Server类的功能;
4、HierarchyFactory类是用来获取不同系统日志配置文件,通过不同的配置文件,实现不同的日志记录方式。

4、JELog4j软件包结构设计

D:\WORKSPACE\WORK\JELOG4J
├─.settings
├─bin                             (启动停止脚本)
├─cls                              (myeclipse编译目录)
├─config                         (服务器端配置文件)
├─lib                              (依赖包)
├─sample                        (客户端示例程序,myeclipse工程)
└─src
    └─com
        └─je
            └─log4j
                ├─client           (client API源码)
                └─server         (server实现程序)

六、系统实现

见源代码,用myeclipse打开。

程序本身比较简单,这里就不做过多介绍,希望大家给出宝贵意见,本想将源码放到google code,想想这么简单的程序还是罢了。

七、部署

1、将JELog4j解压到磁盘目录(如:D:\WORKSPACE\WORK\),修改bin目录下每个脚本的install_home变量为JELog4j真实的目录。
2、双击startServer.bat,如果看到如下字样,说明服务器启动成功!
引用
2011-07-08 08:41:12 - Listening on port 9999
2011-07-08 08:41:12 - Waiting to accept a new client.


八、测试

Note:
a.未使用weblogic测试,感兴趣的同学可以在weblogic 下测试,这样可以在日志里打印出server的名称;
b.未配置标准J2EE登录,如果配置了后,登录可以取到用户名,并显示在日志中;

1、将%tomcat_home%/conf/server.xml的<host>标签中加入如下内容 :
引用
<Context path="/test" docBase="D:\workspace\work\fapp\WebRoot" debug="0" reloadable="false" />


2、使用%tomcat_home%/bin/startup.bat启动tomcat.

3、在浏览器中输入:http://localhost:8888/test/servlet/TestServlet(如果你的tomcat工作在8888端口话),即可访问sample的servlet,当浏览器中显示如下字样时,说明示例程序运行成功。

引用
This is fapp application servlet test!


4、在c:\\logs里查看日志信息(可以在D:\WORKSPACE\WORK\JELog4j\config的配置文件中修改日志输出的位置,注意:每个系统都有一个lcf文件,例如,如果是M系统,则需要创建类似的配置文件m.lcf)

九、结束语

感谢你耐心的读到这里,若有什么宝贵意见,或程序改进意见,请与我联系,欢迎砖拍

如果您觉得本文对您有益,请点击博文后的google广告,对作者表示支持,谢谢!
  • 大小: 145.6 KB
  • 大小: 12.6 KB
  • 大小: 16.7 KB
3
3
分享到:
评论
3 楼 hquxiezk 2011-07-08  
麻烦也发一份给我86963211@qq.com
2 楼 shenjie8821 2011-07-08  
挺不错的。我想看一下您的代码,可以给我留一份吗?shenjie20080808@yahoo.cn,谢谢哦!
1 楼 hquxiezk 2011-07-08  
请问源代码在哪里呢

相关推荐

    基于Python内建库的分布式日志系统设计与实现.pdf

    通过上述内容,可以清楚地了解基于Python内建库的分布式日志系统的设计与实现,以及该系统在自动化运维领域中的应用价值和实施细节。这个系统不仅为运维人员提供了强有力的工具,也展示了Python在复杂系统设计中的...

    基于Python内建库的分布式日志系统设计与实现.zip

    综上所述,基于Python内建库的分布式日志系统设计与实现涉及网络通信、数据序列化、日志记录、数据存储、日志检索等多个方面。通过巧妙地组合和应用这些库,我们可以构建出高效、可靠的分布式日志系统,满足大规模...

    分布式即时通信系统的设计与实现.pdf

    分布式即时通信系统的实现涉及的技术选型和架构设计都十分复杂,它要求开发者不仅要熟练掌握网络编程、多线程处理、分布式存储和计算,还应该对系统架构有深入的理解。通过对分布式即时通信系统的详细设计和实现,...

    Java整合ChickHouse的分布式日志收集与检索系统源码.zip

    Java整合ChickHouse的分布式日志收集与检索系统是一套基于Java开发的高效、可靠的解决方案,用于处理大规模分布式环境下的日志数据。这套系统的核心目标是实现日志的实时收集、传输、存储以及检索,帮助开发者更好地...

    毕业设计:基于python的分布式监控系统项.zip

    【毕业设计:基于Python的分布式监控系统项目】 在信息技术领域,毕业设计是学生们展示技能、理解和应用所学知识的重要环节。本项目“基于Python的分布式监控系统”旨在提供一个全面的解决方案,用于实时监控分布式...

    基于Java的分布式移动信息系统设计.zip

    分布式移动信息系统设计是一种复杂的技术架构,它涉及到多个设备和服务器之间的数据同步与通信,以提供高效、可扩展的服务。在本项目中,我们主要关注的是使用Java语言来实现这样的系统。Java因其跨平台的特性,丰富...

    基于Python的分布式文件共享系统的实现.zip

    在基于Python的分布式文件共享系统实现中,通常会涉及以下几个关键技术点: 1. **网络通信**:Python的`socket`库是实现网络通信的基础,它提供了创建套接字并进行数据传输的能力。`asyncio`库则用于实现异步非阻塞...

    Python分布式文件系统源码.zip

    在深入学习这个Python分布式文件系统的源码时,你需要理解上述各个模块的设计和实现,熟悉分布式系统的基本原理,如CAP理论、Paxos协议、Chubby锁服务等。此外,对Python编程、网络编程、并发控制和数据存储等相关...

    基于分布式数据库的房产中介管理系统

    【基于分布式数据库的房产中介管理系统】是一个复杂的IT项目,它采用了先进的分布式数据库技术来构建一个高效、可扩展的房产信息管理平台。系统的核心是通过Socket通信实现不同站点间的交互,确保了数据的实时性和...

    Python-Python中的分布式异步socket架构

    Python中的分布式异步socket架构是实现高性能网络服务的关键技术之一,尤其在处理大规模并发连接和数据传输时。本文将深入探讨这一主题,帮助你理解如何利用Python构建这样的系统。 首先,我们来了解一下什么是...

    大型分布式系统java应用

    本文将深入探讨大型分布式系统中的Java应用,包括其核心概念、技术框架以及实现策略。 首先,我们要理解什么是分布式系统。分布式系统是由多台独立的计算机通过网络进行通信和协作,共同完成一个任务的系统。这些...

    分布式高速喷墨数字印刷系统软件设计.pdf

    首先简要介绍了高速喷墨数字印刷在当今印刷业中的重要性,然后详细描述了分布式系统在提升喷墨印刷速度方面的作用,接着详细阐述了分布式系统设计的各个部分,包括系统的整体框架、各个模块的设计以及主要实现技术。...

    计算机课程毕设:基于Spark的行为日志分析系统设计与实现.zip

    《基于Spark的行为日志分析系统设计与实现》 在当今大数据时代,行为日志分析已经成为企业和组织理解用户行为、优化产品和服务的重要手段。本项目旨在通过Spark技术构建一个高效、可扩展的日志分析系统,为各类场景...

    基于JAVA的网络通讯系统设计与实现.zip

    【标题】"基于JAVA的网络通讯系统设计与实现"揭示了这个项目的核心是利用Java编程语言来构建一个网络通信系统。在IT行业中,Java因其跨平台性、丰富的库支持和强大的网络功能,常被用于开发分布式系统和网络应用。...

    基于JAVA的聊天系统的设计与实现 全套毕业设计

    总而言之,这个基于JAVA的聊天系统设计与实现涵盖了JAVA编程、数据库管理(Hibernate)、网络通信(Socket)、软件架构(MVC、DAO)等多个重要知识点,对于深化理解JAVA开发和构建分布式系统有着极高的学习价值。...

    Python语言的分布式共享系统的设计分析.zip

    在Python编程领域,分布式共享系统的设计与分析是一个重要的主题,尤其在大数据处理、云计算和高并发应用中。本文将深入探讨Python如何实现这样的系统,并分析其核心概念和技术。 分布式共享系统通常涉及到多个节点...

    Logstash实践分布式系统的日志监控Java开发Jav

    本实践主要围绕Java开发环境,通过Logstash实现对分布式系统日志的高效监控。 【描述】"Logstash实践分布式系统的日志监控Java开发Java经验技巧共10页.pdf.zip" 提供了一个详细的指南,涵盖了如何在Java开发环境中...

    基于socket协议的DDos入侵检测系统

    【基于Socket协议的DDoS入侵检测系统】 DDoS(Distributed Denial of Service)分布式拒绝服务攻击是一种网络攻击方式,通过大量恶意流量淹没目标服务器,使其无法正常处理合法用户的请求,从而导致服务中断。面对...

    精选_基于JAVA和TCP SOCKET实现的P2P的局域网即时通信系统_源码打包

    标题中的“精选_基于JAVA和TCP SOCKET实现的P2P的局域网即时通信系统_源码打包”表明这是一个使用Java编程语言,并依赖TCP套接字(Socket)技术开发的P2P(对等网络)局域网即时通信系统。这个系统允许在局域网内的...

Global site tag (gtag.js) - Google Analytics