system: [SYSTEM]

user: 4. 在线交易服务速度的计算 4.1. 服务速度估算的基本思想 在第3节中，我们将交易请求到达速度、交易请求响应时间、服务器个数和服务速度这四者统一到公式(4)中。然而本文的研究动机是服务器配置的决策，实现这一目标的先决条件就是要求出服务速度的值，因为无法通过简单的变换和解析方法，直接将公式(4)中的服务速度 μ 计算出来。为此，我们通过反复迭代的数值计算方法，以便近似估算服务速度 μ 。 数值计算方法的本质是将可能的备选值不断代入目标计算公式，迭代逼近目标解。一般地，不断迭代不断修正，有限次迭代之后，可以得到解的近似值。针对公式(4)，我们可以发现，响应时间w和服务速度 μ 两者存在着负相关的关系，即随着 μ 的单调递增，w会跟着单调递减。遵循这个思想，合理控制 μ 的递增步长，在已知响应时间w和到达速度，以及保证求解精度的前提下，我们可以得出服务响应速度的估算值。具体地，在第一次迭代的时候，对 μ 设置一个初值，即一个比较小的值，不妨令 μ = λ ，代入到公式(4)中，计算出其对应的响应时间；如果不符合精度要求，则将 μ 增加一个步长 Δ τ ， Δ τ 是一个很小的值，确保不会引起计算震荡和发散；然后进入下一轮的迭代计算。 在每一次的迭代过程中，需要利用中间变量 α ，因此需要先求出中间变量 α 。 α 的计算过程较为复杂，下面阐述 α 的求解过程。 正如公式(5)，由于 α 为函数 f ( α ， μ ， λ ， c ) = 0 的解，并且在区间(0，1)存在唯一解，而 α 是变量 μ 、 λ 和c的隐函数，并且公式(5)中包含二重积分，我们采用数值积分的方法来近似求出积分值。一般地，常用的数值积分方法有两类，分别为基于梯形法和基于拉格朗日插值法的数值积分方法，两者计算复杂度相近，而后者在精度上高于前者。因此，本文将采用基于拉格朗日插值法的数值积分方法来计算函数 f ( α ， μ ， λ ， c ) ，其主要思想是用拉格朗日插值多项式代替被积函数，通过级数求和近似代替定积分。参考和引用文献 [ 13 ] 中方法，可以得到下面公式(6)。 f ( α ， μ ， λ ， c ) ≈ ∑ j = 0 n − 1   ∑ i = 0 n − 1 [ − α + x i 2 − x i λ y j − σ 2 y j 2 2 π σ 3 y j 4 e − ( ( x i − λ y j ) 2 2 ( σ y j ) 2 + ( c μ − c μ α ) y j ) ] a i b j (6) 不妨取n × n个插值点均匀分布在(0，0)到(1，1)的矩形积分平面上，由此令 x i ， i ， j = 0 ， 1 ， ⋯ ， n − 1 ，为均匀分布在横坐标(0，1)上的n个点，有 x i = ( 2 i + 1 ) / 2 n 。同理，令 y j 为均匀分布在纵坐标(0，1)上的n个点，有 y j = ( 2 j + 1 ) / 2 n 。 x i 和 y j 组合即可构成n × n个插值点。由公式(6)可知， f ( α ， μ ， λ ， c ) 近似于其积分平面内n × n个插值点的被积函数值乘以求积系数 a i 和 b j 的和，其中系数 a i 和 b j 为最高次数为n + 1的多项式，其形式如下所示。 a i = ∫ 0 1 ∏ k = 0 k ≠ i n − 1 x − x k x i − x k d x (7) b j = ∫ 0 1 ∏ k = 0 k ≠ j n − 1 y − y k y j − y k d y (8) 4.2. 服务速度的数值计算算法 根据4.1节已经论述服务速度的数值计算的一般过程和基本方法，在线交易服务速度反复迭代的数值计算算法的伪代码如下： 算法1：服务速度计算算法Service Speed Compute，简写为SSC 输入：交易请求平均响应时间w秒，交易请求平均到达速度 λ 个交易请求/秒，服务器个数c，收敛精度控制参数 ϵ ，服务速度自增步长 Δ τ ，坐标轴的插值节点个数n，计算期间参数自增步长 Δ ξ ，交易请求到达离散程度 σ ； 输出：单个服务器的服务速度 μ ，单位为“交易请求数/秒” SSC() { μ ← λ ， t ← 2 w ;//服务速度、平均响应时间初始化 while t>w//不满足平均响应时间要求，循环迭代计算 μ 值 { f ← 2 ϵ ， α ← Δ ξ ， μ ← μ + Δ τ ；//公式(6)中变量赋予初值，调整 μ 值 while | f | > ϵ //每次迭代计算中间参数 α 值，当 | f | ≤ ϵ 时，得到一个 α 值 { f ← 0 ， α ← α + Δ ξ ;//按照增量 ξ ，调整 α 值 for i = 0 to n-1 {for j = 0 to n-1 { a _ d e ← 1 ， a _ n u ← 0 ， b _ d e ← 1 ， b _ n u ← 0 ; for d = 0 to n-1 { a _ d e ← a _ d e × ( 2 i + 1 2 n − 2 d + 1 2 n ) ; //计算 a i 的分母 b _ d e ← b _ d e × ( 2 j + 1 2 n − 2 d + 1 2 n ) ;//计算 b j 的分母 for p = 0 to n-d //生成 k q 所有可能的值 {for q = 0 to n-1 {if p ≤ q ≤ p + d − 1 k q ← 0 ; else k q ← 1 ; } a _ n u ← a _ n u + ( ∏ q = 0 q ≠ i n − 1 ( − 2 × q + 1 2 n ) k q ) / ( d + 1 ) ;//计算 a i 的分子 b _ n u ← b _ n u + ( ∏ q = 0 q ≠ j n − 1 ( − 2 × q + 1 2 n ) k q ) / ( d + 1 ) ;//计算 b j 的分子 } } a i ← a _ n u / a _ d e ， b j ← b _ n u / b _ d e ; x i ← 2 i + 1 2 n ， y j ← 2 j + 1 2 n ; s ← x i 2 − x i λ y j − σ 2 y j 2 2 π σ 3 y j 4 e − ( ( x i − λ y j ) 2 2 ( σ y j ) 2 + ( c μ − c μ α ) y j ) − α ; f ← f + s × a i × b j ;//按公式(6)计算 }// for j } // for i }// while | f | > ϵ t ← α c c μ ( 1 − α ) 2 + 1 μ ;//将 μ 和 α 代入公式(4)，求出响应时间t } // while t>w return μ ; } 4.3. 实际求解结果 我们的研究工作是以项目：“金融大数据实时流式计算及存储架构研究”为背景，旨在针对金融领域产生的大数据进行实时的流式计算，并对其进行高效存储和管理，提出适应于金融大数据的计算模型和存储架构。根据项目具体要求，有交易请求到达的平均速度 λ = 10000 个/秒，并且要求交易系统的平均响应时间 w ≤ 2 秒。我们不妨令 σ = 100 ，收敛精度控制参数 ϵ = 0.1 ，坐标轴的插值节点个数 n = 10 ，服务速度自增步长 Δ τ = 1 ，计算中间参数自增步长 Δ ξ = 0.1 。 4.3.1. 单机环境服务速度的计算 单机环境中，交易系统由一台服务器构成。在单机环境中，交易系统的所有交易请求都由一台服务器处理，因单个服务器较为容易管理，这种情况一般存在于对于性能要求不高的业务场景，多为交易系统起步时的配置。然而随着用户数的增长，旧有的单台服务器难以承受交易请求到达数量增加带来的压力，服务器配置的更新便提上了日程。在购买新的服务器时，我们期望新的服务器能够拥有更快的服务速度，使之能够在单位时间内处理更多的交易请求。由此，在单机环境中，我们的项目更为关注服务器的服务速度。因为现实应用中要求交易请求的到达的平均速度 λ = 10000 个/秒，并且要求交易系统的平均响应时间 w ≤ 2 秒，为了计算服务器的服务速度，我们不妨调用算法1：SSC，则可得到交易系统要求的服务速度 μ ≈ 11500 个交易请求/秒。 4.3.2. 集群环境服务速度的计算 集群环境中，交易系统由多台服务器构成。在集群环境中，交易系统的所有交易请求会由多台服务器处理。在单机环境的服务器配置的更新换代到达瓶颈时，交易系统一般会转为应用多台服务器。然而随着业务场景的复杂度的进一步加深，用户数的进一步的增长，旧有的多台服务器难以承受日益增加的压力，我们不得不考虑增加服务器的数量，或者提升服务器的配置。在增加服务器的数量或者提升服务器的配置时，我们期望新的服务器集群能够拥有更快的服务速度。由此，在集群环境中，我们的项目同时关注服务器的服务速度和服务器的数量。又因集群环境中，交易系统的服务器数量可以有很多的选择，而在确定不同数量的服务器个数之后，服务速度的计算方式都是相同的。当目标服务器个数c = 2时，我们只需要调用算法1即可求得每台服务器的服务速度。与之类似，当c等于4，8乃至100等情况时，服务速度的计算方式都是相同的，事实上配置任意个服务器的数量都可以，原理是相同的。为了方便讨论，不失一般性，本文关于集群的服务速度的计算，不妨假设服务器个数c = 8，因为这是交易计算中心最基本的配置和做法，因此我们以c = 8为典型例子。因为现实应用中要求交易请求的到达的平均速度 λ = 10000 个/秒，并且要求交易系统的平均响应时间 w ≤ 2 秒，为了计算服务器的服务速度，我们不妨调用算法1：可得到每台服务器的服务速度 μ ≈ 1450 个交易请求/秒。