谷粒商城一介绍及基本架构todo( 三 )


P2P:在线金融,贷款,如:网贷之家、人人聚财等 。
谷粒商城是一个 B2C 模式的电商平台,销售自营商品给客户 。
电商模式的特点分布式基础概念 微服务
简而言之:拒绝大型单体应用(以前是将所有的代码、页面包括sql语句等都写在一个应用里,这样会导致如果有一处代码出现问题,可能会导致整个项目都不能运行),
而我们就希望将大型单体应用基于业务边界进行拆分,将大型单体应用拆分成不同的小模块,每一个小模块我们就可以称为一个微服务,这些模块合起来就相当于一个单体应用,这些微服务都是独立部署运行的,如果有一个出现了问题,我们不希望影响其他服务的运行 。
微服务是一种非常流行的架构风格,将大应用拆分成小服务之后,各个小服务都运行在自己的进程中,也就是互相隔离微服务之间也需要通信,例如订单服务向商品服务查询一些商品信息,通常使用HTTP API(轻量级机制通信)进行通信 。
集群&&分布式&&节点
集群是个物理形态,分布式是个工作方式 。
分布式是指将不同的业务分布在不同的服务器 。
集群指的是将几台服务器集中在一起,实现同一业务 。
例如某大型网站用户服务访问量高,那么用户服务就用十台机器一起来运行,我们随便访问哪台都可以,用户服务就是做了集群化处理 。
分布式中的每一个服务器,都可以做成集群,而集群并不一定就是分布式的 。
用户服务十台服务器运行就是集群,而十台服务器运行的用户服务不能被称为分布式 。
节点:集群中的一个服务器
远程调用
在分布式系统中,各微服务可能处于不同服务器,但是服务之间不可避免的需要相互调用 。
中推荐使用 HTTP+JSON的方式完成远程调用 。
负载均衡
分布式系统中,A服务需要调用B服务,B服务在多台服务器中都存在(集群),A调用任意一个服务器均可完成功能 。
为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提升网站的健壮性 。
常见的负载均衡算法:
轮询:在服务器健康池中依此调用最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式 。散列:根据请求源IP的散列(hash)来选择要转发的服务器 。这种方式可以一定程度上保证特定用户能连接到相同的服务器 。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式 。服务注册/发现&注册中心
A 服务调用 B 服务,A 服务并不知道 B 服务当前在哪几台服务器有,哪些正常的,哪些服务 已经下线 。解决这个问题可以引入注册中心 。
如果某些服务下线,注册中心可以实时的感知到其他服务的状态,从而避免调用不可用的 服务 。
配置中心
每一个服务最终都有大量的配置,并且每个服务都可能部署在多台服务器上 。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置 。
配置中心用来集中管理微服务的配置信息
服务熔断&服务降级
在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,有可能会造成雪崩效应 。要防止这样的情况,必须要有容错机制来保护服务 。
服务雪崩:A服务调用B服务,B服务调用C服务,C服务 。。。,假如C服务挂了,那么A、B服务将无法正常运行,此时并发很大的话,更多的请求导致请求积压,请求将都会被阻塞,最终会因为一个服务的不可用导致服务器的资源耗尽,所有服务均不可用,导致整个服务的雪崩现象 。