微服务实战:百万千万级数据的实时处理架构(一)

         单纯从技术的角度架构项目,抛开网络、硬件,性能、以及数据安全应该是我们最为关注的问题。首先从性能的角度讨论建设日百万甚至千万级的数据处理服务平台。其中各个微服务均采用Java语言开发。

  1. 主要使用的技术:微服务采用Spring Boot架构,消息传递处理采用RabbitMQ,缓存机制采用了Redis,数据持久化用的是MySQL,Nginx负载,以及需要访问SQLServer数据库,搜索引擎Solr,数据展示层Rest API+Mybatis+AngularJS。

  2. 定义微服务边界问题。边界问题应该是微服务难点之一,因为边界问题直接影响模块划分颗粒度的划分,定义不同域模型,最终会影响到整个项目的水平、甚至垂直扩展性问题,如果不合理服务重构的可能性会大幅增加。结合业务特性,项目主要划分接收器服务,派发服务,处理器服务,API服务,客户端服务以及最终展示页面服务。

  3. 分布式,数据库MySQL读写分离、RabbitMQ集群、Solr集群、以及多节点负载。

        Spring boot可以很好的帮助开发人员整合常用的中间件,借助Spring profile加载生成不同配置,对应不同服务的配置参数,服务需要配置不同数据库甚至MQ,目前服务没有引用Spring Cloud做中心配置管理服务,单个务启动需要独立加载服务配置。通常情况RabbitMQ生产者放入队列的速率优于后者,为了提高数据实时处理性能,避免堵塞,数据延迟,采取的措施是设置多个连接,每个链接设置多个线程同时消费,确保ACK处于有效开启状态。考虑到数据量较大,表进行了分区处理。接收器服务用于对外接受消息数据,主要拆分了接受数据模板,分发模块将接受的数据再次扭转给MQ。每个服务对应MQ设置有独立virtualhost,通过RabbitMQ将服务分离,异步处理数据。当派发服务监听到数据将数据派发给处理器服务,经过MQ扭转,处理器最终高效的讲数据最终消化,分别计算出需要给客户端处理的数据放入客户端MQ,实时并发调用第三方接口。通过MQ从数据流层面将各个服务独立拆分,服务之间互不影响,独立做各自特定的业务处理,确保数据实时处理的低延迟。

         欢迎关注本人公众号,随时交流探讨。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值