为什么用微服务,那么使用微服务就一定好么

服务间通信数据管理的服务规模 。首先我们要知道为什么要做微服务 。微服务架构将整个应用分成更小的独立服务,每个服务实现一组独立的功能 。微服务通过API暴露自己的功能实现,然后通过服务治理和服务编排完成系统的完整功能 。微服务的局限性在于,微服务因为服务量和管理成本的增加,很难以整体架构的形式支撑 。个人认为微服务更适合快速响应,比如 。
微服务为什么不需要esb?

为什么用微服务,那么使用微服务就一定好么

文章插图
首先我个人不认为微服务不需要ESB 。两者是相互融合、相互配合的,在不同的应用场景下发挥自身的优势,共同助力企业的发展 。并且在微服务快速兴起的现在,ESB本身也在不断完善、调整,比如,数通畅联的AEAIESB本身就支持微服务架构的开发,实现了跟微服务架构的融合 。其次微服务是近几年比较流行的新兴架构,更多的采用Restful接口而不是WebService,微服务类似于七巧板的组件,以小粒度为用户提供服务,用户可以根据自身的喜好自由组合配置服务组件,灵活的进行扩展 。
但是微服务的局限在于因为服务量增多,管理成本增加,微服务难以用整体架构的形式进行支撑,个人认为微服务更加适用于快速响应如:APP,前后端分离架构,互联网模式交互 。ESB(企业服务总线)作为SOA中重要的承载物,可以说是企业信息的“龙骨”,通过ESB实现服务的消费者及提供者之间的联通与管理,实现服务的治理、重组、编排和代理等,可以有效的支撑企业级的信息化集成架构的落地 。
微服务调用为什么用RPC框架,http不更简单吗?
简单点,HTTP是协议,RPC是概念!实现RPC可以基于HTTP协议(Feign),TCP协议(Netty),RMI协议(Soap),WebService(XML—RPC)框架 。传输过程中,也因为序列化方式的不同,又有一些框架和协议,比如Dubbo中的Dubbo协议,gRpc—Protobuf序列化协议等等 。
其实,都是基于远程调用的概念,何为远程调用?重点是,RPC就是远程调用,远程调用就是客户端把调用的接口,参数,参数类型,方法,返回值,返回值类型等(这些称为方法签名),通过如上的协议,发送给服务端,告知服务端需要调用的接口方法,这个过程就是RPC的实现过程!HTTP和RPC是不同层面的两个东西!性能方面,HTTP本身是基于TCP协议的,属于应用层协议,所以HTTP协议本身在实现过程中就会占用大量的资源(内存,带宽等),性能上肯定没有通过TCP直接实现RPC协议快,不管HTTP如何优化肯定的是不如TCP的!而TCP则是依靠字节码,现在普遍采用的是将客户端调用的接口信息,序列化的方式发送给服务端,序列化框架又包含很多(Hession,Protobuf,Kryo等等,序列化性能最高的是Kryo,序列化后字节码最小的是Protobuf),序列化后的字节码越小,占用带宽越少,序列化时间越短,线程IO等待时间就会越小 。
系统软件架构中,现在很流行微服务,那么使用微服务就一定好么?微服务有哪些缺点呢?
下面简单回答下这个问题 。在回答这个问题前还是先回顾下微服务架构 。微服务架构概述微服务架构本质是单个业务系统彻底的组件化(前端,逻辑层,数据库)解耦,同时相互之间通过轻量的服务接口和协议进行协同 。这和很早就谈到的组件化架构思想是一致的,实现微服务架构后,你会看到没有传统业务系统的概念了,有的只是微服务模块或小应用 。
微服务架构最近又炒的相当活,很多人会说SOA过时了,ESB过时了,甚至还有人用微服务架构去彻底的否定SOA和ESB,这些都是相当危险的信号 。在我12,13年写企业私有云PaaS平台的一系列文章的时候,已经提出了业务能力组件化,组件服务化的微服务架构思想,但是实际应用实施效果并不太理想 。我们可以先看下从单体应用到微服务架构的变化图 。

推荐阅读