cde

函数组合的 N 种模式

こ雲淡風輕ζ 提交于 2020-02-26 07:17:05
随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微服务“分而治之,合而用之”的精髓所在。本文以阿里云 函数计算 为例,试图全面介绍函数组合的常见模式和使用场景,希望有助于选择合适的解决方案。 虽然本文主要介绍的是函数组合,但是基本思想也可用于服务组合。 函数同步调用函数 在这种模式里,函数直接调用 InvokeFunction 同步 API 执行一个或者多个函数,等待被调用函数返回结果,然后继续执行。这是一个有些争议的模式,不使用同步调用通常有以下原因: 从费用的角度:由于函数计算按照函数实际执行时间收费,调用者在等待被调用函数返回前也会产生一定费用。 执行时长限制:由于函数最长执行10分钟,这就决定了调用的其它函数执行时间之和有限。 从容错的角度:被调用者出错会直接影响调用者,如果这个调用链很长,则这种错误会一直蔓延到最初的调用者,容错性较差。同时由于执行时长限制,调用者通常不容易针对错误做长时间重试。 上面的理由是在有些场景下成立的,但是微服务最经典最常见的组合方式就是同步调用,函数作为微服务的一种实现方式,这种同步调用的需求是不可回避的,在有些场景下采用同步调用模式是值得考虑的,这些场景包括:

基于名字自动发布之多进程(3)

*爱你&永不变心* 提交于 2019-12-10 11:49:30
基于名字自动发布之多进程(3) 项目地址: https://gitee.com/lookingdreamer/RexDeploy_v1 流程图 为什么选择多进程? 随着应用越来越多,单进程的运行已经严重的拖慢了速度.所以多进程就应运而生了.为什么不是多线程?因为rex本身的框架都是采用的多进程.且多进程相对多线程来说要稳定得多.项目本身也去尝试了多线程,但在兼容性上出现了问题.索性就全部按照多进程去设计和开发. 多进程构建思路 日常生活的比喻 假设商店最大容纳人数为5个人,一共有12个人.只能等前面5个人进去出来之后,后面的5个人才能进入,不足5个人的全部进去 转换为数学问题 将12个人编号为0到12号 #!/bin/perl my ($start,$maxchild,$max,%hash_pids) = (0,5,12) ; for(my $g=0; $g < $max ;){ $startIndex = $g ; $endIndex = $g + $maxchild; if($endIndex > $max){ $endIndex = $max; } $start = $start + 1 ; print("\r\n开始第$start次并发控制:($startIndex - $endIndex) \r\n"); for($i=$startIndex;$i<$endIndex;

基于ETL的抽取数据的报表实现

我们两清 提交于 2019-12-06 06:29:05
1、查询分析器 查询分析器主要工作是从不同来源的数据库中抽取对应指标值。 界面原型参考如下(仿 IREPORT): 图1 数据来源切换 2、报表科目与查询分析字段映射 图2 字段映射 这里,字段选择的地方增加一列,用作选择数据科目的映射。 图3 SQL最后修改 图形化界面生成SQL后,可以手工修改SQL,点击OK生成XML格式的数据抽取脚本。 3、ETL工具 我使用的是Scriptella,这个工具的好处是,我不用去把查找指定数据的SQL用xml工具去重新解析封装,这种设计对于后期的产品维护,二次开发省了不少事。 在Scriptella启动之前,我们可以通过查询分析器来指定数据连接的数据表,通过对表的查询,获取到表中的数据字段,字段类型等信息,接着,在系统界面中设置字段对应的数据科目,设置过程可以选择老版本的配置映射进行修改,保存后生产新的映射模板。 在所有模板设置完成以后,出发脚本生成事件,生成供Scriptella执行的XML脚本。 XML实例如下: <!DOCTYPE etl SYSTEM " http://scriptella.javaforge.com/dtd/etl.dtd "> <etl> <connection id="db1" url="jdbc:oracle:thin:@uri_1:1521:orcl" user="username" password=

.MD语法入门

一笑奈何 提交于 2019-12-03 20:20:44
转载地址: https://www.jianshu.com/p/399e5a3c7cc5 .md即markdown文件的基本常用编写语法,是一种快速标记、快速排版语言,现在很多前段项目中的说明文件readme等都是用.md文件编写的,而且很多企业也在在鼓励使用这种编辑方式,特别作为一个前端从业者更要学会使用这种语言。下面就简单和大家分享一些.md基本语法 一、基本符号:* - +. > 基本上所有的markdown标记都是基于这四个符号或组合,需要注意的是,如果以基本符号开头的标记,注意基本符号后有一个用于分割标记符和内容的空格。 二、标题 1.前面带#号,后面带文字,分别表示h1-h6,只到h6,而且h1下面会有一条横线 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 2.相当于标签闭合 # 一级标题 # ## 二级标题 ## ### 三级标题 ### #### 四级标题 #### ##### 五级标题 ##### ###### 六级标题 ##### 效果如下: 标题.png 三、列表 无序列表 //形式一 + a + b + c //形式二 - d - e - f //形式三 * g * h * i 以上三种形式,效果其实都是一样的: 无序列表.png 有序列表 //正常形式 1. abc 2. bcd 3.

Nginx 配置 root目录、虚拟目录alias

家住魔仙堡 提交于 2019-12-02 17:54:02
Nginx是通过 alias 设置虚拟目录,在Nginx的配置中,alias目录和root目录是有区别的。 alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的; root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的; 使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上 / 符号; alias虚拟目录配置中,location匹配的path目录如果后面不带 / ,那么访问的url地址中这个path目录后面加不加 / 不影响访问,访问时它会自动加上 / ;但是如果location匹配的path目录后面加上 / ,那么访问的url地址中这个path目录必须要加上 / ,访问时它不会自动加上 / 。如果不加上 / ,访问就会失败! root目录配置中,location匹配的path目录后面带不带 / ,都不会影响访问。 举例说明: 比如Nginx配置的域名是www.abcd.com 示例一 alias 虚拟目录配置,alias虚拟目录配置下,访问 http://www.abcd.com/huan/a.html 实际指定的是/home/www/huan/a.html; location /huan

AtCoder Beginner Contest 144 CDE题解

徘徊边缘 提交于 2019-12-02 13:34:13
Atcoder评测机没有ONLINE_JUDGE这个宏!! A,B巨水题 C - Walk on Multiplication Table Description 给一个数mul,求满足$x*y=mul \ && min\{x+y-2\}$ $mul \leq 10^{12}$ Solution 由均值不等式可知$x+y \geq 2*\sqrt{xy}$,给定xy,那么$min\{x+y-2\}$一定出现在$\sqrt{xy}$附近,扫一遍即可 1 #include <algorithm> 2 #include <bits/stdc++.h> 3 #include <cctype> 4 #include <cmath> 5 #include <cstdio> 6 #include <cstdlib> 7 #include <cstring> 8 #include <ctime> 9 #include <iostream> 10 #include <map> 11 #include <numeric> 12 #include <queue> 13 #include <set> 14 #include <stack> 15 #if __cplusplus >= 201103L 16 #include <unordered_map> 17 #include <unordered_set

oracle中的存储过程(实例一)

老子叫甜甜 提交于 2019-12-02 06:12:30
引子 这是测试环境存在了很久的问题。由于基础配置信息(如:代理人信息)不像生产环境有专人维护,常常会有数据过期,导致无法使用的情况。 而很多配置数据是在外围系统维护(如代理人信息,在销管系统)以往的解决办法: 1. 联系销售管理系统协助配置。 2. 审核通过后同步到核心,然后出单 问题点:因为需要其他人配合,有等待;碰到大量数据配置时对配置人员来说很麻烦。 1. 解决方案(版本1.1) 工具:数据库存过 思路:需要导入数据的表放在数据库中。遍历这些表,在遍历过程中先删除表中符合条件的数据,然后将生产环境符合条件的数据迁入到当前环境中 /*****************************************************************************\ * Name: P_IMPORT_CHA_DATA * PROCEDURE: 导生产环境基础数据(代理人信息) * Paramater: IC_C_CHA_CDE 代理人代码 * Programmer: lyt * Date: 2019/10/12 * Update: * 需导入表配置:T_IMPORT_TABLE WHERE C_MARK = '2'; * 维护dbquery中间库表结构:SELECT 'CREATE TABLE T_' || C_TABLE || ' AS SELECT *