0
点赞
收藏
分享

微信扫一扫

springcloud:什么是分布式微服务,如何学习微服务(一)

静守幸福 2022-04-01 阅读 63

0. 引言

随着网络建设的丰富和技术发展的增强,传统的单机架构已经不能满足日益递增的用户需求。学习微服务开发也成了当今java后端开发必须掌握的技术。

接下来的日子我们一起来学习微服务开发。在真正开始学习之前,我们要先理解几个基础概念

1. 基础概念

1.1 分布式

想象一下,如果一台单机的服务最多只能支持400的访问量,但是因为用户量但,同时有600的访问量打进来那么,服务肯定支撑不住。但是如果我们的服务拓展到3个,那么600的访问量均匀的拓展到3个服务中,那么每个服务只用承担200访问量,对于一个服务来说完全能够承担了
在这里插入图片描述
我们把这种拓展服务的方式称之为分布式,或者说横向拓展。说的简单点,就是一个不够,两个来凑。所以分布式强调的是部署方式。

1.2 网关

但是本身也引申出来一个问题,用户访问的时候肯定是一个网址,也就是说是一个入口进来,用户本身不会因为服务1满了,我就去手动访问服务2,这个可能在游戏服务中有切换服务器的做法,但是作为一个网站或者应用软件来说的话,不可能要求用户去切换网址的。

所以从一个统一的入口进来后,我们就需要一个东西来帮助我们将这些请求,按照预设的算法(可以是均匀分发,也可以是按顺序分发)来帮助我们把用户的请求分发到不同的服务上,以此来分解单个服务器的压力。我们把这个帮助我们分发请求的东西称之为网关。这里我们就简单的提一提它的作用,后续再做详细拓展
在这里插入图片描述

1.3 微服务

有了分布式有了网关,我们的问题就解决了吗?

想象一下以下几个场景:
1、服务中有订单模块,商品模块,现在我的订单模块产生了报错,导致了服务崩溃,那么连带着商品模块也跟着崩溃了。如果某个请求只需要调用到商品模块,因为订单模块的崩溃,导致访问商品模块的也出现了404无法访问

2、服务中的商品模块的请求量是400,订单模块的请求量是200,服务能够承担的请求量是200,那么因为要满足商品模块的400请求,导致我们必须要扩展到2个服务,但是实际订单只需要1个服务即可满足,是不是产生了一定的资源浪费呢?

那么如何去解决以上几个问题呢?

我们把服务拆分以下,比如我们把订单服务,商品服务单独拆分出来作为两个独立的服务。这样我们就可以对这两个服务再分别定制分布式了。而且当订单服务崩溃后,因为两个服务的独立性,商品服务仍然可以正常运行。
在这里插入图片描述
所以,这种把大服务,细致化拆分成小服务的做法,就是微服务。但是根据什么样的规则去拆分微服务,就要根据公司或者业务的需求,以及一定的开发经验来判定了。一般我们是按照业务属性来进行拆分。因此微服务强调的是架构方式

1.4 集群

集群是一组相互独立的、通过高速网络互联的计算机或者服务。比如说我们的微服务集群,或者我们的数据库集群、redis集群等等

2. 如何学习微服务

学习微服务的第一步是要理解它产生的原因和起到的作用,相信通过上述的描述,对于这点,大家应该有一些了解了。更加深刻的理解,实际上要靠你自己去实际体验一下,通过并发量的增加、报错的产生来体会区别。

其次是要了解分布式微服务涉及哪些技术点,需要哪些组件才能搭建起来一个微服务框架。了解了这个整体之后,我们才能开始一个点一个点的开始学习。

那么微服务涉及哪些技术点、哪些组件这就是我们下一篇要来探讨的了。
在这里插入图片描述

举报

相关推荐

0 条评论