program code for Hands-On Microservices with Rust译 微服务简介 (第一章)

本章将向您介绍微服务的基础知识,包括微服务是什么以及如何将单片服务器分解为微服务。 如果您不熟悉微服务的概念,或者您从未使用Rust编程语言实现它们,那将非常有用。

本章将介绍以下主题:

什么是微服务?

如何将传统的服务器架构转变为微服务

Rust在微服务开发中的重要性

技术要求

本章没有任何特殊的技术要求,但现在是安装或更新Rust编译器的好时机。 您可以从Rust的官方网站获取此信息:https://www.rust lang.org/。 我建议您使用生锈工具,可以从https://rustup.rs/下载。

如果以前安装了编译器,则需要使用以下命令将其更新到最新版本:

rustup update

您可以从GitHub页面获取本书的示例:

https://github.com/PacktPublishing/Hands-On-Microservices-with-Rust-2018/。

什么是微服务?

现代用户每天都与微服务互动; 不是直接的,而是通过使用Web应用程序。 微服务是一种灵活的软件开发技术,有助于将应用程序实现为具有弱关系的独立服务的集合。

在本节中,我们将了解为什么微服务是一件好事以及为什么我们需要它们。 微服务遵循REST架构,该架构提供有关使用一致HTTP方法的规则。 我们还将研究如何将微服务部署到用户,这是他们的主要优势之一。

为什么我们需要微服务

微服务是一种现代软件开发方法,它指的是将软件分解为一套易于开发,调试,部署和维护的小型服务。微服务是微小的独立服务器,可作为单一业务功能。例如,如果您有一个作为整体的电子商务套件,您可以将其拆分为负责任的小型服务器并执行相同的任务。一个微服务可以处理用户授权,另一个可以处理用户的购物车,其余服务可以处理搜索功能,社交媒体集成或推荐等功能。

微服务可以与数据库交互或连接到其他微服务。为了与数据库交互,微服务可以使用不同的协议。这些可能包括用于消息传递通信方式的HTTP或REST,Thrift,ZMQ,AMQP,用于流数据的WebSockets,甚至是用于将它们与现有基础结构集成的老式简单对象访问协议(SOAP)。我们将在本书中使用HTTP和REST,因为这是提供Web API并与Web API交互的最灵活方式。我们稍后会解释这个选择。与单片服务器相比,微服务具有以下优势:

  • 您可以使用不同的编程语言
  • 单个服务器的代码库较小
  • 他们有一个独立的DevOps流程来构建和部署活动
  • 它们可以根据其实现进行扩展
  • 如果一个微服务失败,其余的将继续工作
  • 它们在容器内工作良好增加元件之间的隔离可以提高安全性
  • 它们适用于涉及物联网的项目
  • 它们符合DevOps理念,可以外包
  • 它们可以在开发后进行编排
  • 它们是可重复使用的
    然而,微服务存在一些缺点。 这些包括以下内容:
  • 太多的微服务会使开发过程过载
  • 您必须设计交互协议
  • 对于小型团队来说,它们可能很昂贵
    微服务架构是一种现代方法,可以帮助您实现松散耦合元素的目标。 这是服务器彼此独立的地方,帮助您更快地发布和扩展应用程序,而不是单一的方法,您可以将所有鸡蛋放在一个篮子里。

如何部署微服务

由于微服务是一个小而完整的Web服务器,因此您必须将其部署为完整的服务器。但由于它的功能范围很窄,因此配置起来也更简单。容器可以帮助您将二进制文件打包到操作系统的映像中,并具有必要的依赖性以简化部署。

这与monoliths的情况不同,在monoliths中,您有一个系统管理员来安装和配置服务器。微服务需要一个新的角色来执行这个功能 - DevOps。 DevOps不仅仅是一个工作角色,而是一个完整的软件工程文化,开发人员成为系统管理员,反之亦然。 DevOps工程师负责将软件打包并交付给最终用户或市场。与系统管理员不同,DevOps工程师使用云和群集,除了自己的笔记本电脑外,通常不会触摸任何硬件。

DevOps使用大量自动化,并通过交付流程的各个阶段承载应用程序:构建,测试,打包,发布或部署,以及监视工作系统。这有助于减少销售特定软件和发布新版本所需的时间。单片服务器使用大量自动化是不可能的,因为它们过于复杂和脆弱。即使您想将monolith打包到容器中,也必须将其作为大型捆绑包交付,并承担应用程序的任何部分可能失败的风险。在本节中,我们将简要介绍容器和持续集成。我们将在第15章“将服务器打包到容器”和第16章“Rust微服务的DevOps - 持续集成和交付”中详细介绍这些主题。

Docker

当我们引用容器时,我们几乎总是指Docker容器(https://www.docker.com/)。 Docker是用于在容器中运行程序的最流行的软件工具,容器是隔离的环境。

容器化是一种虚拟化,其中应用程序资源的范围有限。 这意味着应用程序以其最高性能水平运行。 这与完全虚拟化不同,完全虚拟化必须运行具有相应开销的完整操作系统,并在隔离的操作系统中运行应用程序。

Docker因各种原因而变得流行。 其中一个原因是它有一个注册表 - 您可以上传和下载带有应用程序的容器图像的地方。 公共注册中心是Docker Hub(https://hub.docker.com/explore/),但您可以拥有私有或许可软件的私有注册表

你可能感兴趣的:(program,code,for,Hands-On,Micr)