消息中间件
流浪的山人
这个作者很懒,什么都没留下…
展开
-
架构设计:系统间通信(29)——Kafka及场景应用(中2)
4-3、复制功能我们在上文中已经讨论了Kafka使用分区的概念存储消息,一个topic可以有多个分区它们分布在整个Kafka集群的多个Broker服务节点中,并且一条消息只会按照消息生产者的要求进入topic的某一个分区。那么问题来了:如果某个分区中的消息在被消费端Pull之前,承载该分区的Broker服务节点就因为各种异常原因崩溃了,那么在这个Broker重新启动前,消费者就无法收到消息了。转载 2018-01-22 10:53:10 · 159 阅读 · 0 评论 -
架构设计:系统间通信(44)——自己动手设计ESB(5)
接上文《架构设计:系统间通信(43)——自己动手设计ESB(4)》)5-4、ESB-Client端的ActiveBrokerContext本小节开始,我们将按照前文介绍的ESB-Client的核心步骤,一点一点的给出ESB-Client端和ESB-Broker进行交互的核心代码。为了方便在ESB-Client端进行ESB-Broker的交互,我们设计了一个ActiveBrokerConte转载 2018-01-25 13:20:17 · 192 阅读 · 0 评论 -
架构设计:系统间通信(43)——自己动手设计ESB(4)
============================== 接上文《架构设计:系统间通信(42)——自己动手设计ESB(3)》5、Borker Server选择在本文之前的三篇文章中,我们介绍了自行设计的ESB中间件的顶层设计、介绍了主控服务如何对多个ESB-Brokers动态节点进行日志采集和监控、还介绍了ESB-Broker节点如何进行动态路由定义的加载管理。这篇文章我们主要讨论转载 2018-01-25 13:19:24 · 199 阅读 · 0 评论 -
架构设计:系统间通信(42)——自己动手设计ESB(3)
==================================================== (接上文《架构设计:系统间通信(41)——自己动手设计ESB(2)》)4-2-3、业务层与Class文件管理zookeeper控制模块的业务相关层(封装层),负责根据Apache Curator层分析好的事件类型、Path Node名称信息、Path Node内容信息,进行Clas转载 2018-01-25 11:35:48 · 216 阅读 · 0 评论 -
架构设计:系统间通信(41)——自己动手设计ESB(2)
==================================== (接上文《架构设计:系统间通信(40)——自己动手设计ESB(1)》)4、Broker Server设计那么如何赋予ESB中间件原子服务整合、服务路由编排的关键能力呢?读者当然可以自行实现ESB中间件中这两个关键模块的功能,但问题的关键是即使是一个团队负责这部分的开发工作也不可能在短时间内完成该模块的开发,而且功转载 2018-01-23 11:33:22 · 324 阅读 · 0 评论 -
架构设计:系统间通信(40)——自己动手设计ESB(1)
1、概述在我开始构思这几篇关于“自己动手设计ESB中间件”的文章时,曾有好几次动过放弃的念头。原因倒不是因为对冗长的文章产生了惰性,而是ESB中所涉及到的技术知识和需要突破的设计难点实在是比较多,再冗长的几篇博文甚至无法对它们全部进行概述,另外如果在思路上稍微有一点差池就会误导读者。一个可以稳定使用的ESB中间件凝聚了一个团队很多参与者的心血,一个人肯定是无法完成这些工作的。但是笔者思索再三,转载 2018-01-23 11:25:54 · 275 阅读 · 0 评论 -
架构设计:系统间通信(39)——Apache Camel快速入门(下2)
======================== (接上文:《架构设计:系统间通信(38)——Apache Camel快速入门(下1)》)4-2-1、LifecycleStrategyLifecycleStrategy接口按照字面的理解是一个关于Camel中元素生命周期的规则管理器,但实际上LifecycleStrategy接口的定义更确切的应该被描述成一个监听器:当Camel转载 2018-01-23 11:24:27 · 225 阅读 · 0 评论 -
架构设计:系统间通信(38)——Apache Camel快速入门(下1)
======================= (接上文《架构设计:系统间通信(37)——Apache Camel快速入门(中)》)3-5-2-3循环动态路由 Dynamic Router动态循环路由的特点是开发人员可以通过条件表达式等方式,动态决定下一个路由位置。在下一路由位置处理完成后Exchange将被重新返回到路由判断点,并由动态循环路由再次做出新路径的判断。如此循环执行直到动转载 2018-01-23 11:22:42 · 266 阅读 · 0 评论 -
架构设计:系统间通信(37)——Apache Camel快速入门(中)
========================== (接上文《架构设计:系统间通信(36)——Apache Camel快速入门(上)》)(补上文:Endpoint重要的漏讲内容)3-1-2、特殊的Endpoint DirectEndpoint Direct用于在两个编排好的路由间实现Exchange消息的连接,上一个路由中由最后一个元素处理完的Exchange对象,将被发送至由D转载 2018-01-23 11:21:14 · 1144 阅读 · 0 评论 -
架构设计:系统间通信(36)——Apache Camel快速入门(上)
1、本专题主旨1-1、关于技术组件在这个专题中,我们介绍了相当数量技术组件:Flume、Kafka、ActiveMQ、Rabbitmq、Zookeeper、Thrift 、Netty、DUBBO等等,还包括本文要进行介绍的Apache Camel。有的技术组件讲得比较深入,有的技术组件则是点到为止。于是一些读者朋友发来信息向我提到,这个专题的文章感觉就像一个技术名词的大杂烩,并不清楚作者的转载 2018-01-23 11:19:28 · 383 阅读 · 0 评论 -
架构设计:系统间通信(35)——被神化的ESB(下)
2-4、ESB与版本控制企业中的系统集成过程,存在很多非技术因素引起的变化。可能出现的情况是,某个一直能够正常使用的调用功能A,在某一天突然就不能使用了。技术团队和业务团队排查了许久才发现功能A中对某个业务系统的调用接口已经被私自更改(可能只是多传递了一个参数、或者减少了一个参数的传递)。这种情况在现实中经常出现,可能是业务部门出于私利对外屏蔽了这个接口,也可能是技术人员在改动接口时,忘记了这转载 2018-01-23 11:17:45 · 236 阅读 · 0 评论 -
架构设计:系统间通信(34)——被神化的ESB(上)
1、概述从本篇文章开始,我们将花一到两篇的篇幅介绍ESB(企业服务总线)技术的基本概念,为读者们理清多个和ESB技术有关名词。我们还将在其中为读者阐述什么情况下应该使用ESB技术。接下来,为了加深读者对ESB技术的直观理解,我们将利用Apache Camel一起搭建一个ESB技术的服务实现,虽然这个示例不能把目前主流的ESB服务实现中所有功能模块都保罗进来,但至少可以让读者看到ESB技术核心服转载 2018-01-23 11:16:25 · 241 阅读 · 0 评论 -
架构设计:系统间通信(33)——其他消息中间件及场景应用(下3)
=================================== (接上文:《架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)》)5-7、解决方案三:非侵入式方案以上两种方案中为了让业务系统能够集成日志采集功能,我们或多或少需要在业务系统端编写一些代码。虽然通过一些代码结构的设计,可以减少甚至完全隔离这些代码和业务代码的耦合度,但是毕竟需要业务开发团队花费精力对这转载 2018-01-23 11:15:28 · 185 阅读 · 0 评论 -
架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)
5-3、解决方案二:改进半侵入式方案5-3-1、解决方法一的问题所在方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离。方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑。但是我们能为方案一列举的问题却可以远远多于方案一的优点:需要为不同开发语言分别提供客户端API包。上文中我们介绍的示例使用转载 2018-01-23 11:13:55 · 119 阅读 · 0 评论 -
架构设计:系统间通信(31)——其他消息中间件及场景应用(下1)
5、场景应用——电商平台:浏览记录收集功能事件/日志收集系统是大中型软件不得不面对的话题。目前第三方业务系统对 事件/日志收集系统 的集成思路主要有两大类:侵入式收集方案和非侵入式收集方案。侵入式收集方案,是指任何需要使用事件/日志收集系统的第三方系统,都需要做有针对的编码工作,这个编码工作或者是新增代码用于调用 事件/日志收集系统 提供的客户端API,又或者是修改已有的代码,以便适应事件/日转载 2018-01-22 10:56:45 · 262 阅读 · 0 评论 -
架构设计:系统间通信(30)——Kafka及场景应用(中3)
4-5、Kafka原理:消费者作为Apache Kafka消息队列,它的性能指标相当一部分取决于消费者们的性能——只要消息能被快速消费掉不在Broker端形成拥堵,整个Apache Kafka就不会出现性能瓶颈问题。4-5-1、基本使用我们首先使用Kafka Client For JAVA API为各位读者演示一下最简单的Kafka消费者端的使用。以下示例代码可以和上文中所给出的生产者转载 2018-01-22 10:54:35 · 171 阅读 · 0 评论