当前位置: 首页 > news >正文

福州网站制作服务lnmpa安装wordpress

福州网站制作服务,lnmpa安装wordpress,临沧市建设局网站,软件定制外包公司前言 在后端开发中#xff0c;大家是否有遇到如下类型的开发场景 需要处理较多的异步事件需要的外部服务可靠性较低需要记录保存某个对象的复杂状态 在以往的开发过程中#xff0c;可能更多的直接使用数据库、定时任务、消息队列等作为基础#xff0c;来解决上面的问题。然…前言 在后端开发中大家是否有遇到如下类型的开发场景 需要处理较多的异步事件需要的外部服务可靠性较低需要记录保存某个对象的复杂状态 在以往的开发过程中可能更多的直接使用数据库、定时任务、消息队列等作为基础来解决上面的问题。然而即便如此在代码开发中也会有很多代码跟业务无关比如 外部服务低可靠性情况下的重试多异步事件下的程序逻辑组织等。最终会影响开发效率并且可能会降低代码后期的维护性。 针对上面的场景抽象为 工作流 模式的话可以减轻开发成本以及维护成本 工作流介绍 定义指业务过程的部分或整体在计算机应用环境下的自动化。是对工作流程及其各操作步骤之间的业务规则的抽象、概括描述。 主要解决的问题为了实现某个业务目标利用计算机在多个参与者之间按照某种预订的规则自动传递问文档、信息或者任务。 适用场景 工作流通常适用于有状态的、异步、长时间执行等特性的业务场景比较典型的场景包括 视频、音频、图片处理工作流订单、审批流程数据处理流水线自动化运维 常见工作流框架 工作流框架还是比较多的按照语言分类的话有 Java: jBPM、Activiti、SWFPHP: Tpflow、PHPworkflowGo: CadenceCadence由Uber开发并开源Maxim Fateev是Cadence的主架构师、TemporalMaxim Fateev为了推广Workflow编排引擎的商业化另立门户创建了Temporal Temporal 工作流基本概念 1、原理 在业务模块当中按规则编写 Workflow 流程以及其具体的 Activity并注册到 worker 当中启动 worker 外部⽤户触发 WorkflowTemporal 编排 workflow 形成⼀系列的 task 送到队列中worker 去队列取任务执⾏后将结果返回给Temporal。 举一个银行的流程示例 由四部分组成Start、Temporal Server、Worker、Bank Start工作流的创建者/发起者Temporal Server存储所有工作流的数据、状态的中间件整个工作依赖于该 server后续简写为TSWorker实际进行逻辑处理的执行者Bank官方给的示例可以理解为DB 具体的流程描述 启动 Temporal Server启动 Worker 监听TS循环获取待执行的工作流Start 创建一个工作流封装参数调用 sdk 的 api(rpc) 发送到 TSWorker 拉取到工作流开始逻辑处理 2、Workflow workflow 即表示工作流在 Temporal 中工作流是由函数或对象方法来实现工作流样例见下文。 一个 workflow 通常完成一个业务目标。同时当多个 workflow 中有同样的处理流程时可以封装为一个子的workflow来达到代码复用的目的。 2.1、工作流选项 启动Workflow的时候可以设置这个Wrokflow的执行超时时间以及失败后的重试次数、任务队列名等参数来更好的满足业务需求 支持的配置参数如下 workflowOptions : client.StartWorkflowOptions{ID:                       hello_world_  uuid.New(), //用于业务级别标识。不可能有两个一样的workflowId同时工作TaskQueue:                hello-world,               //活动任务队列。让收到任务的 Worker 知道下一步要执行哪一段代码。 Workflows工作流只能使用一个任务队列WorkflowExecutionTimeout: 10 * time.Minute,            //Workflow的最大运行时间包括失败后重试的时间。默认无限制WorkflowRunTimeout:       3 * time.Minute,             //单次运行的时间。默认值为 ExecuteTimeoutWorkflowTaskTimeout:      10 * time.Second,            //从Worker从任务队列拉取到Workflow任务到Worker开始执行Workflow的时间。如果超时Server会认为Worker已经挂掉会重新调度该Workflow给其他Worker默认值10sRetryPolicy: temporal.RetryPolicy{ //重试策略InitialInterval:        30 * time.Second,                         //初始间隔 描述第一次重试前需要等待多久。无默认值。如果提供重试策略则必须提供一个值。用例这用作退避系数乘以对抗的基本间隔时间BackoffCoefficient:     2,                                        //退避系数 描述退避系数表示多次重试时下次等待的时间是上次的多少倍。默认值设置为 2.0。回退系数为 1.0 表示重试间隔始终等于初始间隔。用例使用此来增加重试之间的时间间隔。通过具有回退系数前几次重试相对较快地发生以克服间歇性故障但随后的重检将发生越来越远的距离以考虑更长的持久中断。使用 maximum interval 最大间隔选项来防止系数过多地增加重试间隔。MaximumInterval:        5 * time.Minute,                          //最大间隔 描述下次重试时最大等待时间。默认值100*初始等待时间。用例这对于大于 1.0 的系数很有用因为它可防止间隔以指数级无限增长。MaximumAttempts:        1,                                        //最大重试次数 描述默认值0表示无限重试但在大多数情况下建议依靠执行超时来限制检索的持续时间而不是此选项。NonRetryableErrorTypes: []string{TemporalTimeout:StartToClose}, //表示Workflow遇到哪些Error后不再进行重试},} 2.2、Workflow Id 一个Workflow可由 命名空间Workflow Id 和 Run id 唯一标识 启动Workflow的时候可以指定一个ID这个ID一般采用业务级的ID如一个要处理的客户的ID或订单ID 2.3、定时运行 启动Workflow的时候可以设置为定时启动。 注意。如果到了下次运行Workflow的时候但上次的Workflow还没执行完可能任务执行耗时长或由于失败后重试等原因会跳过下次运行Workflow 2.4、查询工作流状态 we  client.GetWorkflow(workflowID)var result stringwe.Get(ctx, result) // 获取是阻塞的 3、 Activities Activities可以理解为一个业务操作单元。在Workflow执行过程中会将Activity放入消息队列由其他Worker获取后执行该Activity并将结果再返回给Workflow。 3.1、Activity 选项 1超时配置 ScheduleToStartTimeout表示Activity任务放到消息队列到Worker获取到的超时时间。如果超时后也不会触发重试不建议设置该值StartToCloseTimeoutActivity实际执行超时时间。如果Activity执行时间不确定最好按照最长时间设置。比如一个Activity可能需要2分钟、有时需要5分钟那就设置为5分钟ScheduleToCloseTimeout从Activity放入消息队列到Activity执行完成的时间HeartbeatTimeoutActivity和Server的心跳超时时间。在Activity运行需要较长时间时需要。用于Server检查执行 Activity的Worker 是否已经挂掉 2重试策略 和Workflow的重试策略完全一致 3执行时间超长的Activity 如果一个Activity运行时间较长最好设置一个心跳间隔超时。这样当执行Activity的Woker挂掉时Server可以及时知道 3.2、工作流代码有变化时如何更改 三种方法可供使用 基于任务队列的版本控制建议 更改新工作流的任务队列名让旧的 worker 继续运行可减少实例的数量知道全部执行优点概念简单缺点旧的 worker 长时间运行且不能当前正在运行的 bug基于工作流名称的版本控制Patch和GetVersion api  根据 SKD 的 api workflow.GetVersion() 分支运行的新旧工作流代码 优点兼容性好缺点长时间变更会引起使用上的歧义 4、Signal 对于正在运行的 WorkflowExecution可以发送携带参数的信号Workflow中可以等待或根据条件处理信号动态控制工作流的执行逻辑。示例 5、Child Workflows 考虑工作流执行事件历史大小限制需要对父 Workflow 做拆分。希望将每个子工作流执行视为单独的服务。示例 6、Selectors 类似Go的select允许goroutine等待多个通信。一个select块直到它的一个case可以运行然后执行。如果多个已准备就绪则随机选择一个。 Temporal 集群架构 前端组件Frontend Service 是一个单点网关提供 Proto API。可以接受来自浏览器、tctlTemporal的命令行工具、以及业务方的调用请求。主要用于接口限速、授权认证、校验和请求路由 记录服务History service 用于记录Workflow的执行状态并且支持横向拓展。 匹配服务Matching service 用于管理任务队列及任务分发并且支持横向拓展 后台服务Worker service 用于维护拷贝队列和执行一些Temporal服务自己的Wrokflow。 数据库 保存了用于分发的任务信息、以及Workflow的执行状态、命名空间元数据前端可视化配置 工作流样例 Golang SDK文档: Temporal Go SDK developers guide | Temporal DocumentationGolang 示例代码GitHub - temporalio/samples-go: Temporal Go SDK samples与正常业务代码对比Open Source Durable Execution Platform | Temporal Technologies 常用 API 使用示例代码 Workflow执行状态、结果查看 Temporal 官网提供了Web UI组建。可以通过浏览器查看Workflow的执行状态和结果 1、看个简单的 hello world 1worker 部分主要是做工作流的注册是执行 Activity、Workflow 逻辑的进程并将执行结果返回给 Temporal Server 点击此处展开... 2starter 部分发起工作流的进程 点击此处展开... 2、执行结果查看 1批量查看Workflow 进入Web UI首页即可查看最新的工作流执行状态列表 2查看单个Workflow详情 点击 Workflow ID可以查看单个workflow的执行详情。 如下下图显示可以看到Workerflow的开始时间、结束时间、执行结果状态、输入参数、输出参数、... 3查看单个Workflow的Activity的执行详情 Temporal 其他 工作流编排引擎选型 Temporal 部署 学习参考 源码仓库GitHub - temporalio/temporal: Temporal service官网文档Documentation | Temporal Documentation创始人Maxim讲解的Temporal详细原理https://www.youtube.com/watch?vt524U9CixZ0ab_channelTemporalTemporal分布式集群组件和原理What is a Temporal Cluster? | Temporal Documentation7分钟快速入门案例https://www.youtube.com/watch?v2HjnQlnA5eYab_channelTemporal3种使用场景详细介绍https://www.youtube.com/watch?veMf1fk9RmhYab_channelTemporal 其他资料 Open Source Durable Execution Platform | Temporal TechnologiesWhat is Temporal? | Temporal DocumentationGitHub - temporalio/docker-compose: Temporal docker-compose filesGitHub - temporalio/temporal: Temporal serviceGitHub - temporalio/helm-charts: Temporal Helm chartsGitHub - temporalio/samples-go: Temporal Go SDK samplestctl v1.17 command reference | Temporal DocumentationGitHub - temporalio/docker-builds: Temporal service Docker images buildGitHub - uber/cadence: Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.CadenceTemporal介绍_temporalio-CSDN博客Build durable applications with Temporal | Temporal DocumentationTemporal Go SDK developers guide | Temporal DocumentationJoeys Tech Notes BlogsWhat does Long Running really mean?https://news.ycombinator.com/item?id24216400Temporal Go SDK developers guide | Temporal Documentation
http://www.pierceye.com/news/217402/

相关文章:

  • 地区门户网站 wap appcdn接入wordpress出错
  • 网站建设为什么学flash最新新闻消息事件
  • 高端网站建设需要的人员配备编辑目录中的字体 wordpress
  • 电脑维修网站模板金融商城快捷申请网站模板下载
  • wordpress 本地建站教程化纤公司网站建设
  • 广州网站设计公司新闻给客户做非法网站
  • 微商城手机网站制作公司痞子 wordpress
  • 公司网站备案申请鹤山做网站
  • 南阳那里有做网站的聊城网站优化
  • 网站开发技术实验教程长沙网站托管公司排名
  • 美妆网站建设项目计划书软件开发培训班机构
  • 小视频网站怎么做seo网络优化师
  • 建个门户网站新手学编程用什么软件
  • 旅游网站建设规范wordpress用户注册协议
  • 淘宝客网站女装模板下载wordpress5 没有块引用
  • 35网站建设博客移动端网站模板
  • 卡盟网站建设公司品牌策划ppt
  • 自己如何做网站教程广州建网站有哪些
  • 网站建设 市场规模加强财政门户网站建设工作
  • wordpress 搭建多站点电子商务网站
  • 免费制作网页的网站万网租空间 网站
  • 上海 网站 备案ios开发网站app
  • 网站建设,h5,小程序众安保险
  • 大连网站建设资讯网站seo如何优化
  • 手表网站建设策划西地那非片怎么服用最佳
  • 常德网站设计英文版网站怎么做
  • 权威网站建设网站的工具
  • php手机网站模板厦门网站设计建设
  • 焦作集团网站建设做食品网站需要什么资质
  • 西北电力建设甘肃工程公司网站90设计电商模板