微服务理论介绍

微服务理论

1.什么是微服务?

微服务架构风格是一种将单个应用程序开发为一组小服务的方法,每个小服务都运行在自己的进程中运行,并以轻量级机制进行通信。这些服务是围绕业务能力构建的,并且可以通过完全自动化的部署机制独立部署 [1]

2.为什么微服务会兴起?

在微服务之前的是单体应用,随着用户需求量增加,一台服务器无法支撑,通过多台服务器部署和负载均衡分散访问量(负载均衡);后来通过将静态资源独立部署到特定服务器,通过 CDN 等手段进行加速,可提升应用的整体响应(前后端分离)[2]

随着业务的发展,单体应用程序存在以下几个问题:

  • 代码臃肿,应用启动时间长;
  • 开发协作困难,一个大型应用系统,开发人员多,同时维护一套代码,代码 merge 复杂度急剧增加。
  • 单体应用程序的小部分变更需要重新构建和部署整个整体。随着时间的推移,通常很难保持良好的模块化结构,难以保证一个模块的更改不会影响到其他模块。回归测试时成本昂贵。
  • 伸缩性差,单体应用扩展时,需要扩展整个应用程序,一些访问量低的模块也被扩展,造成资源浪费。单体和微服务如图 1 所示。

图1 单体和微服务
图1 单体和微服务

在这种背景下,微服务就出现了。

微服务权衡:

优点:

  • 模块边界清晰
  • 独立部署
  • 技术多样性

缺点:

  • 分布式
  • 最终一致性
  • 运营复杂

3.微服务典型架构

微服务典型架构如图 2 所示
在这里插入图片描述
图2 微服务典型架构

3.1 一个服务如何发现其他服务?

服务注册中心,所有服务都注册到服务注册中心,同时也可以从服务注册中心获取当前可用的服务清单。

3.2 服务配置如何维护?

配置中心,如果对每一个服务都需要维护一个配置文件,是很繁琐的,需要一个配置中心统一管理。

3.3 网关服务

网关服务是单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的变换、路由和公共处理**[3]**。(处理请求)

作用:

  • 负载均衡
  • 服务熔断(服务不可用时)、重试及路由切换
  • 限流,防止 DDos 恶意攻击
  • 认证鉴权(用户身份鉴权),Token等
  • 灰度发布

网关的主要作用 [4] 如图 3 所示。
在这里插入图片描述
图 3 网关的主要作用

4.微服务中的常见名词

4.1 Nginx

什么是 Nginx ?
Nginx :轻量级高并发服务器

每台服务器的运力有限,为满足大量请求的需求,需要调度更多的服务器提供服务。分发与调度!这种分发中心称为反向代理服务器。

Nginx 能做什么?
1.http 服务器
2.虚拟主机,可虚拟出多个网站。原理是 Nginx 的转发功能。
3.反向代理,负载均衡。当网站的访问量到达一定程度后,单台服务器不能满足用户的请求时,需要多台服务器集群可以使用 Nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

如何防止单点故障?

可以使用 Keepalived 实现 Nginx 高可用,Keepalived 是集群管理中保证集群高可用(HA)的一个服务软件,用来防止单点故障,通过将故障服务器剔除集群的方式实现。

如何理解反向代理中的反向?

正向代理与反向代理模型如图 4 所示。

正向代理服务器:
客户端——服务端,加入代理后,客户端——代理——服务端,代理客户端发送请求,服务器不知道真正的客户端是谁。例如,访问某个网站时,无法直接访问,可访问目标网站的代理,代理再访问目标网站。特点是,目标服务器并不知道真正的访问者是谁。

反向代理是代理服务端,客户端发送请求到代理服务器,代理服务器代替服务端接收请求,并将请求进行分发。特点是,客户端并不知道真正的作出响应的服务器是谁。
在这里插入图片描述
图 4 正向代理与反向代理模型

图片来源:https://www.cnblogs.com/wcwnina/p/8728391.html

4.2 分布式

什么是分布式?
分布式是指数据和程序分散到多个服务器克服了传统集中式系统导致中心主机资源紧张响应瓶颈的缺陷。特点是,软件架构由单体结构分为若干服务,服务之间通过网络交互来完成用户的业务处理,每个部分可以独立部署。

什么是集群技术?
集群技术是一组相互独立、通过高速网络互联的计算机,它们构成了一个组,并以单一系统等模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。提高性能、降低成本、提高可扩展性、增强可靠性。

集群与分布式的区别?
一起干同样的事叫集群,分工合作的叫分布式。集群扩展了服务器的数量,而分布式需要从系统一开始设计时就考虑,是否采用微服务架构。

4.3 Redis

什么是 Redis?

Redis (Remote Dictionary Server,远程字典服务)是一个跨平台的非关系型数据库。由意大利人开发的一款内存高速缓存数据库,由C语言编写,Redis 是一个 key-value 存储系统。Redis 以内存作为数据存储介质,所以读写数据的效率极高。 Redis 中的数据是持久化的。

Redis 的数据类型 ?

包含以下 5 种类型:

  • 字符串(String)
  • 哈希(Hash)
  • 列表(list)
  • 集合(sets)
  • 有序集合(sorted sets)

Redis 的应用场景?

常用于存储需频繁调取的数据。例如 a 网站首页一天有100w人访问,其中有个板块为其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。

参考:

[1] James Lewis,Martin Fowler.微服务.
[2] 微服务入门这一篇就够了
[3] 网关服务
[4] 微服务网关
[5] Nginx 相关介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值