作者回复: 这是个好问题,不然容易搞糊涂。 应用和服务都对应一个独立的进程。但应用一般指的是用户能够直接感知的部分,比如app和浏览器页面,带有UI的,针对具体的业务场景。服务指的是背后提供数据和业务逻辑的,不带UI,服务更强调通用的能力。
现在普遍采取前后端分离,一般我们把前端和直接为前端服务的服务端合在一起认为是一个应用,或者简单地说直接的服务端是应用,它的特点是直接面向前端的业务场景,经常变化,代码是定制的。通常情况下本身不干活,通过调用服务是实现功能,稍微复杂的情况,会对后面服务进行聚合。
现在应用也是通过api提供给前端,形式上和服务差别不大,当定位上有明显不同。
作者回复: 十几年前,两个术语很流行,EAI(enterprise application intergratioin)和EII(enterprise information intergratioin), 都是为了各个系统打通。
现在互联网企业盖过传统企业,应用都是自己开发,集成没问题,更多考虑系统扩展和复用,能够快。
作者回复: 尽量避免冗余别的系统数据,虽然性能有好处,但也带来一堆问题,比如数据同步,数据一致性,业务逻辑分散在多处,最好是从源头拿数据。跨多个系统的报表最好的做法是统一由数据部门搞定,他们首先会对数据进行汇总。
保存订单时,保存的是用户ID,至于收货地址这些都是订单信息,不是用户信息。
作者回复: 可以这么理解,
1. 传统的ESB处于调用的中心,ESB是单点,出问题的话,调用就失败。对于微服务来说,直接调用微服务,注册中心中途挂了影响不大,服务编排不需要的,路由熔断也都在调用方做,所谓的哑管道,指调用通路很简单。
2. 除这个之外,ESB负责业务流程编排,这个在微服务里就绝对抛弃了,微服务是智能终端,所有的逻辑都在服务里面提供。
作者回复: 通过api可以互通,但在业务关系紧密的情况下。每个应用都会有部分的商品,用户,订单,库存逻辑,职责碎片化,应用之间耦合紧密,相互影响。如果用服务化的思路把商品,用户等单独封装起来,然后供各个业务共享,开发效率和质量都更好。
SOA架构也是分布式的一种,当然微服务也是分布式。
作者回复: 方向没问题,你也可以看下第9篇文章,有讲到如何对单体系统做服务化改造
作者回复: 一个业务处理的起点到终点