JavaWeb项目架构之Redis分布式

能治愈白癜风的医院 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824

云栖君导读:架构、分布式、日志队列,在作者看来就是一个日志收集的功能,只不过中间加了一个Redis做消息队列。

为什么需要消息队列?

当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。

比如我们系统中常见的邮件、短信发送,把这些不需要及时响应的功能写入队列,异步处理请求,减少响应时间。

如何实现?

成熟的JMS消息队列中间件产品市面上有很多,但是基于目前项目的架构以及部署情况,我们采用Redis做消息队列。

为什么用Redis?

Redis中list数据结构,具有“双端队列”的特性,同时redis具有持久数据的能力,因此redis实现分布式队列是非常安全可靠的。

它类似于JMS中的“Queue”,只不过功能和可靠性(事务性)并没有JMS严格。Redis本身的高性能和"便捷的"分布式设计(replicas,sharding),可以为实现"分布式队列"提供了良好的基础。

提供者端

项目采用第三方redis插件spring-data-redis,不清楚如何使用的请自行谷歌或者百度。

redis.properties:

redis配置:

切面日志配置(伪代码):

消费者端

Redis配置:

监听接口:

监听实现:

QA

为什么使用Redis?

上面其实已经有做说明,尽管市面上有许多很稳定的产品,比如可能大家会想到的Kafka、RabbitMQ以及RocketMQ。但是由于项目本身使用了Redis做分布式缓存,基于省事可行的原则就选定了Redis。

日志数据如何存储?

原则上是不建议存储到关系数据库的,比如MySql,毕竟产生的日志数量是巨大的,建议存储到Elasticsearch等非关系型数据库。

切面日志收集是如何实现的?

切面日志需要引入spring-aspects相关Jar包,并且配置使Spring采用CGLIB代理。

更多精彩

数据科学、机器学习和AI的区别

人工智能最受欢迎的10大TED演讲

每个数据科学家都应该学习4个必备技能

阿里云云数据库开了一个未来大会,谈了谈年的数据库趋势

助力APP尽情“撒币”!阿里云正式上线移动直播问答解决方案

-END-

云栖社区

ID:yunqiinsight

云计算丨互联网架构丨大数据丨机器学习丨运维

点击阅读博主更多好文!预览时标签不可点


转载请注明:http://www.guyukameng.com/php/php/11434.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了