构建微服务架构的5大技术

作者 : IT 大叔 本文共3185个字,预计阅读时间需要8分钟 发布时间: 2020-09-29

采用微服务架构之前应考虑的事项

微服务架构为在Amazon,Netflix,Spotify和Uber等公司构建的产品奠定了基础。与传统的单片应用程序相比,微服务具有以下优点:

  • 模块化:通过将应用程序拆分为较小的组件,可以更轻松地理解,开发和测试应用程序。
  • 可扩展性:由于微服务是独立实现和部署的,因此可以独立地对其进行监视和扩展。
  • 稳健性:当微服务中存在内存泄漏时,仅会影响该微服务。其他微服务继续运行。
  • 安全性:因为微服务是隔离的,所以整个系统不会受到对一个微服务的攻击的影响。

注意:可以使用不同的编程语言来实现微服务,并且可能使用不同的基础结构。

典型的微服务架构由API或通信网关,服务发现,服务以及数据库或缓存组成。

尽管有这些好处,从实现到迁移和维护,微服务架构也面临着自身的挑战。采用微服务架构带来的一些主要挑战包括:

  • 微服务系统的操作比运行部署整体需要更多的精力,因为存在更多的可部署单元。
  • 由于所有测试都必须独立完成,因此一个微服务可能会阻塞测试阶段并阻止其他微服务的部署。
  • 与涉及部署整体的多个模块的更改相比,影响多个微服务的更改更难以实现

在下一节中,我们将介绍简单的微服务架构设计和可用于开发设计中每个组件的顶级技术。

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::0

DockerKubernetes

Docker是一个软件平台,可让您以称为容器的自包含软件包的形式构建,测试和部署软件 。这些Docker容器可以部署在任何地方,每个容器包含运行所需的所有资源和配置。

Kubernetes可以作为Docker的补充,特别是在规模上。当迁移到跨多个服务器部署的多个容器扩展时,通常用于解决一些操作复杂性。

Docker和Kubernetes可以一起用作基于微服务的系统的灵活基础,可以随着工作量的增加轻松扩展,反之亦然。

Docker微服务的优势

Docker是用于构建微服务架构的轻量级选项。微服务的所有组件都可以打包到Docker映像中,并与其他微服务保持隔离。

Docker使部署软件变得容易,因为您只需要使用Dockerfile分发Docker映像即可。

使用Docker Compose,可以协调多个容器,以使用容器构建整个微服务系统。我们还可以使用Docker Machine在服务器上安装Docker环境。

注意: Docker需要重新考虑操作。因此,在某些情况下,您可能需要替代技术。例如,在单个Java Web服务器上部署多个Java Web应用程序时。

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::1

REST API

微服务必须与其他微服务进行通信。可以使用的一种通信协议是REST API(代表性状态传输)。REST是API的架构设计模式,称为REST API或RESTful API

此网络通信协议允许服务直接通过HTTP进行通信。请求和响应以XML,HTML或JSON等标准格式处理。

REST是大多数微服务的自然选择,因为其中许多是Web应用程序。可以在必要时升级到HTTP / 2.0,从而减少了对其他协议(例如基于ProtocolBuffer和HTTP / 2.0的gRPC)的需求。

REST对微服务的好处

如果微服务在处理请求并等待结果时向其他微服务发出请求,则它是同步的。

同步通信协议意味着请求返回结果。REST支持同步通信协议,这意味着请求返回结果。

REST API非常适合微服务与客户端应用程序之间的快速通信,而网络延迟很少。REST是构建可扩展微服务的绝佳选择,因为它们是无状态的且模块化的。

REST模式允许客户端和服务器独立实现,而无需其他实体的知识。这意味着可以在不影响彼此的情况下修改任一侧的代码。

注意: Pact是一个很好的框架,用于以编程语言编写REST接口的测试。这将导致一个包含REST请求和预期响应的JSON文件。

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::2

Redis

Redis是一个开源的内存中数据结构存储。它是最流行的键值数据库或NoSQL数据库之一。尽管它是内存数据库,但它支持持久数据,主副本复制,并且与传统数据库系统相比,它的性能很好。

在持久模式下使用Redis,Redis通常用作应用程序的主数据库。在这种模式下,实体通过哈希操作存储。Redis通常建立在Spring Cloud或Spring Boot框架之上。

Redis对微服务的好处

众所周知,微服务必须使用数据库维护自己的状态。服务数据应与其他数据层隔离,以实现非耦合缩放。Redis满足了许多这些要求,包括低延迟的最终响应。

您的应用程序可以通过许多不同的方式来利用Redis。Redis可以用作缓存或服务的主数据库,因此广泛用于微服务体系结构。根据您的要求,Redis还可以充当消息代理或缓存。

Redis Streams还允许异步模式和双向通信。除了Spring Cloud Config,您还可以为微服务构建分布式配置模式。

Prometheus

Prometheus是最初由SoundCloud开发的开源系统监视和警报工具。它实现了多维数据模型,并提供了数据存储和数据抓取工具。数据作为键值对存储在内存缓存的文件中。

Prometheus使用一种简单的查询语言来构成任务监视的基础。这包括用于变更和统计的可视化功能。

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::3

Prometheus对微服务的好处

对于微服务而言,Prometheus对多维数据收集和查询的支持尤其强大。Prometheus还提供了可扩展的数据模型,该模型允许您将任意键值维附加到时间序列。

Prometheus以其简单的设计和创建极简应用程序的能力而闻名,因此Prometheus是简单的基于微服务的应用程序的理想选择。它对于分布式云原生环境也很有用。

注意:对于需要准确的秒数据抓取的情况,Prometheus不太适合。

Consul

Consul是一种服务发现技术,可确保微服务可以相互通信。它具有一些使其与其他服务发现解决方案区分开来的功能,包括:

  • 具有HTTP REST API并支持DNS
  • 使用Consul模板自动生成配置文件
  • 当运行状况检查失败时,它可以执行运行状况检查并将服务从服务发现中排除。

领事非常灵活。由于使用了DNS接口和Consul模板,它可以与许多技术一起使用。这在微服务的上下文中尤其重要。尽管系统从一开始就可能不需要使用多种技术,但是从长远来看,能够集成新技术是有利的。

微服务的好处

使用Consul设置微服务系统对于同步系统是一个不错的选择,因为其基础架构可以满足同步微服务的典型挑战:

  • 服务发现: Consul涵盖了此功能,对于将新技术集成到您的微服务中很有用。
  • 提高透明度: Consul是完全透明的,可以在不依赖任何代码的情况下使用。
  • 配置: Consul可用于配置微服务。服务发现和配置都可以实现。
  • 负载平衡:使用Consul DNS,Consul可通过DNS服务器透明地实现负载平衡。

对于每个微服务,Apache HTTPD必须在其配置文件中具有一个条目。为此,可以使用领事模板。Consul模板可确保在向Consul注册后即可从外部访问微服务。

注意: Consul是用Go编写的。监视和部署与Java微服务不同。

接下来要学什么

恭喜!您现在已经了解了构建微服务体系结构的前5种技术。使用这些工具将使您的开发和部署过程变得更加容易,并且它们可以支持高度可扩展的应用程序。

还有很多东西要学习,根据您的要求,其他顶级技术可能会有所帮助。您应该调查:

  • 与Atom的异步通信
  • 消息传递和卡夫卡
  • 用于服务发现的Erueka
  • Hystrix
  • PaaS与Cloud Foundry
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 构建微服务架构的5大技术

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论