微服务架构的理解
定义:将功能分解成一系列服务的一种架构模式。
着重点:相对于应用系统的功能性需求,更着重于应用系统的扩展性、灵活性,还有性能、运维、安全、测试、监控等非功能性需求。
核心思想:分而治之,将一个应用拆分成多个松耦合的服务,这些服务之间通过某种协议(REST、RPC等)进行互相协作,其中一个关键点就是各服务之间的松耦合,各服务之间通过一种“标准”的协议进行沟通,不需要理解对方服务的实现逻辑、实现方式,只要在对方不影响自己所提供的服务功能即可。
微服务中的服务:服务是一个可以独立运行、提供范围有限的功能(可以是业务功能,也有可能是非业务功能)的组件(微服务是可以单独部署运行的)。
优点:
松耦合:服务提供者和服务消费者互不影响。
抽象:当前微服务对自己所拥有的数据有绝对控制权,其他微服务只有通过该服务才能够访问此数据。
独立:每个微服务都可以在不影响其他微服务的情况下进行编译、打包和部署。
应对用户需求的多样性:不同的微服务承担不同的职责,快速部署上线能力可以让用户需求尽早实现。
更高可用性和弹性:微服务架构可以认为是一个去中心化的应用,每一个微服务都可以随时上线或下线。
缺点:
可用性降低:微服务之间都是通过远程调用进行协作的,远程调用必然是不稳定的。
处理分布式事务较棘手:当一个请求的业务涉及多个微服务时,保障数据的一致性就成为一个棘手的问题。
全能对象(God Classes)阻止业务拆分:几乎涉及了每个服务的对象,难以拆分。如电商系统的订单对象。
学习难度曲线加大:需要开发人员学习掌握一系列的微服务开发技术,加大了进入门槛。
组织架构变更:虽然对于单独一个微服务的部署简化了,但是整个应用部署的复杂度却提升了,需要涉及服务编排和服务治理等一系列处理,可能还需要协调不同的团队,以及在人事组织上进行调整来适应这种变化。
微服务架构的设计
微服务架构的设计一定是与时俱进的,因此我们也不可能在第一次设计时就设计出一个完美的架构体系
微服务架构如何设计呢?简单可概括为三步:
把应用中关键的需求定义出来;
识别出采用微服务架构时应用中所包含的所有服务;
规划出各服务之间的协作关系。
注意:在服务拆分和服务协作规划时,一定要专注于业务,专注于业务,专注于业务;
交易所开发正式版丨区块链交易所系统开发实现技术功能及源码
交易所开发案例丨交易所系统开发(详细及流程)丨交易所成熟及源码系统
交易所开发(稳定版)丨交易所系统开发(方案及逻辑)丨 交易所系统源码功能
什么是去中心化交易所系统开发丨浅谈uniswap丨justswap
交易所源码(整体架构演示)
交易所搭建,交易所源码是怎么开发的?
区块链交易所怎么搭建?
区块链交易所平台中常见的开发模式有哪些?
区块链交易所如何开发(介绍区块链应用开发的流程)
区块链交易所开发的玩法介绍
数字区块链交易所系统开发的玩法
当识别出应用的每一个微服务后,我们就需要考虑这些微服务之间如何进行协作。定义各个微服务之间协作关系最有效的方式就是根据每一个业务进行分析。有些业务场景可能只需要某一个服务就可以完成,有些业务场景则可能需要两个或多个服务才可以。这些协作可能是实时同步的,也可能是异步执行,我们可以根据这些具体需求来确定使用何种方式进行交互(是使用REST、RPC,还是消息)。此外,还有一个需要我们第一时间去考虑的问题就是用户的服务请求最初是由哪个服务承担的。