民生山西用户没有权限调用esb失败服务?

这个题目我估计很小众因为读鍺即需要了解微服务架构,又需要了解ESB并且还要对这样的话题感兴趣。

微服务是近几年技术社群讨论很多的一种软件架构方式可以说昰SOA的现代版本、时尚版本。不过这次浪潮不是由大公司倡导的而是由工程师们引领的。比如它采用工程师们熟悉的RESTful接口,而不是笨重嘚WebService也不需要一大堆昂贵的中间件。

与此对比SOA这几年叫得不是那么响亮了。为什么呢我分析有几个原因:第一,这几年大家忙着做移動APP或微信公众号呢哪有精力搞别的?第二大家这几年忙着上云平台呢,要不也要折腾一下Hadoop吧这才是紧跟潮流;第三,这几个传统大廠商都不吃香了都裁员呢,他们那一套还能信现在要讲互联网化呢,最时髦的是去IOE呀

API网关大部分是对外的,也就是处于内部网络跟外部网络之间比如,无数的APP客户端都要通过API网关访问内部的服务因此,对它的安全性、健壮性也就有了很高的要求此外,如果系统性能有问题网关也需要知道是哪个服务慢了,这就需要性能监控、日志等功能因此,凡是搞微服务架构几乎肯定要用到API网关。

API网关與ESB有相似之处但又有很大不同。基于DNSAPI网关的存在几乎是透明的,应用不需要明确的知道一个中间件的存在并跟它对接(实际在网络傳输层面,还是要做一些配置和优化的比如,在服务侧要允许来自API网关的大量访问)这就体现出了REST的优势,因为它充分利用了互联网巳有的基础设施

所以,看上去我们不需要ESB了ThoughtWorks的首席科学家Matin Fowler也不赞同在微服务架构中继续用ESB。他的考虑是说没有必要把一些逻辑集中在潒ESB这样的中介结构中这样与系统尽量解耦的初衷是背离的。

然而事情似乎没有那么简单。我们在实践中发现还是有一些需求,如果鼡类似ESB的机制可能更容易满足。

服务的消费者和提供者之间除了通过服务接口调用耦合以外,还有通过事件的方式事件机制对于做UI編程的人来说很熟悉,一个UI组件发出事件对此事件感兴趣的其他方可以获取事件中的信息,并运行相应的逻辑

事件机制在DDD方法论里也討论得很多。某领域(如订单处理)发出事件其他领域(如物流管理)可以接受事件并处理。这是一种很干净的系统耦合方法

这种耦匼机制当然也可以用服务调用的等价方式来实现,比如物流微服务每隔一定的时间就去轮询一订单微服务这仍然没有改变模块间的依赖關系,但效率上降低了事件通讯的处理效率更高。这也是在系统架构中采用消息中间件(MOM)的一个重要场景

那么,需要发出事件的微垺务就需要跟一个消息中间件对接,发送消息进去;而其他的消费者就从消息中间件中不断地取信息。这个中间件的存在对于双方都昰知道的这就有点像一个ESB了。

有了消息我们发现某些逻辑,如果从微服务里抽取出来似乎更好。就如订单处理逻辑可以由物流服務去监听订单服务,以便及时安排物流也可以把它们之间解耦,让一个BPEL逻辑去调度物流微服务只是被动的接受调用就可以了。

表面上看这只是把一段逻辑从物流微服务中剥离出来了。但剥离的好处是更加容易维护这些流程逻辑(甚至可以通过图形界面来维护)。

担惢ESB中的逻辑太集中又成了大块的软件?由统一的部门维护导致协作成本太高

我觉得这是个权衡利弊取舍的问题。把很多公共的、全局嘚功能放在ESB层面上去实现会大大简化微服务的实现,让它们更加专注于处理好自己的事情

一个很重要的场景,就是微服务之间的数据複制微服务之间是不共享数据库的,实现最大程度的低耦合但在实际中,一个微服务可能要访问另一个微服务的部分数据的只读版本这样可以大大提高性能。在这种情况下微服务之间的数据复制就是一个必须要解决的问题,而且最好统一解决不是由每个微服务各洎去解决。借助ESB的数据自动同步就是其中一个解决方案。

我们理解在自由主义者心中,我们不想要任何的“枢纽”我们希望整个世堺是分布式,自由连接的没有一个中央机构能够控制所有的事情。

在实际情况下我们还没有办法做到完全的分布式,还必须依赖一些公共的基础设施比如如果几个DNS的根服务器出了问题,全球的互联网都会出问题

公有云也把很多企业的IT设施都集中到了一些大型的机房,从而导致了成本的大幅度降低

所以,集中是有它的好处的基于ESB,可以更好的做服务的治理以及一些高级应用比如可以做CEP(复杂事件处理)、可以支持Event Sourcing,可以做全局的安全设计等分布固然有分布的好处,但类似路由器这样的枢纽在架构中还是有其必要性的。

按照《失控》的理论我们还有一个“涌现”和分层的理解角度。所有的微服务是基础而微服务之间的互动是涌现出来的特征。就如大脑的意识是神经元的连接涌现出来的以及网络协议中TCP层的能力是由IP层的支持的。在上一个层次中我们通常有能力做一些在下一层次做不到嘚事情,比如宏观的流程比如微服务的治理。

最后总结一下:微服务的整合仍然需要中间件。我们仍然可以从过去ESB的理念中汲取一些囿用的营养

}

我要回帖

更多关于 调用esb失败 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信