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/),但您可以拥有私有或许可软件的私有注册表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rust语言是一种现代的、系统级别的编程语言,它的功能编程特性能够帮助开发者构建高效、安全且可维护的软件。 在Rust中,函数是一等公民。这意味着函数可以直接作为参数传递给其他函数,也可以作为返回值返回。这种特性为函数式编程风格提供了非常好的支持。函数式编程的一个重要思想是将程序划分为独立的函数,并通过将这些函数组合在一起来解决问题。在Rust中,我们可以使用闭包、高阶函数和map、filter等操作来实现函数式编程。 在Rust中,还提供了一些功能编程的工具,比如模式匹配。模式匹配是一种非常强大的工具,它允许我们根据不同的情况执行不同的逻辑。我们可以使用模式匹配来处理多种可能的情况,避免繁琐的if-else语句,提高代码的可读性和可维护性。 此外,Rust中的所有权和借用系统也是支持函数式编程的重要特性。所有权系统确保在编时检查内存安全,避免了常见的内存错误,如空指针引用和多线程竞争。借用系统允许我们以非常安全的方式共享数据,通过引用和生命周期来处理数据的所有权和访问。 通过结合Rust的功能编程特性,我们可以编写高效、可维护和安全的软件。无论是使用闭包进行抽象,还是使用模式匹配来处理复杂的逻辑,都能够为我们提供更好的工具。Rust语言的这些功能编程特性可以帮助开发者在实践中更好地理解和应用函数式编程的原则和模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值