Coder Social home page Coder Social logo

distributed_mq's Introduction

Distributed_mq

这是一个是基于 netty异步通信的 java简易消息队列框架。参看Kafka和相关论坛/博客制作的小项目。主要用于个人学习,深入理解 消息队列的底层实现原理。

项目描述

  • 使用netty4实现异步通信
  • 用concurrentMap实现简单的注册中心
  • 使用Mysql(Redis))实现简单的信息持久化
  • 实现消息timeout 超时处理
  • 实现producer和comsummer心跳检测机制
  • producer生成消息的批量发送
  • 实现producer——broker、broker ——comsummer的负载均衡
  • broker 端实现消息类型鉴别和过滤
  • 实现消息可靠性、comfirm机制
  • 实现消息传输可靠性策略
  • 借助消息key-id实现消息有序性

项目结构

模块 说明
mq-common 公共代码
mq-broker 注册中心
mq-producer 生产者
mq-consumer 消费者

收获

从保研至今已经学习JAVA路线一段时间了。因为打算在本地长期实习 ,所以需要学点前端知识。在学习了JAVASE和数据库等知识后先学习了Web开发。从前端基础到jsp再到Vue框架。期间跟着b站张天禹老师学习了Vue并且做了一个实战项目,通过这个项目更深入了解了Vue框架。在前端学习过程中,个人觉得还是JS最最基础也最难,JS是前端的基础,只有深入了解JS才能做好前端开发。之后我学习了SSM框架,Springboot框架,Docker、Redis、Kafka等中间件。同时跟着视频做了一个秒杀系统。秒杀系统用的到技术栈很复杂,但是全程跟着做下来感觉学到的东西有限,更多的是学会如何使用这些工具,对这些技术没有更深入的理解。消息队列中间件是秒杀系统里的一个重要组成部分,它起到了业务解耦合、异步通信和流量削峰的作用。所以我打算深入理解消息队列的底层原理,自己动手写一个消息对了中间件。在一段时间的开发过程中,我对消息队列的底层原理了解更加深刻了。在自己动手写的过程中,参考了Kafka等消息队列的原理,参考了别人的思路,期间也遇到了很多困难,。通过与其他爱好者的交流,我逐步完成了自己的中间件。但是这个中间件也存在很多为完善的问题。最开始的设想是做一个分布式消息队列中间件。但是在开发过程中遇到了最大的问题就是如何解决分布式数据一致性的问题。有关分布式的理论知识我学习了很多,但是最终自己做起来确感难度太大,于是最终放弃了broker分布式部署的想法。选择另一种保证消息队列可用性的方法进行替代。最终项目大约实现了最初设想的60%,也算是自己的一个动手经历吧。

接下来我打算去本地找一个实习,切身体会一下真是企业开发环境和开发流程!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.