本文为翻译文章,点击查看原文。
说明
开发人员正在摆脱大型单体应用的束缚,转而采用小巧而专一的微服务,以加速软件开发并加强系统弹性。为了满足这个新生态的需求,开发人员需要为部署的微服务创建一个具有负载均衡、高级流量管理、请求跟踪和连接功能的服务网络。
概述
如果您花时间开发过应用程序,那么有件事情您肯定明白:单体应用正成为过去。当今的应用程序都是关于服务发现、注册、路由和连接。这给微服务的开发和运维人员提出了新的挑战。
如果您的服务网格在规模和复杂性上不断增长,您可能想知道如何理解和管理服务网格。我们也遇到了同样的问题:如何使这些越来越多的微服务能够彼此连接、负载均衡并提供基于角色的路由?如何在这些微服务上启用传出流量并测试金丝雀部署?仅仅创建一个独立的应用程序还不够,所以我们该如何管理微服务的复杂性呢?
Istio 是 IBM、Google 和 Lyft 合作创建的项目,旨在帮助您应对这些挑战。Istio 是一种开放技术,它为开发人员提供了一种这样的方式:无论是什么平台、来源或供应商,微服务之间都可以无缝连接,服务网格会替您管理和保护微服务。在下面的开发之旅中,您将了解如何通过 Istio 基于容器的 sidecar 架构提供复杂的流量管理控制功能,它既可用于微服务之间的互通,也可用于入口和出口流量。您还将了解如何监控和收集请求跟踪信息,以便更好地了解您的应用流量。此次开发者之旅对于所有使用微服务架构的开发人员来说都是理想之选。
流程
IStio部署和使用流程图
BookInfo
由四个微服务组成。该应用中的微服务使用不同的语言编写——Python、Java、Ruby 和 Node.js。Reivew
微服务使用 Java 编写,有三个不同的版本。Review
微服务的 v1 版本和 v3 版本各获得 50% 的流量;v2 版本仅对特定用户启用。Review
微服务的所有流量对 Rating
微服务的访问,用户需要创建 Mixer 规则。Bookinfo
创建一个外部数据源;例如 IBM Cloud 中的 Compose for MySQL 数据库。BookInfo
应用程序中的三个微服务——Details
、Ratings
和 Review
,已修改为使用 MySQL 数据库。要连接到 MySQL 数据库,需要在 Details
微服务中添加了一个 MySQL Ruby gem;向 Ratings
Node微服务中添加 MySQL 模块。将 mysql-connector-java
依赖项添加到 Reviews
微服务 v1、v2 和 v3 版本中。查看该示例中的代码:https://github.com/IBM/microservices-traffic-management-using-istio