首页 > > > SOA、ESB、微服务的关系梳理
1、SOA是一种理念,它的主要特性--面向服务的分布式计算,服务间松散耦合,支持服务的封装,服务注册和自动发现,以服务契约方式定义服务交互方式。但是,SOA并没有定义出具体的实现方式,目前有两套SOA理念的实现方式:中心化和去中心化,这两套架构并没有优劣之分,还是要针对企业的根本诉求。
2、SOA中心化的实现方式就是ESB,ESB的根本诉求是为了解决异构系统之间的连通性,通过协议转换、消息解析、消息路由把服务提供者的数据传送到服务消费者。所以,ESB是中心化的,很重,有一定的逻辑,但它的确可以解决一些公用逻辑的问题。
3、SOA去中心化的实现方式的根本诉求是扩展性,实现方式就是微服务。分布式服务框架,主要有dubbox、spring cloud,实现后端服务治理的功能。
4、接下来再细看一下微服务,它的典型特征包括--分布式服务组成的系统,按照业务而不是技术来划分组织,做有生命的产品而不是项目,智能化服务端点与傻瓜式服务编排,自动化运维,系统容错,服务快速演化。微服务就是要去ESB,把所有的“思考”逻辑包括路由、消息解析等放在服务内部,去掉一个大一统的ESB,服务间轻通信,是比SOA更彻底的拆分。
5、微服务数量很大,客户端如何访问这些服务:在N个微服务和UI之间一般会一个代理或者叫API Gateway,他的作用包括:提供统一服务入口,让微服务对前台透明;聚合后台的服务,节省流量,提升性能;提供安全,过滤,流控等API管理功能。他们最重要的作用是为前台(通常是移动应用)提供后台服务的聚合,提供一个统一的服务出口,解除他们之间的耦合,不过API Gateway也有可能成为单点故障点或者性能的瓶颈。API Gateway可以有很多广义的实现办法:
6、微服务数量很大,而且一般每一个服务都是有多个拷贝来做负载均衡,那么服务发现是怎么做的呢?有两种方式,各有优缺点,基本都是通过zookeeper等类似技术做服务注册信息的分布式管理。当服务上线时,服务提供者将自己的服务信息注册到ZK(或类似框架),并通过心跳维持长链接,实时更新链接信息。服务调用者通过ZK寻址,根据可定制算法,找到一个服务,还可以将服务信息缓存在本地以提高性能。当服务下线时,ZK会发通知给服务客户端。

7、Dubbox,主要实现后端服务治理,它的基本原理跟阿里巴巴中台战略中提到的阿里分布式服务框架HSF的原理是一致的。

Dubbox调用关系说明:
0)服务容器负责启动,加载,运行服务提供者。
1)服务提供者在启动时,向注册中心注册自己提供的服务。
2)服务消费者在启动时,向注册中心订阅自己所需的服务。
3)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4)服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控。
8、微服务不是免费的午餐,带来好处的同时,也带来一系列问题,需要一个专业的团队和平台来保障微服务架构的成功落地。微服务的优点:开发简单,技术栈灵活,服务独立无依赖,独立按需扩展,可用性高;微服务的缺点(挑战):多服务运维难度,系统部署依赖,服务间通信成本,数据一致性,系统集成测试,性能监控。
9、对于大的互联网公司,微服务架构是血液,是习惯,每家公司都有自己的套路和架构,细节有不同,但是核心理念是通的。对于一般的公司而言,实践微服务有非常大的技术挑战,于是乎才有了这么多IT供应商考虑这里的商机。微服务比较适合未来有一定的扩展复杂度,且有很大用户增量预期的应用,其实就是新兴的互联网公司。创业初期,不可能买大量的机器或者很贵的机器,但是又必须考虑应对成功后的巨量的用户,微服务架构成了最好的选择。
10、微服务对我们的思考我觉得更多的是思维上的,对于微服务架构, 技术上不是问题,意识比工具重要。
11、一般提到微服务都离不开DevOps和Docker,理解微服务架构是核心,devops和docker是工具,是手段。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/818/viewspace-3170695/ ,如需转载,请注明出处,否则将追究法律责任。