精华内容
下载资源
问答
  • 新老系统迁移及整合方案

    千次阅读 2018-10-17 17:23:58
    本次系统是在原有系统的基础上...本章将针对新老系统迁移和整合提出解决方案。   1.1 新老系统迁移及整合需求分析   系统迁移又称为系统切换,即新系统开发完成后将老系统切换到新系统上来。 系统切换得主要...

    本次系统是在原有系统的基础上开发完成,因此,新旧系统间就存在着切换的问题。另外,新开发的系统还存在与其他一些应用系统,例如,企业信用联网应用系统、企业登记子网站、外资登记子网站等系统进行整合使之成为一个相互连通的系统。本章将针对新老系统迁移和整合提出解决方案。

     

    1.1 新老系统迁移及整合需求分析

     

    系统迁移又称为系统切换,即新系统开发完成后将老系统切换到新系统上来。

    系统切换得主要任务包括:数据资源整合、新旧系统迁移、新系统运行监控过程。数据资源整合包含两个步骤:数据整理与数据转换。数据整理就是将原系统数据整理为系统转换程序能够识别的数据;数据转换就是将整理完成后的数据按照一定的转换规则转换成新系统要求的数据格式,数据的整合是整合系统切换的关键;新旧系统迁移就是在数据正确转换的基础上,制定一个切实可行的计划,保证业务办理顺利、平稳过渡到新系统中进行;新系统运行监控就是在新系统正常运转后,还需要监控整个新系统运行的有效性和正确性,以便及时对数据转换过程中出现的问题进行纠正。

    系统整合是针对新开发的系统与保留的老系统之间的整合,以保证新开发的系统能与保留的老系统互动,保证业务的顺利开展。主要的任务是接口的开发。

    1.1.1 需要进行整合的系统

    需要与保留系统整合的系统包括:

    1、企业登记管理(含信用分类),全国企业信用联网统计分析,不冠行政区划企业名称核准,大屏幕触摸屏系统与企业信用联网应用,企业登记子网站,属地监管传输,网上业务受理之间的整合;

    2、外资企业登记管理(含信用分类),全国外资企业监测分析与属地监管传输,外资登记子网站,网上业务受理,大屏幕触摸屏系统之间的整合;

    3、广告监管系统与广告监管子网站之间的整合;

    4、12315数据统计分析与12315子网站之间的整合;

    5、通用信息查询、统计系统与数据采集转换之间的整合;

     

     

    1.1.1 需要进行迁移的系统

    1.1.2 需要进行整合的系统

     

    需要与保留系统整合的系统包括:

    1、企业登记管理(含信用分类),全国企业信用联网统计分析,不冠行政区划企业名称核准,大屏幕触摸屏系统与企业信用联网应用,企业登记子网站,属地监管传输,网上业务受理之间的整合;

    2、外资企业登记管理(含信用分类),全国外资企业监测分析与属地监管传输,外资登记子网站,网上业务受理,大屏幕触摸屏系统之间的整合;

    3、广告监管系统与广告监管子网站之间的整合;

    4、12315数据统计分析与12315子网站之间的整合;

    5、通用信息查询、统计系统与数据采集转换之间的整合;

    1.1.1 数据迁移和转换分析

    根据招标文件工商总局新建系统的数据库基于IBM DB2,而原有系统的数据库包括ORACLE,SQL Server,DB2。这种异构数据在总局主要存在于两个方面,即部门内部的异构数据和上下级部门之间的异构数据。同时,系统的技术构件有.NET和J2EE两大类。

    对于部门内部的异构数据的集成采用数据移植的方法,如:如果数据有基于DB2管理的,有ORACLE管理的,有SQL Server管理的,就根据新系统DB2的要求,把ORACLE的数据迁移到DB2数据库中,把SQL Server的数据迁移到DB2数据库中。

    上下级国工商局之间的异构数据的集成利用数据交换系统来完成,重点在于数据库存储标准、交换标准的制定和遵守,保证数据的共享,这部分工作由数据中心完成。

    1.1 系统迁移和整合目标

    一、系统切换的主要目标:

    l 保证系统正常运行

    在数据转换过程中,由于原有的系统数据的复杂性,给数据转换工作带来了很大的难度,为了在新系统启动后不影响原系统正常的业务,因此数据转换完成后,必须保证新系统的正常运行。

    l 保证原有系统在新系统中的独立性

    原有系统是独立运行的系统,数据在新系统中虽然是集中存放的,但是各个系统由于存在业务上的差别,数据在逻辑上应当保持一定的独立性。

    二、系统整合的目标:

    保证直接关联的系统互动,保证业务的正常办理。例如公众服务系统与基本业务系统之间互动,基本业务与协同业务之间互动等等。

    1.2 系统切换方案

    1.2.1 系统切换工作流程

    系统切换包括前期调研、数据整理、数据转换、系统切换、运行监控五个阶段。系统切换的整个工作流程如下所示

    1.1.1 系统切换工作步骤

    1.1.1.1 前期调研阶段

    前期调研是数据转换中很重要的一个步骤,也是至关重要的一部分。在进行数据转换工作前,我们需要先认真阅读系统的相关文档,如《数据字典》、《系统概要设计报告》等,来熟悉原有的系统。当然在阅读文档的过程中肯定还会有理解不清晰的地方,这时还需要熟悉原有系统的工程师的帮助。数据转换的前期工作就是对原系统做一次彻底的全面了解,主要需要的考虑的有下面一些情况:

    1、原系统的网络结构;

    2、原系统的业务范围、存在几套业务系统以及他们之间的关系;

    3、原系统的开发商、开发工具、开发平台以及采用的数据库;

    4、原系统的数据分布状况:包括数据范围、数据量大小等;

    5、原系统的业务流程;

    6、原系统的数据流程;

    7、原系统的数据结构;

     

    在了解这些要素的基础上,需要编写《前期调研分析报告》。调研报告主要包含如下一些方面:

    1、将所有数据表进行分类,如系统参数类、代码类、综合业务类、相关业务类等等。

    2、对所有数据表的数据组成、数据来源、用途等进行描述。

    3、并非所有的数据都是需要进行转换的,在《数据字典分析报告》中要指出那些数据表是需要进行转换的,那些是不需要进行转换的,对于不需要转换的表要说明不需要转换的原因。

    4、描述数据在各表中的流向,对于关键的或复杂的业务点要做详细说明。

    1.1.1.2 转换设计阶段

    转换设计阶段主要是完成新旧数据字典的对照,同时明确各个表中具体数据字段的转换方式。在转换设计阶段主要是编写《数据字典对照报告》

    《数据字典对照报告》主要描述新旧系统数据表间的对照关系以及代码对照关系。以新系统为准,原系统作参照,将原系统的数据字典对应到相应的系统数据字典中。在对照过程中,需要遵循数据照搬原则,数据尽量不要作处理。

    在数据字典对照表中需要进行转换的数据字段应该一一对应,对新旧数据表中字段的名称、类型、精度等都要有详细的描述,同时还要明确数据的转换方式。数据转换方式主要有以下几种:

    1. 直接转换。直接转换方式是最常用的方式,就是将原表中对应字段的数据原封不动的搬到新表中来。按照“数据照搬”原则,我们应该应该尽量采用这种方法。

    2. 程序转换。对那些需要进行计算才能进行转换的数据将采用程序转换方式进行。

    3. 代码对照。某些代码字段,往往新旧系统的编码不相同,这时就需要参照代码对照表进行代码对照转换。

    4. 类型转换。少数数据可能需要对类型进行转换,如就表以字符串‘YYYY-MM-DD’来存放日期,而新表中以DATE型来存放日期,这时就需要进行类型转换。

    5. 常量转换。新表中某些字段可能存在缺省值,这时将采用常量转换方式,当旧表没有对应字段或旧表对应字段数据为空时,将直接在新表中写入缺省数据。

    6. 不转换。对于旧表有但新表中没有的字段将不作任何转换。

     

    新旧系统代码对照列出了全部需要进行转换的新旧系统数据表中存在的二级代码间的对照关系,主要以二级代码对照表的形式来反映。

    1.1.1.1 数据迁移

    一、数据整理策略

    数据整理就是将原系统数据整理为系统转换程序能够识别的数据。数据整理大致分为两个阶段:第一阶段就是将不同类型来源数据采集备份到统一的数据库中;第二阶段就是将原始数据进行整理,按照不同的要求分类进入不同的中间数据库,为数据转换提供中间数据。数据整理过程采用了以下方法:

    l 确保原始数据的完整性

    在进行数据整理之间,我们先需要对原始采集数据进行备份。备份的目的有两个:一个是统一数据库,便于数据转换,另一个就是为以后数据追根溯源提供参考依据。在本系统中,我们将采用DB2作为备份统一数据库。

    l 数据分级过滤策略

    数据分级过滤就是把数据按照不同的数据级别进行分类整理进入不同的中间数据库中。本系统中我们把数据分为三个级别:废弃数据、待调整数据、可转换数据。废弃数据就是该部分数据的存在对系统资源造成浪费的数据,并且会影响以后系统的运行。待调整数据就是该部分数据严重影响新系统的运行,必须进行人工调整后,方可进行数据转换。可转换数据就是该部分数据不需做任何处理,基本满足数据转换的要求或者是该部分数据新系统建议调整,但是不影响系统的运行,可以等新系统运行后再调整,这样可以为数据转换工作节省很多时间。

    l 借助数据整理相关工具

    数据整理非常艰巨,涉及的数据量很大,通过人工检查是不可能完成的,因此必须编写相关的数据整理工具完成数据整理。包括数据整理工具和数据纠错工具。数据整理工具负责将原始备份数据库中的数据进行分类进入不同的中间数据库;数据纠错工具负责提供友好、方便的工具界面供用户方相关人员完善和纠正错误数据。

    l 利用中间库作为桥梁

    由于原系统和新系统的数据库结构可能不一样,所以采用中间库作为衔接新旧系统数据的重要桥梁,对于建立新旧系统的对照关系很重要。一旦业务人员对新系统中某项转换数据存在疑问的情况下,就可以通过中间库的关联,顺利找出原数据。

     

    二、数据转换

    数据转换就是将整理后的数据,依照对照表的要求进行转换,并写入到新系统。这个过程可以通过交换系统实现。

    三、数据整理与转换步骤

    l 设计数据移植方案

    设计数据移植方案主要包括以下几个方面工作:研究历史数据的结构、来源、数据项定义、取值等现状,研究新旧数据库结构的差异,评估和选择数据移植的软硬件平台、选择数据移植方法、选择数据备份和恢复策略、设计数据移植和测试方案等。

    l 源数据库数据清理

    对于一个运行已久的数据库,主要存在三种数据库垃圾:数据库对象垃圾、数据库权限垃圾、数据垃圾。数据库对象的清理不是一件容易的工作,需有认真负责的态度,要有耐力,任何错误的清理不仅会造成前端不能运行,而且将会造成数据的丢失。所以清理数据库对象也许需要一个安全、准确,可很快恢复的方法。

    首先要认识数据库资源,包括数据库对象,如表、数据库事件、过程、函数,数据库结构关系,在此基础上结合运行系统,确认数据库垃圾,制定合理的垃圾清理方案,达到清理垃圾的目的。

    主要方法是对数据库数据进行整合和分解,整合相关数据减少数据的重复,分解数据则可是数据团体更趋向合理,当然整合和分解要以适合新设计的数据库结构为基础,以便简化转化程序。

    l 进行数据模拟移植

    根据设计的数据移植方案,建立一个模拟的数据移植环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟移植环境中测试数据移植的效果。

    数据模拟移植前也应按备份策略备份模拟数据,以便数据移植后能按恢复策略进行恢复测试。

    l 测试数据模拟移植

    根据设计的数据移植测试方案测试数据模拟移植,也就是检查数据模拟移植后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

    l 准备实施数据移植

    数据模拟移植测试成功后,在正式实施数据移植前还需要做好以下几个方面工作:进行完全数据备份、确定数据移植方案、安装和配置软硬件等。

    l 正式实施数据移植

    按照确定的数据移植方案,正式实施数据移植。

    1.1.1.1 数据整理和转换的关键技术

    对于多源异构数据库之间的数据转换,因为目标数据库的格式和约束的限制严格,直接编写转换程序实现困难,可在原有数据库系统中编写转换程序。

    对于源数据库、目标数据库结构有差异的数据,建立中间过渡库,中间库在原数据库平台中建立,但结构与目标数据库的结构相同。

    将源数据库转入中间库的过程是一个数据的重新组合和关联的过程,将是转换的中心和重点工作,需要对源数据库与新数据库的数据关系进行深入分析,对每一个数据库写出转换策略。

    非空处理:对于应该非空但实际为空的记录制定处理规则。

    取值约束处理:对于有取值范围约束的字段进行规范化处理,即将转换后的数据取值规范到该范围内。

    主键处理:重新对中间库进行编号。

    填写外键:每个数据库或多或少存在外键,外键越多,标明与其它库关联越多,这样的库应后处理;反之,外键越少的库应该先处理。

    唯一键处理:对要求唯一的数据项(主键、唯一键)进行唯一检测,并对检测出的不唯一的记录,制定处理规则。

    附加分散处理:对某些表中的某些字段进行数据规范化处理,即将不合规范的数据替换成规范的数据,几个表之间的关联处理,以及一些特殊处理等。数据一致性处理:对于有多个数据源的数据进行一致性检查, 制定处理规则。

    1.1.1.2 新旧系统切换 

    第一步:编写《系统切换方案》。

    系统切换方案包括系统切换方法、系统切换计划等内容。

    第二步:组织相关人员对《系统切换方案》进行评审,如果未通过,则需要调整系统切换方案。

    第三步:进行业务系统数据转换。

    在进行业务系统数据转换前,需要先选择一个时间点进行业务系统数据采集。该时间点的选择以完成一个完整的业务周期为准。

    l 转换时机

    根据以往的经验,我们建议将正式数据转换的时间放在月结刚刚完成后并且最好是节假日。

    l 准备工作

    正式数据转换前的准备工作是非常多的,现列举如下:

    编写详细的《数据转换指南》。《数据转换指南》应该是在前面的几次试转换过程中编写并完善的,要详细说明数据转换的全过程,包括:准备工作、执行步骤、注意事项等。

    编写执行脚本。在前面几次试转换的基础上编写并完善好数据转换执行脚本。执行脚本包括:转换执行脚本、验证执行脚本等。所有的脚本都必须安装执行的先后顺序编写,在正式转换时将按照顺序来执行。

    数据库环境准备。根据以往的经验,在正式转换阶段出现的异常往往都是有数据库方面的,大部分是因为数据库环境没有准备好。数据库方面需要做好如下几方面的准备:表空间划分、大数据文件准备、大回滚段准备、创建索引等。

    其他必要准备。在正式转换前,老系统要停止使用,同时在还需要把老系统的数据做一次完整的备份。   

    l 执行过程

    数据转换时将按照已经编写好的转换执行脚本来进行。对没一步的操作都要做好日志记录,日志分两种,一种是计算机自动产生的日志,如LOG文件;另一种是在转换执行过程中手工做的记录。在正式转换时,要求至少两人一起工作,其中一人负责操作,另外一人负责监督,两人都必须做好记录。

    每执行完一条转换命令后都需要去查看一些错误记录表,如果出现异常错误信息,需要暂停转换执行,对错误分析处理完毕后才能继续执行。

    l 验证过程

    转换执行结束后,需要对转换的结果进行验证,验证时按照已经编写好的验证脚本来进行,验证最好由两名以上的人员分开来进行,在验证过程中做好每一步的验证记录。

    如果在验证过程中没有发现异常,并且几名验证人员的验证记录都非常一致,则可以认为已经通过验证。

    l 收尾工作

    数据转换工作执行完毕后,需要对关闭原有系统全部的业务经办功能,只开发查询功能,以便业务人员在需要时可以继续查询旧系统中的数据。

    对新系统的数据进行一次物理备份,同时启动新系统数据库的重做日志功能。

    到此时为止新旧系统数据转换工作全部结束,整个应用系统将切换到新系统上来运行。

    第四阶段: 新系统运行监控及数据整理

    在所有新系统平稳运行后,还需要进行定期的运行监控以及对部分数据进行调整。对于那些对系统运行未造成影响的,在数据整理过程中,没有进行数据修正,所以在系统平稳运行后,需要对这些数据进行调整。

    1.1.1.3 系统切换保障措施

    系统在整个切换过程中,安全、平稳过渡是第一位的。我们将采用如下措施保证系统切换安全:

    1、数据备份

    在进行新旧系统数据转换时,对原系统数据进行备份以保证历史数据的可追溯性。一旦在新系统中业务办理出现问题,则可以通过追溯历史数据来判断是数据转换错误,还是新系统程序存在BUG。

    2、 数据测试

    数据测试分为两个层次测试,一个是数据监测性测试,就是在数据转换完成后,测试数据的转换正确性;二是验证性测试,验证性测试通过使用已经通过功能测试的新系统办理实际业务来验证数据转换的正确性。

    数据测试是一个关键环节,关系到系统切换的成功与否,所以必须加大测试力度来保证数据转换的正确性。而与数据测试相关的系统功能测试也必须重视,因为如果系统功能如果存在问题,则数据测试也就无法保证正确性。

    3、切换点的选择

    系统在什么时候进行切换,也是一个很关键的问题。一般情况下,我们都选择一个业务周期结束,下一个业务周期开始的时候进行切换。

    4、切换方式的选择

    系统切换有两种方式,一种是新旧系统并轨运行,一种是新系统单轨运行。对于第一种方式旧系统为主,新系统为辅,在时机成熟的时候在切换到新系统运行;第二种是以新系统为主,旧系统为辅,旧系统只是验证新系统业务办理的正确与否。第一种方式安全系数由于过渡期时间会很长,业务人员工作量很大,而第二种由于直接采用新系统,存在一定的风险,我们可以通过加大测试力度来降低风险。综上所述,我们建议采用第二种方式,就是新系统为主,原系统为辅的方式。

    5、应急预案

    在特殊情况下,由于某种原因导致系统没有能够正常切换或者切换以后系统运行不稳定,在这种情况下,必须启动应急预案来解决。具体应急预案如下:

    应急预案需要从业务系统、数据库、网络平台三个方面来考虑应急处理措施,只有三方面同时恢复到系统切换前的状态,才能保证原系统业务经办的正常进行。业务应用系统应急措施主要是在业务经办时保留原业务应用系统,并且保证原业务应用系统的客户端配置环境能够在最短时间内恢复到以前的配置;数据库应急措施就是利用原始数据与原系统保持一致来处理的,也就是在新系统数据库中保留备份,并且按照原系统数据集中情况下分不同用户存放备份数据,但是用户名仍需要采用原数据库系统用户名。一旦出现紧急情况,新系统数据库立即切入原备份数据库;网络平台应急预案就是保证在数据大集中情况下整个社会保障网络链路的畅通即可。

    1.1.1 系统切换过程中需注意的问题

    1、最大限度的保证原系统数据转换到新系统中,即使是对错误数据进行一些处理,然后在新系统中调整。

    2、新旧系统的对应关系一定要完整。

    3、原系统的数据在新系统中一定要有备份,不能数据转换完成以后就将原系统数据删除掉。原系统备份数据至少保留一年的时间。

    4、新系统开发过程中,数据转换负责人一定要与软件项目负责人保持经常沟通,以保证转换数据的正确性。同时软件项目负责人熟悉原系统的业务流程和用户的习惯操作方式也是有必要的。

    5、数据质量测试是非常重要的一个环节。

    展开全文
  • 新老系统迁移

    千次阅读 2019-01-06 23:36:43
    本篇文章主要是笔者经历过的次系统迁移来分享一下,我经历的次系统迁移,一次b2b电商系统,一次支付公司交易系统和支付系统,那么我们都做了什么? 为什么要做系统迁移 随着业务的不断发展,时间的推移,...

    什么是系统迁移
    首先介绍一下,我是一名产品经理。本篇文章主要是笔者经历过的两次系统迁移来分享一下,我经历的两次系统迁移,一次b2b电商系统,一次支付公司交易系统和支付系统,那么我们都做了什么?

    为什么要做系统迁移
    随着业务的不断发展,时间的推移,当前运行的系统在架构、性能等方面无法满足业务的发展,无法进行更好功能的扩展,此时,需要一套新的架构,一套更符合当前业务发展及公司整体战略的新系统出现,去承接现有的业务。所以系统迁移既是根据现有业务去开发一套兼容老业务的新系统,再将线上的业务数据迁移至新系统。
    系统迁移要做哪些工作
    如前文说,笔者有幸经历两次系统迁移工作,b2b电商系统的迁移主要涉及新系统开发和数据迁移。支付系统的迁移涉及新系统开发,数据迁移,接口适配。
    为什么要做这些工作
    系统迁移,顾名思义,一定要有新系统建设的工作。整体方案上,为了尽量减小系统迁移过程对线上交易带来的影响,我们要保证新老系统可以快速切换,一旦新系统出现问题,要可以做到瞬间切换回老系统。新系统要兼容老系统产生的数据,支持用户可以在新系统操作历史数据,比如查单,退款等。所以有了数据迁移的工作。
    新系统建设
    新系统开发工作,主要分为产品设计阶段,研发测试阶段,系统上线准备,正式上线。
    系统迁移项目中的产品设计,是一个对老系统“取其精华去其糟粕”的过程。
    产品设计:下面脑图介绍了产品设计的工作内容及注意事项。

    产品设计及注意事项
    产品研发及测试:
    架构师对整体产品架构设计,研发小伙伴对细节流程流转进行设计,研发评审时如果是电商系统这种平台型网站产品经理可不必参加评审,只需要关注页面功能是否满足需求即可;如果是支付系统此类接口型系统,产品经理应该参加此部分评审,关注信息流转。测试用例评审产品经理也需要参加。
    数据库设计:
    1.数据库表格式设计时,一定要兼容老数据,否则存量用户不会放过你
    2.数据结构设计时,如果进行了表结构的拆分,需要考虑前端数据展示时进行表关联造成的查询效率降低的问题。任何用户都无法忍受效率低响应慢的操作。
    上线前准备:
    系统上线前需要提前给产品运营、技术支持、客服、销售等同学做好相关培训。需要准备:产品操作手册、测试账号、对外宣讲ppt(主要给销售)、还有适当的学习时间。新系统上线后一定会出现各种问题,如果不能让产品运营、技术支持、客服这些解决用户问题的小伙伴学会新系统,那么亲爱的产品同学就开始身兼数职吧。。。有问题不知道如何解决的情况下大家都会来找你的。
    数据迁移
    1.迁移方式:
    系统映射同步:老数据的处理,大批量交易数据我们采用了新老数据库字段映射同步的方式,将老数据库的数据导入新数据库中。
    导出后导入:少量配置数据采用数据导出的方式,将相关数据清洗,添加到新系统中。
    2. 迁移数据时间跨度:根据线上交易常用时间段为准,我们导入了2年内活跃数据。
    3. 数据迁移涉及的数据纬度有:数据迁移涉及的数据纬度有:
    a.商户/用户基础信息数据
    b.商户/用户配置数据
    c.商户/用户交易数据
    4.关于一些异常数据的处理:
    数据同步至新系统的过程中可能会出现数据重复、数据缺失、数据同步有时间差等问题。所以数据迁移后的核对工作至关重要。
    数据重复:对于重复数据可能造成前端用户查询或下载数据重复,如有相关处理逻辑判断同样会影响后续流程判断,可以根据同步纬度进行重复数据的删除。
    数据缺失:对于缺失数据可能造成前端用户查询或下载数据缺失,如有相关处理逻辑判断同样会影响后续流程判断,可以根据同步纬度在一定时间内进行数据重复补充同步。
    数据同步时间差:数据同步时间差可能会影响用户在新系统查询数据时发现数据缺失,如有相关处理逻辑判断同样会影响后续流程判断,此时可以根据用户使用习惯调整同步频率。

    新交易迁移
    为了让交易尽量走到新系统,对于电商系统等平台型产品只需要在页面升级,使交易从新系统进入即可。对于接口类产品,由于新系统对应一套新的对外接口,需要将新系统接口对应适配到老系统接口上,保证交易从老接口进入,但信息流入新系统。
    系统迁移为了保证线上交易平稳, 需要将线上交易按照商户维度将商户信息按照业务维度整条进行迁移,保证交易进入到新系统后整条信息流都处在新系统中。此种迁移方式可以保证即使迁移的交易回滚,用户处理信息可以在新老系统中处理完成整条信息流。
    迁移前需要提前同步销售、用户或者商户迁移事项及影响,在双方达成一致后再进行迁移,迁移后双方同时观测交易,出现问题便于沟通排查,其他使用问题也可以收到及时反馈。也避免影响了线上交易,用户及商户侧反感较大。
    迁移后需要实时观察交易,保证相关观测点无问题后才可以放弃观察。一旦发现问题及时回滚后再排查问题。
    做项目的流程大体如上,其他细节后续再更。

    展开全文
  • ISO6954 新老比较.pdf

    2020-04-21 17:05:42
    ISO6954 新老比较 振动评价标准新旧版本的比较 国际标准化组织"机械振动与冲击"技术委员会制定的 1506954 振动评价标准目前经历了版本: 1984 年版的《商船振动综合评估指南》和 2000 年版的《客船和商船适居性...
  • AJAX学习系列1— 老技术新思想

    千次阅读 多人点赞 2012-07-22 21:25:44
    这些是老技术,而局部刷新的思想却是的。   这和美国芯片的点石成金的例子同出一辙,芯片材料谁都不缺,甚至美国芯片的材料是从中国廉价进口的,然而美国佬凭借特有的制造工艺,点石成金。   ajax ...

    应用展示

    我们每天都会和ajax打招呼,不信你瞧:在搜索栏中输入“奥运”,下边框自动弹出有关奥运最火的条目。


    它没有对整个页面,而是对页面的局部进行了数据更新。

     

    亲自试一试

    http://tang123321px.35free.net/ajax%20%E7%AE%80%E5%8D%95%20%E5%B1%80%E9%83%A8%E5%88%B7%E6%96%B0%E6%95%88%E6%9E%9C/#


    ajax,老技术新思想

    经过前面示例可以了解到:AJAX是一种在无需重新加载整个网页的情况下,能够更新局部网页的技术。

    经过查阅,ajax是(不需要看懂,学到了自然就懂了):

    (1)使用XHTML和CSS的基于标准的表示技术

    (2)使用DOM进行动态显示和交互

    (3)使用XML和XSLT进行数据交换和处理

    (4)使用XMLHttpRequest进行异步数据检索

    (5)使用javascript将以上技术融合在一起。

     

    但从不懂之中依然可以得出两条信息:

    1. javascript是基础,运用ajax的前提。通过ajax的全称(asynchronous javascript and xml)也可以证明这点。
    2. 这些是老技术,而局部刷新的思想却是新的。

     

    这和美国芯片的点石成金的例子同出一辙,芯片材料谁都不缺,甚至美国芯片的材料是从中国廉价进口的,然而美国佬凭借特有的制造工艺,点石成金。

     

    ajax思想原理


    传统web方式,是同步的,即需要对方返回结果后,我才能继续做别的。

    ajax方式,是异步的,即不必等到对方的反馈,我该做啥做啥。因为让客户更方便,所以它备受人们喜爱。


     

    传统web方式和ajax方式对比

    ajax方式:返回的是文本数据,而不是一个新的html页面;返回结果会通过注册在ajax引擎中的回调方法进行相应操作,返回给用户

     

    传统方式:请求和返回都是通过浏览器完成;返回的事新的html页面

     

    小结

    只有思想在,战略在,才能不会迷路,甚至会发现新大陆。我们最容易忽略“战略”而急着进入“战术”层,而战术上的偏差和错误可以弥补和纠正,战略上的失误会导致全盘皆输。所以有了思想,才有生命,有了行动,才有生机。

    提高班的学习,应该多思考,如果盲目赶进度急功近利,必然会返工。

    同时用美国西点军校学员必须背诵的这句话来警戒自己:“Every Battle IsWon or Lost Before It Is Ever Fought.(孰胜孰负,未战先知)”。

    展开全文
  • CORS也已经成为主流的跨域解决方案,不过CORF也会引发CSRF,本文先分享第三方的一个前端工具箱全面展示那些浏览器版本支持CORS,由于各家浏览器厂商因为各自原因在不同的版本里支持的标准不同,这个工具小而美,可以...

    CORS也已经成为主流的跨域解决方案,不过CORF也会引发CSRF,本文先分享第三方的一个前端工具箱全面展示那些浏览器版本支持CORS,由于各家浏览器厂商因为各自原因在不同的版本里支持的标准不同,这个工具小而美,可以清晰的比较不同版本浏览器前端技术兼容性对照表。

     

    先看图下面这个网站可以很方便的查看不同版本浏览器对CORS的支持力度,IE10,IE11,Chrome,Firefox,Safari太多了一个都少不了,基本涵盖常见或者不常见的浏览器了,话说做前端真不容易啊。

    https://caniuse.com/#search=cors

     如图所示,这个图表不是单纯的显示支持与不支持,还做了一些细分:

    1 Does not support CORS for images in <canvas>

    2 Supported somewhat in IE8 and IE9 using the XDomainRequest object (but has limitations)

    3 Does not support CORS for <video> in <canvas>: https://bugs.webkit.org/show_bug.cgi?id=135379

    4 Does not support CORS for resources which redirect: https://bugzilla.mozilla.org/show_bug.cgi?id=1346749

    CORS 跨域 实现思路及相关解决方案   写的很好

    其他例如CSS Grid Layout (level 1)

    CSS Flexible Box Layout Module

    ECMAScript 2015 (ES6)

    也可以按不同的浏览器版本直接对比对不同技术规范的支持,比如H5选择最新版本的IE11,Chrome,Firefox,Safari比较:

    分至少部分支持和混合支持:

    如果你遇到跨域问题还没有使用CORS那么赶紧往下看。

    同源政策

    维基百科上关于同源策略的定义http://en.wikipedia.org/wiki/Same_origin_policy
    同源策略是Web应用程序安全模型中的一个重要概念。根据该策略,Web浏览器允许第一个Web页面中包含的脚本访问第二个Web页面中的数据,但前提是两个Web页面具有相同的源。原点定义为URI方案,主机名和端口号的组合。此策略可防止一个页面上的恶意脚本通过该页面的文档对象模型访问另一个网页上的敏感数据。

    放宽同源政策(跨域解决方案)


    在某些情况下,同源策略限制性太强,对使用多个子域的大型网站造成问题。首先,使用诸如使用片段标识符或window.name属性的许多变通方法来在驻留在不同域中的文档之间传递数据。现代浏览器支持多种技术,以受控方式放宽同源策略:

    1.document.domain属性
    如果两个窗口(或框架)包含将域设置为相同值的脚本,则这两个窗口将放宽同源策略,并且每个窗口可以与另一个窗口交互。例如,从orders.example.com和catalog.example.com加载的文档中的协作脚本可能会将其document.domain属性设置为“example.com”,从而使文档看起来具有相同的来源并使每个文档都能够读取另一个的属性。设置此属性会隐式将端口设置为null,大多数浏览器将从端口80或甚至未指定的端口进行不同的解释。要确保浏览器允许访问,请设置两个页面的document.domain属性。

    2.跨源资源共享(CORS)
    另一种放宽同源策略的技术是以跨源资源共享的名义标准化的。此标准使用新的Origin请求标头和新的Access-Control-Allow-Origin响应标头扩展HTTP。它允许服务器使用标头明确列出可能请求文件或使用通配符的起源,并允许任何站点请求文件。诸如Firefox 3.5,Safari 4和Internet Explorer 10之类的浏览器使用此标头来允许具有XMLHttpRequest的跨源HTTP请求,否则这些请求将被同源策略禁止。

    3.跨文档消息
    另一种技术是跨文档消息传递,允许来自一个页面的脚本将文本消息传递到另一页面上的脚本,而不管脚本来源如何。在Window对象上异步调用postMessage()方法会在该窗口中触发“onmessage”事件,从而触发任何用户定义的事件处理程序。一个页面中的脚本仍然无法直接访问另一个页面中的方法或变量,但它们可以通过此消息传递技术安全地进行通信。

    4.JSONP 
    由于允许HTML<script>元素从其他域检索和执行内容,因此页面可以绕过同源策略,并通过加载返回JSONP有效负载的资源从不同的域接收JSON数据。JSONP有效负载由预定义函数调用包装的内部JSON有效负载组成。当浏览器加载脚本资源时,将调用指定的回调函数来处理包装的JSON有效负载。

    5.WebSockets 
    现代浏览器将允许脚本连接到WebSocket地址而不应用同源策略。但是,它们会在使用WebSocketURI时识别,并将Origin:标头插入到请求中,该请求指示请求连接的脚本的来源。为确保跨站点安全性,WebSocket服务器必须将标头数据与允许接收回复的原始白名单进行比较。

     

     

    为什么CORS很重要?

    JavaScript和网络编程多年来实现了跨越式发展,但同源政策仍然存在。这可以防止JavaScript跨域边界发出请求,并产生了各种用于发出跨域请求的黑客攻击。

    CORS引入了一种标准机制,可供所有浏览器用于实现跨域请求。规范定义了一组标头,允许浏览器和服务器就允许(和不允许)哪些请求进行通信。CORS通过为所有人提供API访问来延续开放网络的精神。

    CORS与JSONP的使用目的相同,但是比JSONP更强大。

    CORS与JSONP的比较可以看看https://stackoverflow.com/questions/12296910/so-jsonp-or-cors

    为什么JSONP仍然是强制性的

    为什么JSONP仍然是强制性的 

    解决方案
    使用JSONP是确保与旧浏览器的良好兼容性并处理错误配置的防火墙/代理问题的唯一解决方案。但是,CORS提供了正确错误处理的优势,因此我们不希望将自己局限于JSONP。

    在我们的JavaScript客户端的最新版本中,我们决定使用CORS来回退JSONP。在客户端初始化时,我们检查浏览器是否支持CORS,然后执行OPTIONS查询以检查是否没有阻止CORS请求的防火墙/代理。如果有任何错误,我们会回避JSONP。我们的JavaScript客户端可以使用所有这些逻辑,而无需为客户更改任何API /代码。

    拥有CORS支持以及JSONP上的自动回退是我们发现的最佳方式,可确保提供卓越的服务质量并支持所有角落情况。如果您看到其他任何方式,我们非常欢迎您的反馈。

    小结JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

     

    如何使CORS生效


    为了使CORS正常生效,我们可以添加HTTP标头,允许服务器描述允许使用Web浏览器读取该信息的一组源,并且对于不同类型的请求,我们必须添加不同的标头。该请求可以主要分为简单请求和预检请求。
    简单请求
    请求不会触发CORS预检是所谓的简单请求。一个简单的请求应满足以下所有条件:


    对于一个简单的请求,要使CORS正常工作,Web服务器应该设置一个HTTP头:

    Access-Control-Allow-Origin: *

    设置此标头意味着任何域都可以访问该资源。如果我们想限制到一个特定域,我们可以将其设置为:

    Access-Control-Allow-Origin: http://specific.domain.example

    预检请求
    预先请求的请求首先通过该OPTIONS方法向服务器发送HTTP请求,以确定实际请求(以下请求)是否可安全发送。预检请求应满足以下所有条件:

    对于预先发出的请求,要使CORS正常工作,Web服务器应设置一些HTTP标头:

    Access-Control-Allow-Origin: *
    Access-Control-Allow-Methods: POST, GET, OPTIONS
    Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
    Access-Control-Max-Age: 80000

    CORS on Nginx

    参考:https://enable-cors.org/server_nginx.html

    #
    # Wide-open CORS config for nginx
    #
    location / {
         if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            #
            # Custom headers and headers various browsers *should* be OK with but aren't
            #
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            #
            # Tell client that this pre-flight info is valid for 20 days
            #
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
         }
         if ($request_method = 'POST') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
         }
         if ($request_method = 'GET') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
         }
    }

     

    防止CSRF攻击


    根据同源策略,既然允许跨源写入,这就可能会导致安全问题引发CSRF攻击 。


    要防止CSRF攻击,请在请求中检查不可语量的令牌。例如,在HTTP参数中有一个随机生成的令牌,表示名称_csrf。

    https://stackoverflow.com/questions/5207160/what-is-a-csrf-token-what-is-its-importance-and-how-does-it-work

    CSRF解决方案参考:https://github.com/OWASP/CheatSheetSeries

    https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.md 

    需要保护的资源不受CSRF漏洞的影响

    以下列表假定您没有违反RFC2616第9.1.1节,通过使用GET请求进行状态更改操作。

    注意:如果你违反任何理由,你也需要保护这些资源,其中大部分是使用默认实现form tag [GET method]hrefsrc属性。

    • 使用POST表单标签
    • Ajax / XHR调用

    CSRF防御建议摘要

    我们建议基于令牌的CSRF防御(有状态/无状态)作为缓解应用程序中CSRF的主要防御。仅对于高度敏感的操作,我们还建议基于用户交互的保护(重新认证/一次性令牌,详见6.5节)以及基于令牌的缓解。

    作为一项纵深防御措施,请考虑从“深度缓解防御”部分实施一项缓解措施(您可以根据其中提到的问题选择适合您的生态系统的缓解措施)。建议不要使用这些纵深防御缓解技术(不使用基于令牌的缓解)来减轻应用程序中的CSRF。

    初级防御技术

    基于令牌的缓解

    这种防御是减轻CSRF的最受欢迎和推荐的方法之一。它可以通过状态(同步器令牌模式)或无状态(基于加密/散列的令牌模式)来实现。请参阅第4.3节,了解如何减轻应用程序中的登录CSRF。对于所有缓解措施,隐含的是应遵守一般安全原则

    • 应遵循强加密/ HMAC功能。

    注意:您可以根据组织需求选择任何算法。我们建议使用AES256-GCM进行加密,使用SHA256 / 512进行HMAC。

    • 应保持严格的密钥轮换和令牌生存期策略。可以根据您的组织需求设置策略。可以在此处找到OWASP的通用密钥管理指南。

     

    参考:

    什么是CORS(跨源资源共享)

    HTTP访问控制(CORS)

    https://www.w3.org/TR/cors/

    展开全文
  • 如何高效学习一门新技术

    万次阅读 多人点赞 2017-06-26 17:50:12
    对于这个较大的话题,我们分个部分介绍:学习新技术的10个建议 和 学习新技术的具体行动 学习新技术的10个建议 尽管我的建议主要涉及的是软件开发方面,但是这些原则在其他领域也同样适用。 1. 克服惯性 ...
  • PostgreSQL 数据库跨版本升级常用方案

    千次阅读 2020-11-12 10:44:28
    本文介绍了 PostgreSQL 数据库版本升级的 3 种常用方案,包括通过 pg_dump/pg_dumpall 逻辑备份与还原进行升级,利用 pg_upgrade 工具进行升级,使用逻辑复制功能进行升级。了解它们的优缺点和适用场景可以帮助我们...
  • 一个十几年程序员给所有新老程序员的忠告

    万次阅读 多人点赞 2017-11-18 17:35:00
    作者是比较喜欢做技术那种,可以做到五六十岁那种,并且看到过更的程序员! 1.比较喜欢技术,会经常学习,人需要不断提高否则很容易落后 2.看一些技术方面的书,管理经营方面也看,毕竟以后很有可能走上这条路。 3...
  • 最近有一个需求,统计新老用户,日活,周活,月活;这里日活,当然了周活,月活就是一个count(distinct(guid))语句。 #!/usr/bin/python # -*- coding:utf-8 -*- # hive更新历史用户表,日常查询,保存到MySQL ...
  • hadoop最新稳定版本使用建议

    千次阅读 2019-01-22 15:47:06
    hadoop最新稳定版本使用建议 ...ApacheHadoop版本分为代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1....
  • 前置: 准备把一个2012 late imac , 版本为 OS X 10.8.5的系统 升级到最新版本。结果 app store更新 报错(102)下载失败。 下了最新固件做了启动盘。...访问下面的技术支持地址: https://support.a.
  • 致《编程的奥秘》新老读者

    千次阅读 2006-10-07 11:34:00
    致《编程的奥秘》新老读者: 电子工业出版社博文视点公司打算举办一个“《编程的奥秘》2006金秋读书季”活动,将活动文告发给了我。作为作者,非常感谢博文视点公司的各位员工对本书所做的工作。 《编程的奥秘》...
  • 计算机三级网络技术考过指南

    万次阅读 多人点赞 2018-03-10 19:18:36
    更新版本请大家自行搜索):计算机三级网络技术无纸化考试模拟软件(2018.3) 用Markdown重写后的带完整标签的版本:计算机三级网络技术考过指南(带完整标签版) 目录 计算机三级网络技术考过指南 前言(必读) ...
  • 百度开源飞桨PaddleOCR编译成32位版本,以使windows的32位机器可以使用paddleOCR。
  • 从最新的技术趋势看前端的未来

    万次阅读 2016-11-08 07:20:49
    新一期的ThoughtWorks技术雷达有点出乎意料,使用new标签的框架、工具、技术、语言等等超过了一半——Vue.js、ES2017上榜,Three.js凭着VR的火又上榜了,还有熟悉的Electron,以及微前端的概念。让我们先看看一些...
  • 2017年10月15-19日,全国信息安全标准化技术委员会2017年第二次会议周在厦门召开,16日上午WG5工作组191个成员单位中121家单位的231位专家参加了工作会议,深信服作为成员单位之一派代表参与会议并积极和专家进行...
  • AI智能音箱技术方案开发

    千次阅读 2019-08-02 10:10:26
    1、AI智能音箱技术方案 为实现上述目的,本实用新型提供一种多功能AI智能音箱系统,其特征在于:包括控制系统,控制系统分别连接着触摸板、麦克风处理模块、RF接收模块、 OLED显示模块、喇叭、LED驱动系统、语音...
  • 需要的兄弟速度拿走,https://download.csdn.net/download/tvk872/10427186链接地址,需要的兄弟速度拿走,https://download.csdn.net/download/tvk872/10427186男孩M...
  • 2.*版本还保留着ajax,但是不再支持旧浏览器;3.*版本连ajax都不留了;但是用户不会升级、用户拒绝升级等原因,造成这些旧版本也需要运行,但是新版却已经修改了规范与旧版旧版冲突了。造成这些旧版本也需要运行...
  • 我们对connector的使用的统一命名约定是:类名中将不会携带任何版本号信息,connector只依赖基础connector且不再引入对老版本connector的直接或间接依赖。 在对现有的connector进行重构以确保connector能...
  • 如何解决产品开发中的技术导向与需求导向之矛盾  一、到底谁说了算?   这是在产品开发中,再常见不过的问题。在很多企业,每当开发产品时,市场人员和技术人员互相吵架,甚至你告我,我告你,让总经理...
  • 我见过很多师傅程序员,刚进入公司时他们会这些那些技术三年后还是只会这些,比如说我主导项目时去请教他们关于新技术的问题,他们只是告诉我说“这个听过啊,但以我的经验,之前那个技术能做就可以了。...
  • 不论是在技术层面还是在产品层面,大数据平台环境下的权限管理工作都是一个让人伤脑筋的烫手山芋,它不仅仅是一个技术问题,还是一个业务问题,甚至还可能...所以,以下内容分部分展开,先谈哲学问题,再谈技术问题。
  • 一个嵌入式工程师给新手的十大建议

    万次阅读 多人点赞 2018-03-02 15:00:13
    回忆起来,不知什么时候开始,整个it业界开始习惯用开源软件来开发应用程序(Apps),产业专家也鼓励嵌入式工程师们走出舒适圈、学习技能,才能与时俱进。正是如此,越来越多的人加入学习嵌入式的大军,致使嵌入式...
  • 考虑到在此前的几个正式版本中接连发现的安全问题,包括令人震惊的严重漏洞,以及重复出现的内置Mac安全工具安全机制绕过问题,Catalina在安全性方面得到了Apple工程师的重点关注,这一点也就显得不足为奇了。...
  • 我是寇! 简述:链表由结点构成,结点有数值和指针,本文采用带头结点的链表进行演示!!! 完整的图解:https://www.processon.com/view/link/5bd3442ce4b01af9b714a6e5 注:后继节点的地址(指针)指向后继...
  • HLS直播技术方案及踩过的坑

    万次阅读 2015-06-04 09:49:46
    一、为什么是IJKPlayer 在基础技术方面,后端有比较成熟的系统,就不再说了,这里说说客户端方面。...字幕方面bilibili开源了一个Android的项目,不过IOS却没有,这个只能自己写了,不过本身这个东西技术方案没有什
  • HTML5特性之离线缓存技术

    万次阅读 2016-04-12 16:34:32
     //要注意的是:触发此事件的时候,用户任然可以看到老版本的应用程序  window.applicationCache.onupdateready = function(e){  status(“Anew version has been downloaded. Reload to run it”);  return ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 234,346
精华内容 93,738
关键字:

技术方案新老两版本