将单个应用程序拆分成一组微小的服务组件。每个小型服务组件都在自己的过程中运行。这些组件通过轻巧的机制(例如Restful API,具有自动部署机制的独立部署)进行交互,此外,这些服务可以用不同的语言开发,并且可以使用不同的技术来存储数据。
通过上面的定义描述,我们基本上可以确定微服务的特殊符号:
首先,必须使用微服务来练习生产项目。例如,以下图中的微服务业务结构:
在上图中显示的架构图中,我们假设我们假设业务商家服务A,订单服务B和产品服务C分为微服务应用程序并分别部署。这次,我们面临很多问题可以解决,例如:
1.如何通过客户访问这些服务?
2.如何在每种服务之间进行交流?
3.如何实现多个微服务?
4.如果服务异常出现,如何解决?
这些都是问题,需要一个人解决。
在开发单个应用程序时,所有服务均为本地,前端UI接口,移动应用程序可以直接访问后端服务器程序。
现在,它根据功能将其分为独立服务,并在独立过程中运行。如下所示:
目前,后台有n个服务,前台需要记住管理n个服务。一项服务是离线,更新和升级的。前台和移动应用程序必须重新置换或重新输入。尤其是为了快速发展业务需求,业务变化非常频繁。
除了难以访问管理的困难外,n服务的呼吁也是一个小型网络。此外,一般的微服务通常是系统内部的,我们的用户在执行业务运营时经常在业务模块上运行,并且他们需要成为状态。在此系统体系结构中,可以解决此问题。在传统上解决用户登录信息和权限管理通常具有统一的位置维护管理(OAUTH),我们称其为授权管理。
基于上面列出的问题,我们使用一个名为API网关的技术解决方案来解决这些问题。网关的角色主要包括:
API网关可以具有许多广泛的实施方式。它可以是一个柔软而硬的框,一个简单的MVC框架,甚至是Node.js Server。他们最重要的作用是为前台(通常是移动应用程序)提供背景服务的聚合,提供一个统一的服务导出以减轻它们之间的耦合,但是API网关也可能是单点故障点或性能的瓶颈。
最后,API网关的业务体系结构图已添加到以下:
所有微服务都是独立部署并在自己的过程容器中运行的,因此微服务和微服务之间的通信是IPC(INTER PROCESS COMLACONCE),转化为Inter -Process Communication. Inter -Process Communication Schepome已成熟。现在有两个最常见的类别:同步调用,异步消息呼叫。
同步通话
同步通话相对简单且一致,但是很容易调用问题,并且性能经验会更糟,尤其是当呼叫级别较大时,有两种实现同步调用的方法:REST和RPC
基于REST和RPC的特征,我们通常采用的原理是:RPC用于暴露对系统的外部暴露,并且系统内部使用RPC方法。
异步消息的方法特别广泛地用于分布式系统中。他不仅可以减少低调服务之间的耦合,而且可以成为呼叫之间的缓冲区,以确保消息的积压不会破裂。服务经验,继续做您应该做的事情,以免背景性能放缓。需要支付的成本是一致性的削弱,最终的一致性需要被接受。实现权力和其他性别,因为由于性能的考虑,通常会重复发送信息(保证消息是收到的,只收到了很好的性能考验)。最后一个是引入独立经纪人作为中间代理池。
常见的异步消息呼叫的框架是:Kafaka,Notify,MessageQueue。
最后,大多数服务的呼叫体系结构实现如下:
在微服务体系结构中,每种服务通常都有多个副本来使负载平衡。服务可能随时离线,或者也可能会增加临时访问压力中的新服务节点。这有一个新问题:
这是对服务的发现,识别和管理。要解决多个服务之间的识别,发现的问题通常是通过注册执行的。
具体:服务在线时,服务提供商将其服务注册信息注册到一个特殊的框架中,并通过心跳保持长链接,以实时更新链接信息。服务呼叫者将通过服务管理框架解决。根据特定算法,找到相应的服务或缓存服务的注册信息到当地以提高性能。当服务离线时,服务管理框架将向其他服务发送到服务的其他服务。
常见的服务管理框架是:Zookeeper和其他框架。
上述问题解决方案有两个具体的实现,即:基于客户端的服务注册和发现,基于服务器的服务注册和发现。
优点是架构很简单,扩展是灵活的,并且仅取决于服务注册服务处。缺点是客户需要维护所有呼叫服务的地址。它有技术困难。通常,大公司具有成熟的内部框架支持。
优势是所有服务均与前台指挥官透明。通常,小型公司在云服务中应用了更多的应用程序。
如前所述,单体应用的开发风险很大,就是将所有鸡蛋都放在篮子里。分布式分布的最大特征是该网络不可靠。可以通过微服务降低这种风险,但是如果没有特殊的保证,结局一定是一场噩梦。
因此,当我们的系统由一系列服务呼叫链组成时,我们必须确保任何链接中的任何问题都不会影响整体链接。有许多相应的方法,例如:
原始:https://juejin.cn/post/7100436848232628255