首先,什么是微服务?微服务是将应用程序拆分为多个服务的一种架构类型,这些服务具备构成整个应用程序的细粒度功能。每个微服务将具备针对您的应用程序的不同逻辑功能。与应用程序的所有组件和功能都在单个实例中的单体架构相比,微服务是应用程序架构领域一种更为现代的方法。您可以参考下图中单体架构与微服务架构的比较情况。
我们要将微服务放置在哪里?在容器中。容器是存放软件的包,里面包含运行软件所需的一切内容,比如代码、依赖关系、库、二进制文件等等。 Docker 是一种构建和运行容器的流行工具,但是 Kubernetes 正快速成为行业标准,用于编排企业环境中的多个容器。与虚拟机相比,容器可以共享操作系统内核,而不是像在一个主机上构建多个虚拟机那样拥有完整的副本。虽然可以将微服务放置在多个虚拟机中,但在这种情况下通常会使用容器,因为容器占用的空间更少,启动速度也更快。
微服务架构是为解决人们在单体应用程序中遇到的问题而创造的。微服务已被广泛使用,一些大型网站已将他们的单体应用程序转变为微服务。使用微服务架构的一些好处是:
在使用微服务解决单体架构的一些问题时,每种微服务都存在一系列问题。如果您试图将单体应用程序拆分为微服务,那么第一个挑战就是如何拆分。您可以选择将它们拆分为多个业务功能,比如一个微服务处理批次,另一个微服务处理支付服务。最后,您的组件应该只具有一小部分的功能或责任。
我在微服务架构中看到的一些问题如下:
利用IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。了解所有细节并确定如何开始。如果您不熟悉 IBM Cloud,请查阅 developerWorks 上的 IBM Cloud Essentials 课程 。
Kubernetes 是一个容器编排平台,支持部署、扩展和管理所有容器。它可以自动部署容器化的微服务。这就更便于管理应用程序的所有组件和微服务。您可能会希望了解 Docker 如何实现微服务容器化。IBM 公开发布了产品 IBM Cloud Kubernetes Service ,可以为您管理集群。
Istio 能够解决微服务中的一些弊端。Istio 是一种服务网格,可进一步帮助您管理微服务。Istio 可以安装在 Kubernetes 之上,帮助您跟踪和监控微服务。同时,还可以帮助您快速跟踪应用程序中可能存在的错误和缺陷。Istio 还可以管理微服务的流量,比如管理和控制流动。可以轻松配置路由。Istio 也可以在微服务中提供安全保障,比如采用相互 TLS,或限制它访问外部服务。您也可以将 Istio 安装到 IBM Cloud Kubernetes Service 上。
根据我的个人经验,使用容器编排平台是通过微服务构建应用程序的必要条件。Kubernetes 是广受开发人员欢迎的一种平台,因为它可以快速将应用程序从开发阶段带入生产环境。更棒的是,它是开源的!
对于开始构建自己的应用程序的开发人员来说,他们应该确定使用微服务是否比使用单体应用程序对他们更有利。他们应该考虑应用程序的长期易用性和可扩展性。从单体架构着手完全没有问题,但是一旦应用程序规模扩大,将它们拆分为微服务的难度只会更大。在这种情况下,在初期开发阶段就从微服务开始显然会更加有利。对于现有的单体应用程序,开发人员应该考虑以何种方式分离应用程序中的哪些组件。
尽管存在一些弊端,但微服务在开发人员和企业中仍然很受欢迎,因为微服务对于应用程序和满足用户需求都极为有利。一旦使用了合适级别的微服务,借助它的灵活性,开发人员和企业就可以快速开发或更新应用程序。
本文翻译自: Why should you use microservices and containers? (2018-11-01)