精华内容
下载资源
问答
  • 服务器编排是什么 现代云软件开发中的一种强大且成熟的趋势是实现以下组件: 单用途 小 独立部署 易于测试 然后将这些组件服务组合(或编排)为一个有凝聚力且组织良好的工作流,以完成更高级别的任务并...

    服务器编排是什么

    现代云软件开发中的一种强大且成熟的趋势是实现以下组件:

    • 单用途
    • 独立部署
    • 易于测试

    然后将这些组件服务组合(或编排)为一个有凝聚力且组织良好的工作流,以完成更高级别的任务并完成系统预期的业务或实际目的。

    具有独立的组件可以实现软件的可重用性和软件体系结构的解耦。 结果,整个系统可以更容易测试,扩展和维护。

    无服务器中的组合如何?

    组成无服务器功能(例如AWS Lambda )并不像听起来那样容易。 开发人员在无服务器功能中欣赏到的许多好处取决于某些属性。

    例如:

    >函数的高度可扩展性取决于其无状态属性按次计费模型(不会浪费空闲资源)仅因为函数是短暂的,按需运行且没有长时间运行的流程才有可能

    >使无服务器如此吸引人的相同属性也给服务组合带来了一些挑战。

    在功能组合体系结构中,我们希望至少满足三个原则:

    1)替代 :能够在不破坏系统其余部分的情况下替换(或扩展/修改)组件;

    2)隔离 :每个组件应该是一个黑盒子,任何服务都不应知道其他服务的实现细节;

    3)零浪费 :由于无服务器是按使用付费,因此我们希望避免出现双重计费情况(例如,在下文中有更多介绍)

    无服务器组成挑战

    让我们考虑一个简单的情况:用户创建一个免费帐户(不涉及付款)并订阅在线服务。 结果,应执行一些任务:

    将用户数据保留在数据库存储中发送消息以验证用户电子邮件地址通知网络挂钩以跟踪营销活动绩效(从潜在客户转换为订阅用户)

    如果这些任务中的每一个都应该由孤立的独立组件执行,那么我们应该如何协调它们呢?

    一个简单,简单的实现是在API后面运行一个功能,并按顺序协调所有其他任务。 接下来,我们将看到为什么这种实现方式不是最优的,但是请首先检查下图:

    恢复我们希望满足的三个原则:替代,隔离,零浪费。

    上面的实现不满足任何这些期望的属性。

    打破替代

    首先,这使得更换和扩展组件变得困难。 假设该系统已经运行了一段时间。 现在,还需要使用SMS验证用户的手机号码。 当CreateUser调用ValidateEmail函数时,它仅提供收件人的电子邮件地址,而不提供电话号码。 例如,我们不能仅用更通用的ValidateContacts来代替ValidateEmail。

    中断隔离

    其次,CreateUser函数必须知道其他服务以及它们的至少某些实现细节。 例如,必须意识到这些服务是作为Lambda函数实现的。 这破坏了隔离属性。

    打破零浪费

    最后,还有很多双重计费。 例如,当StoreUserData与后端数据库进行通信时,CreateUser在进入下一个任务之前一直处于空闲状态。 即使代码是异步实现的,仍然会有一定的延迟,在该延迟中,同时为多个功能计费。 这破坏了零浪费属性。

    考虑选项

    让我们找出在协调我们的功能时是否能够满足所有三个所需的原理。 我们将在下面介绍客户端和后端中几种不同的功能组合方法。

    应该避免其中的某些模式,建议使用其他模式,但它们都有自己的优势和劣势,应根据具体情况和用例进行考虑。

    客户端

    对于与UI(用户界面)具有某种交互作用的流程,业务流程逻辑可以嵌入客户端。

    在上面的用户订阅示例中,可以这样构造:

    客户端软件负责调用实现用户创建过程所需的每个端点。 可以并行执行所有调用,以加快最终用户的总体处理时间。

    但是,此模型有一些缺点和警告:

    缺乏可重用性

    客户端模型使代码的可重用性变得更加困难。 由于首先要实现可重用性,这是设计模块化组件体系结构的主要目的之一,所以它可能不适合我们的目标。

    编排过程是针对一种单一类型的客户端实施的:Web浏览器。 为此客户端实现的代码无法轻松地传输到后端无服务器环境中。

    例如,如果我们希望通过API或CLI(命令行界面)而不是浏览器UI支持通过编程方式创建帐户,该怎么办?

    有人可能会争辩: 在浏览器中运行的相同Javascript代码可用于NodeJS无服务器功能 尽管从技术上讲这是正确的,但是从体系结构的角度来看,这可能会导致错误的实现。

    通过将此客户端图体系结构移至后端无服务器功能,我们将回到与上述顺序模型相似的情况。 在此模型中,我们的构成无法满足我们所寻找的所有三个设计原则。

    难以处理一致性

    如果在创建帐户时StoreUserData函数无法访问数据库,该怎么办? 用户数据将保持待存储状态。 从数据库角度来讲,该帐户尚未创建。

    客户是否仍应请求验证电子邮件?Webhook是否仍应得到通知?

    这些决定都必须在客户端中做出,这增加了客户端上运行的软件的复杂性。 根据上述问题的答案,将不可能同时请求所有三个端点。 但是仅在三步顺序的API交互之后才响应用户可能太长。

    公开内部业务规则

    某些业务规则在理想情况下将保持私有状态,必须在客户端公开该业务流程才能在此处运行。 这是在客户端运行代码所固有的,无法真正解决。

    异步消息

    在另一篇文章中 ,我们更广泛地讨论异步消息传递,因此在这里我们将不详细讨论该概念。

    使用此架构可以满足所有三个原则:替换,隔离,零浪费。

    这种方法的缺点是当我们需要对工作流逻辑进行更细粒度的控制时。 与处理客户端模型中的一致性有关的相同问题也适用于此。 例如,如果某个步骤失败,则很难(甚至并非不可能)控制流程中其他步骤的行为方式。

    这并不意味着不应该使用此模式。 实际上,对于可伸缩和可维护的无服务器组合策略来说,它可能是最常用和成功使用的模式之一。 这并不是所有用例的理想选择。

    链式

    每个功能都可以连接起来,在每个任务执行结束后调用一个功能。 可以通过让API提前响应一条确认消息,即已接收到请求并正在处理请求,来减少最终用户的等待时间。

    不幸的是,该模型也违反了我们正在寻找的一些设计原则。

    在不影响系统其他部分的情况下,不可能轻松地更换组件。 换人了。

    不同的组件必须彼此了解,并且一些实现细节相互泄漏。 隔离断开。 不过,可以通过使用内部API网关消息队列作为组件之间的接口来解决此问题。

    最后一个原则是“ 零浪费” ,因为在此模型中不会出现二次计费。

    异步协调器

    这种模式涉及称为有限状态机(FSM)的概念的使用。 如果您不熟悉,请先阅读我们最近发表的介绍性文章,然后再继续。

    在FSM中,可以:

    轻松更换组件而不会破坏系统的其余部分使组件充当完整的黑匣子,而无需彼此了解或实现细节泄漏避免双重计费

    此模式的一些其他优点:

    并行运行多个任务在流程的特定步骤失败时轻松处理重试处理复杂的逻辑,例如:

    <code style="background: rgb(41, 41 , 46 ); color: rgb(239, 240 , 249 ); white-space: pre; margin: auto; padding: 0 px; border-radius: 2 px; font-size: inherit; vertical-align: 0 px; max-width: 100 %; line-height: 1.6 em;">if Step_1 returns True :
        run Step_2
    else:
        run Step_3
    </code>

    与上面讨论的异步消息传递一起,这是用于无服务器功能组合的最常用和成功使用的模式之一。

    尽管它难以实施,部署和测试,但它可以满足更复杂的工作流程的需求,同时仍可提供可扩展且可维护的体系结构设计。

    大多数云服务提供商将拥有FSM的托管/无服务器产品,从而大大简化了实施和维护。 例如,AWS具有StepFunctions服务。

    披露:我是 Dashbird (无服务器监视平台) 的开发人员倡导者 这篇文章最初发布在 Cloud Knowledge Base中

    参考资料和进一步阅读

    利用无服务器云计算架构(硕士论文) ,RTJ Bolscher

    无服务器功能的组成 ,作者:Olivier Tardieu

    FaaS编排系统的比较,作者:PedroGarcíaLópez,MarcSánchez -Artigas,GerardParís,Daniel Barcelona Pons,ÁlvaroRuiz Ollobarren和David Arroyo Pinto

    无服务器的三难困境:无服务器计算的功能组合 ,作者:Ioana Baldini,Perry Cheng,Stephen Jason Fink,Nick Mitchell,Vinod Muthusamy,Rodric M. Rabbah,Philippe Suter,Olivier Tardieu

    翻译自: https://hackernoon.com/production-ready-serverless-composition-and-orchestration-m04w36nj

    服务器编排是什么

    展开全文
  • docker compose服务编排

    2020-03-29 18:22:33
    docker compose服务编排 1、为什么要有服务编排 1、微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。...2、什么是服务编排 ...

    docker compose服务编排

    1、为什么要有服务编排

    1、微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
    2、要从Dockerfile build image 或者去dockerhub拉取image
    3、要创建多个container
    4、要管理这些container(启动停止删除)
     

    2、什么是服务编排

    按照一定的业务规则批量管理容器

     

    3、服务编排工具Docker Compose

    Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
    1、利用 Dockerfile 定义运行环境镜像
    2、使用 docker-compose.yml 定义组成应用的各服务
    3、运行 docker-compose up 启动应用

    4、安装Docker Compose

    # Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 

    curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose


    # 设置文件可执行权限 

    chmod +x /usr/local/bin/docker-compose


    # 查看版本信息 

    docker-compose -version


    5、卸载Docker Compose

    # 二进制包方式安装的,删除二进制文件即可

    rm /usr/local/bin/docker-compose

     

    6、案例

    使用docker compose编排nginx+springboot项目

    1、创建docker-compose目录

    mkdir ~/docker-compose
    cd ~/docker-compose

    2、编写 docker-compose.yml 文件

    version: '3'
    services:
      nginx:
       image: nginx
       ports:
        - 80:80
       links:
        - app
       volumes:
        - ./nginx/conf.d:/etc/nginx/conf.d
      app:
        image: app
        expose:
          - "8080"

    3、创建./nginx/conf.d目录

    mkdir -p ./nginx/conf.d

    4、在./nginx/conf.d目录下 编写test.conf文件

    server {
        listen 80;
        access_log off;
    
        location / {
            proxy_pass http://app:8080;
        }
       
    }
    

    5、在~/docker-compose 目录下 使用docker-compose 启动容器 

    docker-compose up

    6、测试访问

    http://192.168.149.135/hello

     

    展开全文
  • 9_服务编排

    2020-12-21 20:37:40
    是什么 微服务架构的应用系统中一般包含若干个...通过服务编排可以大量简化上面的工作服务编排:按照一定的业务规则批量管理容器 怎么玩 Docker Compose 是一个编排多容器分布式部署的工具,提供命令集中管理容器化

    是什么

    微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启 动停止,维护的工作量会很大。来看下我们日常工作:

    • 要从Dockerfile build image 或者去 dockerhub 拉取 image
    • 要创建多个 container
    • 要管理这些 container(启动停止删除)

    通过服务编排可以大量简化上面的工作服务编排:按照一定的业务规则批量管理容器


    怎么玩

    Docker Compose 是一个编排多容器分布式部署的工具,提供命令集中管理容器化应用的完整开发周期,包括服务 构建,启动和停止。使用步骤:

    1. 利用 Dockerfile 定义运行环境镜像
    2. 使用 docker-compose.yml 定义组成应用的各服务
    3. 运行 docker-compose up 启动应用

    1. 安装 Docker Compose

    curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
    

    2. 设置文件可执行权限

    chmod +x /usr/local/bin/docker-compose
    

    3. 查看版本信息

    docker-compose -version
    

    4. 卸载 Docker Compose

    rm /usr/local/bin/docker-compose
    

    编排 nginx+springboot

    安装之前的做法,我们需要使用先启动 nginx 容器 ,再启动 app 项目容器

    现在我们使用 docker-compose 进行管理编排,让它帮我们进行启动、停止或者删除

    需求: 使用 nginx 做反向代理,当我们 访问 192.168.77.130:80 时,映射到 app 容器

    1. 创建 docker-compose目录

    mkdir ~/docker-compose 
    cd ~/docker-compose
    

    2.编写 docker-compose.yml 文件

    编排 nginx 和 app 两个服务 ,nginx 服务使用到 nginx 镜像,当访问到 80 端口时,映射到 容器的 80 端口,同时链接到app ,对 nginx 配置文件进行挂载 [ 注意这里 conf.d 是目录 ],而 app 服务需要使用到 app 镜像,同时暴露容器端口 80

    version: '2'
    services:
       nginx:
        image: nginx
        ports:
         - 80:80
        links:
         - app
        volumes:
         - ./nginx/conf.d:/etc/nginx/conf.d
       app:
        image: app
        expose:
         - "80"
    

    3.创建./nginx/conf.d目录

    mkdir -p ./nginx/conf.d
    

    4. 在./nginx/conf.d目录下 编写app.conf文件

    当 nginx 监听其他主机访问 80 端口时,进行代理转发到 http://app:80/test

    这里的 app 指 app 服务

    server {
        listen 80;
        access_log off;
    
        location / {
            proxy_pass http://app:80/test;
         }
    }
    

    5. 在~/docker-compose 目录下 使用docker-compose 启动容器

    docker-compose up -d # -d表示已守护模式启动
    

    6.测试访问

    http://192.168.77.138:80
    

    当然,80 端口也可以省略
    在这里插入图片描述

    展开全文
  • 如何去管理诸多服务,不同环境中存在差异部分以及在系统运维阶段需要灵活变更的部分,这些都是服务配置管理中需要解决的问题。 通过应用编排产生的编排模版保存了每个服务本身具体的部署信息以及依赖关系,只需要在...

    随着服务数量的增多,对服务配置的管理也提出了更高的要求。如何去管理诸多服务,不同环境中存在差异部分以及在系统运维阶段需要灵活变更的部分,这些都是服务配置管理中需要解决的问题。

    通过应用编排产生的编排模版保存了每个服务本身具体的部署信息以及依赖关系,只需要在不同环境下修改环境对应的配置,即可以通过应用模板实现在新环境应用的快速部署。

    通过编排可以实现应用的快速克隆、应用的多环境部署以及应用市场等功能。

    东软SaCa Aclome云管理平台支持云上管理

    转载于:https://www.cnblogs.com/jiangshanhot/p/10414182.html

    展开全文
  • 如何通过网关做服务编排

    千次阅读 2019-10-21 12:18:09
    什么是服务编排/数据聚合? 服务编排/数据聚合 指的可以通过一个请求来依次调用多个微服务,并对每个服务的返回结果做数据处理,最终整合成一个大的结果返回给前端。 例如一个服务“查询用户预定的酒店”,前端...
  • 最终的结果,如果你在微服务架构中运维或开发,那么很有可能你花了不少时间去了解服务到底干了什么。 采用微服务后,大型系统中存在大量服务,问题随之而来——必须针对每个服务单独处理安全性、负载均衡、监控和...
  • 是什么? handoff( )是一个命令,可让您快速编排无服务器平台(例如AWS Fargate)上的数据管道。 在无服务器平台上进行部署使您无需管理服务器和为虚拟机支付费用。 无服务器配置可能非常复杂,因此移交将在...
  • 使用Docker Compose不再需要使用shell脚本来启动容器,而使用服务编排的方式来管理容器。 Docker Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-...
  • 服务治理和容器编排

    2019-04-23 14:38:00
    服务治理是什么 定义 服务治理(SOA governance),按照Anne Thomas Manes的定义是:企业为了确保事情顺利完成而实施的过程,包括最佳实践、架构原则、治理规程、规律以及其他决定性的因素。服务治理指的是针对SOA的...
  • 什么是服务编排/数据聚合? 服务编排/数据聚合 指的可以通过一个请求来依次调用多个微服务,并对每个服务的返回结果做数据处理,最终整合成一个大的结果返回给前端。 例如一个服务“查询用户预定的酒店”,前端...
  • Fizz Gateway是什么? Java中的管理API网关。 Fizz Gateway是一个基于Java开发的微服务网关,能够实现热服务编排,自动授权选择,在线服务脚本编码,在线测试,高性能路由,API审核管理等目的,拥有强大的自定义...
  • 什么是运维编排服务? 阿里云运维编排服务(Operation Orchestration Service,简称OOS)云上的自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域...
  • 是什么 解决了什么问题 它如何解决 相应的解决工具 协调和服务发现 (Coordination &Service Discovery ) 是什么 解决了什么问题 它如何解决 备注: 相应的解决工具 远程过程调用(RPC) 是什么 解决了...
  • 目录 一.docker-compose简述 二....什么是docker-compose compose定义和运行多容器的Docker应用程序的工具。使用compose可以使用YAML文件来配置应用程序。然后,使用单个命令,就可以创建并...
  • 基于用户友好的Docker的持续集成和与Node.js的编排以前在 文档可在 礼宾部做什么? 它可以管理本地或远程Docker主机 提供一个简单的Web UI,用于控制容器,主机,图像和应用程序 从Git存储库分支或标签构建Docker...
  • Chef一直领先的开放源代码工具,在过去的十年中,该工具用于自动化服务器的配置和配置。 近年来,该公司将InSpec和Habitat添加到了投资组合中,这些开源项目分别自动执行策略合规性测试以及应用程序的部署和配置。...
  • 什么是终端服务网关服务器?

    千次阅读 2010-07-09 15:26:00
    终端服务网关(TS 网关)服务器这样一种网关,它允许授权的用户从具有 Internet 连接的任何计算机连接到公司网络中的远程计算机。TS 网关使用远程桌面协议 (RDP) 和 HTTPS 协议帮助创建一个更安全的加密连接...
  • Goku API Gateway基于Golang的微服务网关,可实现高性能的动态路由,服务编排,多租户管理,API访问控制等。它也适用于微服务系统下的API管理。 Goku提供图形界面和插件系统,使配置更容易,扩展更方便。 摘要/ ...
  • Docker Compose容器编排

    2020-11-18 10:07:53
    什么是Docker Compose?有什么作用?2.使用Docker Compose三个步骤 Docker Compose容器编排详解 1.什么是Docker Compose?有什么作用? Docker Compose 的前身Fig,它一个定义及运行多个容器的工具 使用Docker ...
  • 什么我们用这种方式分离数据? 由于这些不同种类的数据资产,内容数据,软件数据和配置数据的周期类型不同,我们的数据分离方案旨在减少每种资产的数据有效负载大小。 它允许一个独立于其他两种数字资产的增量...
  • Goku API网关基于Golang的微服务网关,可实现高性能的动态路由,服务编排,多租户管理,API访问控制等。它也适用于微服务系统下的API管理。 Goku提供图形界面和插件系统,使配置更容易,扩展更方便。 摘要/ 为...
  • 这篇文章主要来聊一聊jenkins,可说道jenkins,我没有办法不把它与持续集成(Continuous integration,简称CI)联系到一起,所以我先来谈谈什么是持续集成以及为什么需要持续集成? 我举个生活中的直观例子,最近...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 667
精华内容 266
关键字:

服务编排是什么