Moja
===================
moja是什么能做什么
-------------
moja是一个支持跨平台,支持高并发,负载均衡,可集群部署的日志队列框架。主要是负责接收日志并将其存储到消费端,比如mongod,hdfs等。支持protobuf和json格式。当前版本是0.9.0
moja的功能实现
-------------------
1.使用Netty来处理消息生产者的socket请求
2.使用Netty的PB模块处理protobuf协议
3.日志消息队列使用多线程消费,当到达警告数量,持久化部分日志到本地,定时扫描本地日志目录,将日志载入到消息队列中
3.存储端可自定义可配置,使用MongoDb可应对实时性的高并发写入需求
4.使用Zookeeper搭建ServerSocket端集群,实现高可用。
5.消息类型可以根据业务类型的不同设置不同的优先级,进行分开的批量化处理。
6.消息队列监控页面通过http请求和html页面实现,监控界面可优雅的关闭日志系统
7.针对PB协议使用自带方法实现高效的消息持久化,针对JSON使用FastJson实现消息持久化
moja如何定制化
-------------
首先moja支持2种日志数据传输格式,Google的protobuf或者JSON。使用protobuf的时候,使用它自带的方法进行日志持久化,如果使用JSON格式传输,使用FastJson进行持久化。
修改log.transfer.type的属性,指定你想要使用的日志格式。
如果使用protobuf,只需要将自己定制好的.proto文件放到proto文件夹下面,然后修改配置文件中的protobuf.class这个属性,修改为自己在protobuf文件中定义java类即可。
系统在启动的时候会自动根据proto文件生成对应的protobuf类。
moja技术演进
-------------
moja这个系统首先需要处理socket端的连接,这个的解决方法是从传统的BIO,到NIO再到Netty一步步演进过来的。
而对于消息队列的处理使用的BlockingQueue,然后加上可配置的线程来消费消息。
而消息队列的持久化,在消息消费失败,或者消息队列快慢的时候需要将消息持久化到本地,等待队列不那么拥挤的时候,将消息载入到队列中。
因为需求不清楚,需要针对绝不可丢消息,可以丢部分消息等都进行支持。所以需要采用不同的方案,而不同的需求采取不同的方案对于整个系统的性能影响也是十分的明显。
moja中没有保证消息的完全不可丢失。
moja待改进
-------------
1.消息队列的监控可能会改用JMX技术实现。
2.想通过一种松耦合的方式实现保证消息的完全不丢失机制
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
moja(熔岩流)是一个跨平台,支持高并发,可集群部署的日志消息队列系统。使用到了Netty,Protobuf,JSON,MongoDB,HDFS,Zookeeper等技术.zip (72个子文件)
demo_01
pom.xml 3KB
src
main
resources
moja.properties 4KB
log4j.properties 3KB
java
com
song
moja
mq
Message.java 1KB
MQConfig.java 1KB
MQConsumer.java 2KB
producer
NettyClient.java 1KB
NettyClientHandler.java 981B
NettyClientInitializer.java 1KB
zk
ZkConfig.java 437B
ServiceConsumer.java 5KB
Client.java 347B
ServiceProvider.java 3KB
ZkConstant.java 315B
ServerTest.java 2KB
ClientSocketTest.java 694B
Server.java 360B
serialize
FastJsonSerializer.java 470B
Serialization.java 606B
protobuf
GenerateProBufClass.java 2KB
LogProbuf.java 21KB
netty
ResultMsg.java 452B
ResultMsgConfig.java 544B
NettyServerHandler.java 3KB
NettyServerInitializer.java 1KB
ProtobufNettyServerInitializer.java 2KB
ProtobufNettyServerHandler.java 3KB
NettyServer.java 2KB
http
RequestFacade.java 4KB
ServletProcessor.java 2KB
Request.java 4KB
Response.java 3KB
HTTPResult.java 1KB
StaticResourceProcessor.java 277B
ResponseFacade.java 2KB
HTTPUtils.java 6KB
MQMonitorInfo.java 6KB
process
DeliverMessage.java 890B
ObjConvertUtil.java 1KB
ProcessData.java 139B
persistent
PersistThread.java 2KB
monitor
MonitorHandler.java 2KB
server
Destination.java 653B
ServerConfig.java 2KB
Authentication.java 1KB
Config.java 215B
PBMQContainer.java 63B
Moja.java 4KB
ThreadManager.java 3KB
Server.java 3KB
MQContainer.java 65B
util
Utils.java 19KB
Closer.java 2KB
SocketUtil.java 3KB
PropertyUtil.java 2KB
Constance.java 629B
FileUtils.java 3KB
log
MailThread.java 525B
CleanLogThread.java 3KB
LogConfig.java 531B
db
MongoUtil.java 192B
SaveAdaptor.java 1KB
HDFSSaveUtil.java 217B
MongoEntity.java 2KB
MongoSaveUtil.java 2KB
Save.java 130B
HDFSUtil.java 10KB
HDFSFileHandler.java 131B
MongoConfig.java 1KB
test
moja
FileUtilsTest.java 235B
proto
log.proto 206B
README.md 3KB
共 72 条
- 1
资源评论
白话机器学习
- 粉丝: 8978
- 资源: 7681
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- MicroMsg.xlsx
- 88-520告白(520气球).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功