谷粒商城基础篇-1.分布式基础概念&&架构图与功能模块图

本文详细介绍了微服务的概念,强调每个服务独立运行并使用轻量级通信。分布式、集群和节点的区别也在文中阐述,重点讲解了远程调用、负载均衡、服务注册/发现、配置中心以及服务熔断和服务降级的重要性。此外,提到了API网关的作用,包括动态路由、负载均衡、服务降级和授权等。最后,概述了系统架构图,涉及外网和内网部署、访问流程、服务处理、存储解决方案、问题定位及持续集成/部署的流程。
摘要由CSDN通过智能技术生成

一、分布式基础概念

1、微服务:
把一个单独的应用程序开发我i一套小服务,每个小服务运行在自己的进程中,并使用轻量级通信,如http API。这些服务围绕业务能力搭建,并通过完全自动化部署机制独立部署。这些服务使用不同的编程语言书写,以及不同数据的存储技术,并保持着最低限度的集中式管理。
2、分布式,集群,节点
①分布式:将不同的业务分布在不同的地方,是一种工作方式。比如京东不同的业务在不同的服务器。
②集群:将几台服务器集中在一起,实现同一业务。比如订单业务一个服务器不够,放十台服务器。是一种物理形态。只要是一堆机器,就叫做集群。集群不一定是分布式的,比如十台服务器的集群,它用来实现同一个服务,比如购物车。
③节点:集群中的一个服务器
③分布式系统:若干独立计算机的集合,这些计算机对于用户来说就像单个系统。比如一个商城有很多服务(订单,支付…),每个服务放在不同的服务器上,对于用户来说,用户感觉不到这些不同的服务是在不同的服务器上。对于每个服务器,就是一个节点。有时候,因为对于购物车服务来说,一个服务器不能承载压力,添加多个服务器,也就是把购物车这个服务做成了集群,来缓解压力。

3、远程调用:
分布式系统中,每个处于不同主机的服务相互之间的调用。
在这里插入图片描述

4.负载均衡
分布式系统红,A服务需要调用B服务,B服务在堕胎机器中都存在,A调用任意一个服务器均可完成功能。为了使得每一个服务器不要太忙或者太闲,可以用负载将军和的调用每一个服务器,提升网站的健壮性。
常见的负载均衡算法:轮询,最小连接,散列算法

5.服务注册/发现&&注册中心

在这里插入图片描述
问题引入:当A服务调用B服务的时候,A服务并不知道B服务在当前的那几台服务器有,那些正常,那些已经下线。
引入注册中心:如果某些服务下线,其他人可以试试的感知到其他服务的状态,从而避免调用不可用 的服务。比如A服务要调用B服务,可以在注册中心中发现B服务在三台机器中都有。

6、配置中心:集中管理微服务的配置信息
在这里插入图片描述
每个服务都有大量的配置,并且每个服务都可能部署在堕胎服务器上,我们经常需要变更配置。

7.服务熔断&服务降级
①问题引入:在微服务架构中,微服务之间通过网络进行通信,因为网络通信具有不可靠性,不稳定性。
比如:库存服务的不可用导致商品服务的阻塞,因为商品服务的阻塞,订单服务也阻塞了。
整个服务链的资源积压,会导致整个服务器的资源耗尽,所有服务均不可用,导致微服务的雪崩现象
②服务熔断:
设置服务超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务,本地直接返回默认的数据。
③服务降级:(整体把控)
在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非黑奴业务降级运行,降级。某些服务不处理或进行简单处理(抛异常、返回null,调用mock数据,调用fallback处理逻辑)。
8.API网关
抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流监控,日志统计等功能,解决API服务管理难题。
例如:前端调用后端资源的时候,把http请求统一发送到到网关上,网关提供了很多功能,比如看看那些请求是合法的。等于商场的入口
在这里插入图片描述

二、架构图与功能模块图

1.外网部署:是让公众访问的,用来部署前端项目,比如手机APP,电脑WEB网站
2.内网部署:部署的是整个服务集群。
3.访问流程
http请求——>nginx集群——>网关gatway(
①动态路由:网关根据当前请求,动态路由指定的服务,想调用商品服务还是什么服务。
②负载均衡:假定请求商品服务的众多,网关可以负载均衡的去调用商品服务。
③服务降级熔断:当某个服务出现问题,也可以通过网关对某个服务进行熔断和降级sentinel,
④也可以进行动态授权,那个根据权限相应服务。
⑤流量控制:允许后台可处理的流量进行发送)
——>服务处理
①注册中心:把服务都注册到注册中心统一暴露
②配置中心:方便配置管理
③服务追踪:比如商品服务调用库存服务的时候某个链路出现了问题,需要追踪服务调用链,看问题出现的地方。
把每个服务的信息,交给Promietheus进行聚合分析,再由grafana进行可视化展示。通过Promethus提供的Grafana得到服务实时的告警信息,把这些告警信息通过邮件或者短信告知运维或者开发)
——>存储
①缓存:redis哨兵集群和分片集群
②持久化(mysql:读写分离,分库分表)
③消息队列:服务与服务之间的解耦,完成分布式事务的最终一致性。
④全文检索:比如检索商品信息
⑤存储图片视频:阿里云的对象存储服务
——>定位项目上线后的问题:ELK(收集业务里的日志,存储到ES中,用Kibaner可视化界面从es中检索出相关的日志信息,定位出线上问题的所在)
——>持续集成或者持续部署
①问题引入:项目开发起来,微服务众多,每一个都打包到服务器太麻烦。
②功能引入以后:
Ⅰ、开发人员:把代码提交到github,
Ⅱ、运维人员通过自动化工具Jenkins从github上获取到代码,把其打包成docker镜像。最终使用K8S集成docker服务,最终将其以docker容器的方式进行运行。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值