跳到主要内容
版本:v1.3

基础环境概述

微服务体系说明

微服务定义

微服务架构是一种将服务器应用程序生成为一组小型服务的方法,主要面向后端,虽然该方法也可以用于前端。每个服务在自己的进程中运行,并使用 HTTP/HTTPS, WebSocket或 AMQP 等协议与其他进程通信。每个微服务在特定的上下文边界内实现特定的端到端的领域或业务功能。 每个微服务都必须独立开发,并且可以独立部署。 通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应。

微服务的大小不应成为重点,重点应该是以创建松散耦合的服务,以便可以独立的进行开发、部署与缩放。在设计微服务时,只要与其他微服务不存在过多的直接依赖项,就应该尝试让他们尽可能的小。相对于服务的大小,更重要的时要高内聚,独立于其他服务。

为服务体系架构提供了长期的灵活性,允许基于多个独立的可部署服务创建应用,在复杂、大型和高度可缩放的系统中能够提供更好的可维护性。

另外一大优势是可独立进行横向的扩展。可以横向扩展特定的微服务,而无需将整个应用程序作为一个单位扩展,这样就可以很方便的单独缩放需要更多CPU处理能力、网络、存储等资源的功能区域。

微服务体系架构部署上会更灵活。传统部署方式下,需要克隆整个应用程序的方式进行缩放。在微服务方式下,功能会分离到较小的服务中,每个服务都可以独立缩放。微服务方法允许对每个微服务进行灵活更改和快速迭代。

为什么选择微服务?

传统的巨大单体应用程序在部署和运行时,需要单台服务器具有大量内存和其他资源。 巨大的单体应用必须通过在多个服务器上复制整个应用程序来实现横向扩展,因此其扩展能力极差; 此外,这些应用程序往往更复杂,各个功能组件紧耦合,使得维护和更新更加困难

来也私有部署产品众多,且编程语言不同,在这种情况下,传统的MVC架构想单独升级应用的一个功能组件,就会有“牵一发而动全身”的困扰。而采用微服务的模式,仅需要单独升级拆分后的功能组件即可。

基础环境介绍

tip

企业版部署将会在您提供的服务器中安装但不限于以下服务,作为基础环境支持

  • Docker

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公有云,私有云还是单机等。Commander或Mage模块以Docker镜像方式部署并提供服务。

  • Kubernetes

Kubernetes又简称为k8s,主要是用于自动部署、扩展和管理“容器化应用程序”的开源系统。 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。是一种可自动实施容器操作的开源平台。它可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。也就是说,您可以将运行 Linux 容器的多组主机聚集在一起,由 Kubernetes 帮助您轻松高效地管理这些集群。k8s的目标就是简单并且高效部署容器化应用,可提供应用部署、规划、更新维护等机制。

  • harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。 作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。Docker镜像存储在Harbor服务器上。

  • Istio

Istio管理服务之间的流量,实施访问政策并汇总遥测数据,而不需要更改应用代码。Istio 以透明的方式对现有分布式应用进行分层,从而简化了部署复杂性。网络运营商可以通过一致的方式管理其所有服务的网络,而不会增加开发者开销。实现 Canary 版发布等最佳做法并深入了解应用,以便确定应该集中关注何处以提升性能

  • Minio

MinIO 是一款高性能的对象存储,与 Amazon S3 云存储服务兼容。自成立以来,MinIO的软件定义套件在公共云、私有云和边缘云中无缝运行,使其成为混合云和多云对象存储领域的领导者。MinIO号称是世界上最快的对象存储服务器。在标准硬件上,对象存储的读写速度分别为183gib/s和171gib/s。对象存储可以作为主存储层,用来处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品

MysqlRedisRabbitmqNginx等均会集成部署在服务器中

info

值得注意的是,如果您可以提供对应版本的中间件服务,我们的应用也支持连接