- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
随着企业数字化转型的不断深入,企业积累的各种数据也越来越多,这些数据从分散到集中经历了较长的时间,但数据本身并不直接创造价值。因此,企业需要思考如何利用工业大数据分析工具,深入挖掘蕴藏在数据中的业务价值。一、工业大数据的内涵 工业大数据是指在工业领域中,围绕典型智能制造模式,从客户需求到销售、订单、计划、研发、设计、工艺、制造、采购、供应、库存、发货和交付、售后服务、运维、报废或回收再制造等整个产品全生命周期各个环节所产生的各类数据及相关技术和应用的总称。美国国家科学基金会(NSF)智能维护系统(IMS)产学合作中心的创始人和主任李杰教授在他的《工业大数据》一书中曾指出,在自动化设备产生了大量未被充分挖掘价值的数据、获取实时数据的成本不再高昂、设备的实时运算能力大幅提升以及依靠人的经验已无法满足复杂的管理和优化的需求的条件下,大数据技术在工业领域逐渐兴起。对制造企业而言,高效的处理和使用工业大数据将有利于企业在新一轮产业竞争中占据产业发展的制高点。工业大数据主要涵盖三类数据,即企业信息化数据、工业物联网数据以及外部跨界数据(见下图)。 工业大数据的类别(来源:王建民,清华大学软件学院)信息化数据是指传统工业自动化控制与信息化系统中产生的数据, 如 ERP、MES 等 。工业物联网数据是来源于工业生产线设备 、机器 、产品等方面的数据,多由传感器、设备仪器仪表进行采集产生。外部数据是指来源于工厂外部的数据,主要包括来自互联网的市场、环境、客户、政府、供应链等外部环境的信息和数据。工业大数据技术是使工业大数据中所蕴含的价值得以挖掘和展现的一系列技术与方法,包括数据规划、采集、预处理、存储、分析挖掘、可视化和智能控制等。归纳来说,主要包括数据采集技术、数据管理技术、数据分析技术。1.数据采集技术工业软硬件系统本身具有较强的封闭性和复杂性,不同系统的数据格式、接口协议都不相同,甚至同一设备同一型号、不同时间出厂的产品所包含的字段数量与名称也会有所差异,因此无论是采集系统对数据进行解析,还是后台数据存储系统对数据进行结构化分解都会存在巨大的挑战。由于协议的封闭,甚至无法完成设备的数据采集;即使可以采集,在工业大数据项目实施过程中,通常也需要数月时间对数据格式与字段进行梳理。挑战性更大的是多样性的非结构化数据,由于工业软件的封闭性,数据通常只有特定软件才能打开,并且从中提取更多有意义的结构化信息工作通常很难完成,这也给数据采集带来挑战。因此,先进的数据采集技术需要满足海量高速、支持采集的多样性、保证采集过程安全等特点。未来,先进的数据采集技术并不简单的将数据通过传感器进行采集,而是构建一个多数据融合的数据环境,使产品全生命周期的各类要素信息能实现同步采集、管理和调用。此外,需要尽可能全地采集设备全生命周期各类要素相关的数据和信息,打破以往设备独立感知和信息孤岛的壁垒,建立一个统一的数据环境,这些信息包括设备运行的状态参数、工况数据、设备使用过程中的环境参数、设备维护保养记录以及绩效类数据等。最后,在先进的数据采集技术下,改变现有被动式的传感与通信技术,实现按需进行数据的收集与传送,即在相同的传感与传输条件下针对日常监控、状态变化、决策需求变化以及相关活动目标和分析需求,自主调整数据采集与传输的数量、频次等属性,从而实现主动式、应激式传感与传输模式,提高数据感知的效率、质量、敏捷度,实现数据采集的自适应管理和控制。2.数据管理技术各种工业场景中存在大量多源异构数据,例如结构化与非结构化数据。每一类型数据都需要高效的存储管理方法与异构的存储引擎,但现有大数据技术难以满足全部要求。以非结构化数据为例,特别是对海量设计文件、仿真文件、图片、文档等,需要按产品生命周期、项目、BOM结构等多种维度进行灵活有效的组织、查询,同时需要对数据进行批量分析、建模,对于分布式文件系统和对象存储系统均存在技术盲点。另外从使用角度上,异构数据需要从数据模型和查询接口方面实现一体化的管理。例如在物联网数据分析中,需要大量关联传感器部署信息等静态数据,而此类操作通常需要将时间序列数据与结构化数据进行跨库连接,因而先进的数据管理技术需要针对多模态工业大数据进行统一协同管理。3.数据分析技术工业大数据分析技术包括多种技术,最常用的有K均值、BP神经网络、遗传算法和贝叶斯理论等。其中K均值是最常用的主流聚类分析算法,BP神经网络是较先进的数据挖掘分析方法。使用工业数据之前,许多用户不知道期望的目标,并且无法获取更多的数据应用背景知识,可以利用K均值算法构建一个自动聚类分析的大数据模式。比如通过分析后能够自动将工业设计数据划分为高、中、低等档次,企业可以把高档设计案例推荐给用户,促进商务达成。BP神经网络可以通过机器学习获取相关指标关键特征,从而通过网络算法构建一个分类的预测系统,这样可以用于判断日常运行趋势,在设备的智能化健康维护中就较多的应用到这项技术。当前先进的数据分析技术包括以下几个方面:(1)强机理业务的分析技术。工业过程通常是基于“强机理”的可控过程,存在大量理论模型,刻画了现实世界中的物理、化学、生化等动态过程。另外,也存在着很多的闭环控制、调节逻辑,让过程朝着设计的目标逼近。在传统的数据分析技术上,很少考虑机理模型(完全是数据驱动)、也很少考虑闭环控制逻辑的存在。(2)低质量数据的处理技术。低质量数据会改变不同变量之间的函数关系,这给工业大数据分析带来灾难性的影响。现实中,制造业企业的低质量数据普遍存在,例如ERP系统中物料存在“一物多码”问题,无效工况、重名工况、非实时等数据质量问题也大量存在。这些数据质量问题都大大限制了对数据的深入分析,因而需要在数据分析工作之前进行系统的数据治理。工业应用中因为技术可行性、实施成本等原因,很多关键的量没有被测量、或没有被充分测量(时间/空间采样不够、存在缺失等)、或没有被精确测量(数值精度低),这就要求分析算法能够在“不完备”“不完美”“不精准”的数据条件下工作。在技术路线上,可大力发展基于工业大数据分析的“软”测量技术,即通过大数据分析,建立指标间的关联关系模型,通过易测的过程量去推断难测的过程量,提升生产过程的整体可观可控。二、工业大数据发展趋势 随着智能制造与工业互联网概念的深入,工业产业进入了新一轮的全球性革命,互联网、大数据与工业的融合发展成为了新型工业体系的核心,工业大数据的应用将带来工业生产与管理环节的极大的升级和优化,其价值正在逐步体现和被认可。工业大数据是推进工业数字化转型的重要技术手段,需要“业务、技术、数据“的融合。这就要求从业务的角度去审视当前的改进方向,从IT、OT、管理技术角度去思考新的运作模式、新的数据平台、应用和分析需求,从数据的角度审视如何通过信息的融合、流动、深度加工等手段,全面、及时、有效地构建反映物理世界的逻辑视图,支撑决策与业务。因此,工业大数据的发展将呈现以下发展趋势:(1)数据大整合、数据规范统一。工业企业逐步加强工业大数据采集、交换与集成,打破数据孤岛,实现数据跨层次、跨环节、跨系统的大整合,在宏观上从多个维度建立切实可行的工业大数据标准体系,实现数据规范的统一。另一方面,在实际应用中逐步实现工业软件、物联设备的自主可控,实现高端设备的读写自由。(2)机器学习,数据到模型的自动建模。在实现大数据采集、集成的基础上,推进工业全链条的数字化建模和深化工业大数据分析,将各领域各环节的经验、工艺参数和模型数字化,形成全生产流程、全生命周期的数字镜像,并构造从经验到模型的机器学习系统,以实现从数据到模型的自动建模。(3)构建不同领域专业数据分析算法。在大数据技术领域通用算法的基础上,不断构建工业领域专业的算法,深度挖掘工业系统的物理化学原理、工艺、制造等知识,满足企业对工业数据分析结果高置信度的要求。(4)数据结果通过3D工业场景可视化呈现。进行数据和3D工业场景的可视化呈现,将数据结果直观的展示给用户,增加工业数据的可使用度。通过3D工业场景的可视化,实现制造过程的透明化,有利于过程协同。三、工业大数据市场纵览目前,国内外做大数据的厂商主要分为两类:一类是已经具有获取大数据能力的公司,他们利用自身优势地位冲击着大数据领域,并占据着市场主导地位。主要包括IBM、SAP、HPE、Teradata、Oracle、Microsoft等老牌厂商,谷歌、亚马逊、百度、腾讯、阿里巴巴等互联网巨头,以及华为、浪潮、中兴等国内领军企业,涵盖了数据采集、数据存储、数据分析、数据可视化以及数据安全等领域。另一类是初创的大数据公司,他们针对市场需求,为市场带来创新方案并推动技术发展。国外如专注Hadoop技术的三家公司Cloudera、Hortonworks(两家公司已合并)和MapR(已被HPE收购),以及Palantir、Splunk、Tableau(已被Salesforce收购)等,其中Palantir被称为硅谷最神秘独角兽的大数据挖掘公司,Splunk从日志分析工具起家,当前已成为机器数据分析龙头企业;国内有航天云网、树根互联、石化盈科等一批具有制造基因的企业,他们具有较强数据汇聚能力,还包括星环科技、天云大数据、昆仑智汇、美林数据、东方国信、Kyligence等技术型企业,他们在数据存储、数据建模、分析处理等领域不断突破核心技术。四、工业大数据产业发展 工业大数据技术及应用将成为未来提升制造业生产力、竞争力、创新能力的关键要素,是驱动产品智能化、生产过程智能化、管理智能化、服务智能化、新业态新模式智能化,以及支撑制造业转型和构建开放、共享、协作的智能制造产业生态的重要基础,对实施智能制造战略具有十分重要地推动作用。当前,我国的大数据产业增长迅速,产业规模持续放大。大数据产业主要涵盖三个层次:基础支撑、数据服务和融合应用相互交融,协力构建了完整的大数据产业链。基础支撑是整个大数据产业的核心,它提供了大数据产品和服务正常运转所需的多样化软硬件资源,包括大数据存储管理系统、大数据网络和计算等系统资源管理平台,大数据管理平台,以及大数据相关硬件设备等。其中,大数据存储、网络和计算相关的软硬件产品和服务,为海量数据的存储、传输和分析挖掘奠定了坚实基础,代表厂商有专注Hadoop发行版的星环科技、红象云腾和天云大数据,传统数据库厂商人大金仓和南大通用,研发新型分布式数据库的巨杉数据库、PingCAP等,以及华为、联想、浪潮、中兴等硬件厂商。数据服务是围绕各类应用和市场需求,提供辅助性的服务,包括前端的数据采集、中端的流处理、批处理、即时查询、数据分析和数据挖掘,末端的数据可视化,以及贯穿始终的数据安全。这一层通常与上层融合应用相伴,同时也可作为独立的环节提供技术服务。由于数据服务层覆盖了数据处理各个流程,积极布局各个细分领域的厂商也较多。例如在商业智能领域有阿里云,其Quick BI是第一个入选Gartner数据分析和商业智能领域的中国产品,还包括永洪科技、帆软和亦策等;数据可视化领域的海智BDP、海云数据、数字冰雹相对领先;在数据安全领域有网智天元、安恒信息、明朝万达等。融合应用是大数据产业的发展重点,主要包含了通用性的营销大数据,以及与行业紧密相关的各类细分领域整体解决方案。在大数据应用市场,一种厂商致力于为企业提供大数据驱动的数字营销解决方案;另一种厂商则基于自身在数据技术的积累,结合不同行业的属性和需求,向客户提供具有行业特色的整体解决方案,在这一细分市场,布局的厂商众多,例如以阿里巴巴、百度、腾讯、人大金仓、浪潮、曙光、南大通用为代表的互联网企业、云计算和数据库厂商纷纷加大应用推广力度,在国际先进的开源大数据技术基础上,形成各自的大数据平台、和应用服务解决方案,以支撑不同行业不同领域的专业化应用;还包括昆仑数据、美林数据、百分点等厂商,也均形成了面向不同行业/领域的大数据应用,如百分点已推出了基于大数据的智能营销、基于大数据的智能供应链、基于大数据的智能工厂、基于大数据的智能物联网这四大智能场景解决方案。随着大数据技术与开源社区的不断成熟,为数据技术向工业界渗透提供了必要的条件,同时也为高端制造企业提供了巨大的市场机会。近年来,国际知名工业企业、软件公司和科研机构纷纷研发面向制造业转型升级的大数据产品和系统。美国通用电气(GE)公司联合Pivotal向全球开放工业互联网云平台Predix,将各种工业资产设备接入云端提供资产性能管理(APM)和运营优化服务;丹麦维斯塔斯(Vestas)公司联合IBM基于Big Insights大数据平台分析气象、传感器、卫星、地图数据支持风场选址、运行评估等工作;德国西门子公司面向工业大数据应用,整合远程维护、数据分析及网络安全等一系列现有技术和新技术,推出Sinalytics数字化服务平台,作为其实现工业4.0的重要抓手;德国SAP公司开发了面向物联网应用和实时数据处理的HANA大数据平台,并利用其在传统企业信息化ERP系统上的优势,推动HANA与信息化系统的集成;美国航空航天局(NASA)对外开放自身数据,帮助进行火星8生命探测和天文观测等。此外,硅谷新兴创业公司也在积极投入工业数据的技术和产品研发,典型代表有Uptake Tech公司,为建筑、航空、采矿行业提供分析与预测软件服务。
变更备案指引-变更网站已在我司取得备案号,此次需进行变更备案,操作步骤如下。操作步骤1、登录蓝队云会员中心,输入账户及密码进行登录2、登录会员中心后,左边框栏点击网站备案-选择我的备案-备案列表,在页面中找到要变更的备案-点击查看详情-变更网站。 3、编辑网站的信息在填写网站信息页面,根据实际情况以及页面提示填写所需信息。如果没有变化,直接点击下一步,上传备案资料。说明l网站名称:填写实际使用名称,需跟单位名称有所关联。个人备案不能直接使用个人名字,其他单位建议使用单位名称。l网站首页网址:填写备案域名。(WWW.不用填写进去)l网站域名:填写备案域名。(2019年4月22日起一个网站只能提交一个域名)l所属产品:先点击左边选择您购买的服务器或者虚拟主机,然后点击右边空白栏选择FTP账号或者IP。无我司服务器或虚拟主机类产品无法备案。l网站语言类别:选择中文简体。其他语言建议不要多选。l 网站服务内容:根据实际网站内容选择。个人建议选择综合门户,其他建议选择单位门户网站。l 前置或专项审批内容类型: (非必选项)如果您的网站中涉及前置审批中内容,请先联系当地对应的主管部门进行咨询,并办理前置审批文件。l 网站负责人信息:如果您的网站负责人与主体负责人不是同一个人,可在网站负责人信息栏下选择填写新负责人信息。如是一个人请点击复制主体负责人即可。网站负责人将在后续环节中进行拍照核验。l单位网站备案需注意当地管局规则要求,主体负责人和网站负责人是否必须为法定代表人。请参见您备案对应的省、自治区、和直辖市管局规则。l 如果需要同时变更多个网站,可以进行点击文字“保存网站信息,继续修改其他网站”,重复操作填写网站信息页面即可。 5.上传相应的附件资料根据页面提示上传资料,然后单击下一步。说明l主办方证件:请上传真实清晰的主办方证件l身份证:请按照红色提示名字上传身份证件。可以正反面合并一张上传,也可以分开上传。真实清晰方可使用。l真实性核验单:需下载、打印,用黑色签字笔填写,再扫描或拍照后上传。请参照右边模板填写。l幕布照:请上传网站负责人拍照幕布照。PS无法受理;幕布上公司名字需清晰;幕布以外地方请截图删除。具体参考右边模板。l域名证书:在我司注册域名无需上传域名证书,不在我司注册域名必须上传。多个域名无法上传请联系发送QQ65435288。l其他附件:根据备案当地管局规则要求,上传授权书等。具体请联系QQ65435288或参考管局规则。6.确认备案信息,提交备案进行内审请检查备案信息是否填写有误,返回上一步修改,或者提交审核。7.提交备案后,蓝队云将在 1-2 个工作日进行初审。请您保持备案信息中的联系电话畅通以便工作人员与您核实信息。如果备案信息填写错误,已经提交内审,可以联系工作人员退回备案信息进行修改,修改好备案信息可以重新提交进行内审。8.内审通过后,我司备案人员会将备案信息提交到管局,提交到管局之后,部分省份需进行短信核验,核验通过之后,等待管局审核,备案进度变成“管局审核中”,管局审核时间一般是1-20个工作日内审核,请耐心等待管局审核。9.短信验证。用户需完成短信验证后,备案申请才能成功提交管局审核。注意查收工信部发出的短信核验码,并根据短信提示在24小时内登录工信部网站完成核验。更多详情和操作步骤,参见域名备案短信息核验常见问题 后续管局审核结果将以短信及邮件形式通知。登录蓝队云会员中心查看备案进度。备案成功网站开站之后,请将正确网站备案号和当地管局的查询链接放置于备案首页页末。
变更备案指引-变更主体已在我司取得备案号,此次需进行变更备案,操作步骤如下。注:(变更主体必须选择一个网站进行更新资料)操作步骤1、登录蓝队云会员中心,输入账户及密码进行登录2、登录会员中心后,左边框栏点击网站备案-选择我的备案-备案列表,在页面中找到要变更的备案-点击查看详情-变更主体。 3、填写需要变更的主体信息在填写主体信息页面,根据实际情况以及页面提示填写所需信息,然后单击下一步,填写网站信息。 说明l通信地址所属区域:与通信地址需同一个省市区。l 证件住所:需跟主办单位证件上一模一样。l通信地址:可填写证件上的地址,也可填写您实际的办公或住所地址。需填写到号,如果地址无详细门牌号,需在备注中说明。l 务必填写真实有效的联系信息(电子邮箱和电话号码)。并且,备案成功后,若联系信息变更,请务必及时变更备案信息,以便您能及时接收到备案相关通知和提醒。l 变更的主体跟原来的主体之间必须有关联。4.编辑网站的信息在填写网站信息页面,根据实际情况以及页面提示填写所需信息。如果没有变化,直接点击下一步,上传备案资料。说明l网站名称:填写实际使用名称,需跟单位名称有所关联。个人备案不能直接使用个人名字,其他单位建议使用单位名称。l网站首页网址:填写备案域名。(WWW.不用填写进去)l 网站域名:填写备案域名。(2019年4月22日起一个网站只能提交一个域名)l所属产品:先点击左边选择您购买的服务器或者虚拟主机,然后点击右边空白栏选择FTP账号或者IP。无我司服务器或虚拟主机类产品无法备案。l网站语言类别:选择中文简体。其他语言建议不要多选。l网站服务内容:根据实际网站内容选择。个人建议选择综合门户,其他建议选择单位门户网站。l前置或专项审批内容类型: (非必选项)如果您的网站中涉及前置审批中内容,请先联系当地对应的主管部门进行咨询,并办理前置审批文件。l网站负责人信息:如果您的网站负责人与主体负责人不是同一个人,可在网站负责人信息栏下选择填写新负责人信息。如是一个人请点击复制主体负责人即可。网站负责人将在后续环节中进行拍照核验。l单位网站备案需注意当地管局规则要求,主体负责人和网站负责人是否必须为法定代表人。请参见您备案对应的省、自治区、和直辖市管局规则。l如果需要同时变更多个网站,可以进行点击文字“保存网站信息,继续修改其他网站”,重复操作填写网站信息页面即可。 5.上传相应的附件资料根据页面提示上传资料,然后单击下一步。说明l主办方证件:请上传真实清晰的主办方证件l身份证:请按照红色提示名字上传身份证件。可以正反面合并一张上传,也可以分开上传。真实清晰方可使用。l真实性核验单:需下载、打印,用黑色签字笔填写,再扫描或拍照后上传。请参照右边模板填写。l幕布照:请上传网站负责人拍照幕布照。PS无法受理;幕布上公司名字需清晰;幕布以外地方请截图删除。具体参考右边模板。l域名证书:在我司注册域名无需上传域名证书,不在我司注册域名必须上传。多个域名无法上传请联系发送QQ65435288。l其他附件:根据备案当地管局规则要求,上传授权书等。具体请联系QQ65435288或参考管局规则。6.确认备案信息,提交备案进行内审请检查备案信息是否填写有误,返回上一步修改,或者提交审核。7.提交备案后,蓝队云将在 1-2 个工作日进行初审。请您保持备案信息中的联系电话畅通以便工作人员与您核实信息。如果备案信息填写错误,已经提交内审,可以联系工作人员退回备案信息进行修改,修改好备案信息可以重新提交进行内审。8.内审通过后,我司备案人员会将备案信息提交到管局,提交到管局之后,部分省份需进行短信核验,核验通过之后,等待管局审核,备案进度变成“管局审核中”,管局审核时间一般是1-20个工作日内审核,请耐心等待管局审核。9.短信验证。用户需完成短信验证后,备案申请才能成功提交管局审核。注意查收工信部发出的短信核验码,并根据短信提示在24小时内登录工信部网站完成核验。更多详情和操作步骤,参见域名备案短信息核验常见问题。后续管局审核结果将以短信及邮件形式通知。登录蓝队云会员中心查看备案进度。备案成功网站开站之后,请将正确网站备案号和当地管局的查询链接放置于备案首页页末。
这是两个颇为引人注目的PON标准,其中一个是由ITU/FSAN制定的Gigabit PON(GPON)标准,另一个是由IEEE 802.3ah工作组制定的Ethernet PON(EPON)标准。EPON和GPON谁将主导FTTH大潮已成为当前新的争论热点。一、技术指标比较 GPON和EPON的技术差别很小。两者的区别主要是接口,其交换、网元管理、用户管理都是类似、甚至相同的。比较而言,GPON在多业务承载、全业务运营上更有优势,这主要是由于GPON标准是FSAN组织制定的,而FSAN是运营商主导的。二、成本因素比较在芯片方面,EPON继承了以太网“简单即是美”的优良传统,尽量只做最小的改动来提供增加的功能。EPON从技术角度“进入门槛”很低,容易吸引大批厂商加入EPON产业联盟。GPON芯片功能比较复杂,需要全新设计封装格式,GPON芯片厂商数量太少,芯片价格也难以下降。在这方面,ATM就是一个前车之鉴。在光模块方面,由于GPON的光模块要满足很高的突发同步指标,对模块中的驱动和前后放大器芯片的要求很高;还要满足三类ODN的功率预算,对ONU发射机功率和OLT接收机的灵敏度也有很高要求,只能采用DFB发射机和APD的接收机,而它们的成本几乎是EPON模块中使用的传统FP发射机和PIN接收机的6倍。从技术上看,EPON设计原则就是以牺牲性能(如带宽、速度)来降低技术复杂度和实现难度,从而可以较好地控制初期成本。从技术适应场景看,EPON技术比较适合互联网接入的应用类型。GPON在成本上难以和EPON竞争。反方观点:不能简单地说GPON比EPON成本高。如果以单个光口计,GPON比EPON贵。但是,从整体建网成本计,GPON要便宜。这是因为从带宽、业务的支持能力看,每GPON端口能够接入64个、甚至128个用户,而每EPON端口只能接入32个用户。此外,在实际网络建设中,局端设备的成本占比小于10%,OLT则占到50%。而运营商看重的主要是建网成本,而不是设备成本。三、成熟度比较我国从EPON国际标准制订一开始就把EPON列入国家的863重大项目,支持国内厂商对EPON的关键技术进行攻关,2004年初完成863项目的验收,之后滚动投入二期资金支持优秀厂商进行EPON系统的商业化推广。与EPON相比,GPON的产业链还不完整,成熟度稍逊一些。由于网络建设规模相对较大,EPON的技术简单,技术成熟较早。而且由于商用进程的领先,EPON在互联互通方面具有相对优势。EPON技术简单有效,成熟稳定,尤其是针对中低端客户和住宅用户,相对ADSL(非对称数字用户线路)而言具有很大优势。四、多业务和安全性比较GPON标准由FSAN组织制定,ITU-T颁布。FSAN(Full Service Access Networks,全业务接入网)联盟是由运营商主导的光接入标准论坛,其成员主要是网络运营商、设备制造商以及作为观察员的业内资深专家,GPON技术提供语音、数据和视频等三网融合业务能力,GPON是由运营商推动建立的标准,对带宽、业务承载、管理和维护等考虑得更多。GPON拥有比EPON更高的带宽,覆盖范围更广,可以承载更多的业务种类,更完善的操作维护功能。由于考虑了较多的高等级业务支持,初期成本较高。从技术适应场景看,GPON技术比较适合全业务运营和三网融合的应用类型。GPON能够提供较高的带宽效率,具有传输时钟等能力,并且能够在网络运维以及网络综合管理等方面满足运营商更高的要求。五、总结GPON和EPON适用范围不同,应用场景有重叠的地方,但更多的是互补。在住宅用户FTTB应用方面会产生重叠,都能满足宽带提速应用需求;在FTTH应用场景下,特别是在全业务运营场景下GPON更具优势(更高的带宽能力:2.55倍于EPON下行带宽,1.37倍于EPON上行带宽;更高的分光比1∶128),组网成本比EPON更低。实际上,在建网和组网的过程中,GPON和EPON的建设模式并没有太大区别,只不过是运营商在宽带接入上面临的技术选择而已。“从目前看来,GPON的业务提供能力与EPON基本一致,到目前为止还没有出现GPON能做而EPON做不了的业务接入。由于技术特点不一样,EPON和GPON技术实际是两个不同的市场应用,EPON技术比较适合互联网接入的应用类型,GPON技术比较适合全业务运营和三网融合的应用类型。从商业角度看,这其实是两个细分市场。对于EPON和GPON引入时机和策略的问题,还要补充一点的是,从终端用户角度看,不管是EPON、GPON,其实对用户都是不可见的,尤其是FTTB建设模式,用户家里的终端设备,只看到了以太网接口和电话接口,不需要考虑GPON和EPON的事情。其实,只要有市场,技术不是问题,那只是运营商的“技术情结”而已。
一、概述近日,发现了一起恶意文档释放Python编写的远控木马事件。通过文档内容中涉及的组织信息和其中攻击者设置的诱导提示,该事件是一起针对阿塞拜疆共和国国家石油公司进行的定向攻击活动。此次事件中,攻击者充分利用技术实现规避反病毒软件查杀,具体为利用了隐写术将远控木马相关文件以压缩包格式存储于恶意文档里的图片中以备后期提取利用。首先将该恶意文档另存为docx文件,该文件格式具备ZIP文件的特性,然后另存为ZIP格式进行解压并获取其中的图片,最后提取图片中的远控木马文件。此远控木马采用Python语言编写,具备一般远控的上传、下载和命令执行等功能。二、事件对应的ATT&CK映射图谱本报告中涉及事件为攻击者针对目标系统投放恶意文档,释放并运行远控木马。通过梳理该事件对应的ATT&CK映射图谱,揭示攻击者在该事件中使用的技术点,如下图所示:图 2‑1此次攻击活动的ATT&CK映射图谱具体的ATT&CK技术行为描述如下表所示:表 2‑1事件对应的ATT&CK技术行为描述表三、样本分析1. 样本标签表3‑1样本标签2. 样本运行流程当恶意文档中的宏代码运行后,存在两个自动执行函数,在不同状态下触发执行。一个是当文档状态处于打开时触发执行,通过创建目录、拷贝、另存ZIP格式、解压等操作获取嵌入图片中的Python编写的远控木马;另一个是当文档状态处于关闭时执行,调用shell以隐藏窗口的方式执行bat远控启动脚本,进而运行远控木马脚本,该脚本主要功能为释放vbs脚本文件(内容为调用bat远控启动脚本),并以该脚本为载体创建计划任务,同时建立循环加载配置文件与C2建立连接,获取指令,执行对应操作。图 3‑1宏代码创建和释放的相关文件图 3‑2样本运行流程3. 恶意文档分析样本为一个具有恶意宏代码的Word文档,从内容上看,是以SOCAR公司的名义伪造的一份“关于分析用催化剂的出口”的文档,同时利用模糊效果和提示信息的手段,诱骗目标通过点击“启动宏”按钮的方式可查看文档详细内容。SOCAR是阿塞拜疆共和国国家石油公司的简称,结合文档内容,判断这是一起针对阿塞拜疆共和国国家石油公司员工的恶意文档投递活动。图 3‑3文档内容通过提取文档中的宏代码分析,主要有两个触发操作的函数“Document_Open()”和“Document_Close()”,同时该宏代码存在大量混淆。将“rqxjx”、“RXQYE”、“_RXQYE_20210329_092748_rqxjx_”字符大量嵌入到自定义变量和函数中,能够在一定程度上规避反病毒软件和干扰分析工作。图 3‑4自动执行的相关函数图 3‑5混淆的宏代码解混淆后,从Document_Open()函数中可以看到其中定义了一些文件路径变量,通过MyFunc23函数解密相关路径,依据这些变量创建相应目录和文件,同时提取恶意文档中利用隐写术保存于图片中的远控木马相关文件。图 3‑6 Document_Open函数内容表3‑2变量信息图 3‑7 Python编写的远控相关文件Document_Close函数功能为以隐藏方式运行远控木马启动脚本,脚本文件即为“C:\Users\MA\AppData\Roaming\nettools48\”目录下的runner.bat文件。该脚本文件初始设置了一定时间的延迟,而后运行当前文件夹下的远控木马脚本“vabsheche.py”。图 3‑8运行远控木马启动脚本脚本内容如下:远控木马脚本内容主要分为三部分:4.释放的远控木马分析第一部分定义了多个系统判断函数,包括Windows、Linux和Mac OS X,同时读取C2地址配置文件,获取对应域名和端口。从系统判断函数上看,虽然本次发现的脚本中只调用了Windows系统判断函数,且后续内容只能在Windows系统上执行,但是不排除攻击者后期会开发针对Linux和Mac OS X系统的脚本。图 3‑9远控脚本第一部分内容第二部分定义一个task_registration函数,主要功能为将启动脚本runner.bat的路径写入vbs脚本中,实现vbs脚本调用运行远控,而vbs的调用,是通过调用schtasks命令创建计划任务,实现每三十分钟运行一次vbs脚本。最后以Windows系统判断函数运行结果来触发task_registration函数。图 3‑10远控脚本第二部分内容最后一部分功能是C2命令处理过程,具体如下:通过同目录下的证书文件“cert.pem”结合前期获取的域名和端口,同C2建立连接,获取C2返回信息。图 3‑11连接C2代码在整体代码上添加了循环和容错处理,如果连接成功,则解析C2返回的信息,依据特定数据,执行不同的指令操作;连接失败,则延迟120秒,继续尝试连接C2,持续运行此过程。远控木马C2地址:pook.mywire.org 端口:220。表3‑3远控木马指令表四、总结由于该远控木马是用Python编写,对应文件具备脚本文件特性,其实质文件格式为文本文件,相较于PE文件,这种文件格式在一定程度上能够降低被反病毒软件查杀的可能性,同时结合远控木马VT检测结果,安天CERT认为这种脚本形式的远控木马将会更加频繁的被攻击者使用,甚至结合混淆编码进行使用。
工业信息安全是一个全新的工业安全领域,具有高度的前沿性和复杂性,泛指工业运行过程中的信息安全,包括了工业控制系统信息安全、工业互联网安全、工业大数据安全、工业云安全、电子商务安全等,其核心任务就是确保工业自动化、信息化、数字化、网络化和智能化等基础设施的安全。工业信息的安全覆盖行业面广,涉及交通、能源、电力、核工业、水利、金融、公共设施等众多关系到国际民生的关键行业。当前,工业数字化、网络化、智能化的快速发展,使网络安全威胁向工业领域加速渗透,网络攻击手段日趋复杂多样,工业信息安全面临严重安全隐患。工业信息安全事件频发,促使技术更新加速。同时在各国工业快速发展下,对工业信息安全的需求也将不断增加,市场规模将进一步扩大。一、工业信息安全防护现状与传统网络安全相比,工业信息安全需适应工业环境下系统和设备的实时性、高可靠性需求以及工业协议众多等行业特征,防护难度更大。当前,新一代信息技术在加速信息化与工业化深度融合发展的同时,也带来了日趋严峻的工业信息安全问题。近年来,随着工业和信息化进程的快速推进,以及工业互联网、工业云等新兴技术的兴起,关键基础设施控制系统标准化、智能化、网络化发展,针对关键基础设施的网络攻击呈不断上升态势,攻击行为所导致的安全事故,造成的社会影响和经济损失会较为严重,处于政治、军事、经济、信仰的目的,敌对组织、国家及恐怖分子都可能把工业系统做为达成目的的攻击目标,工业控制系统所面临的挑战越来越严峻。1.攻击来源复杂化。由于攻击门槛低,攻击工具易得,犯罪分子可通过暗网等渠道进行交易和轻易获得并大量扩散各类病毒软件,发起高强度网络攻击。如美国黑客开发建立了“臭弹”(Shodan)搜索引擎,能搜索到包括关键基础设施在内几乎所有与网络相连的控制系统。目前,已有超过一亿的控制系统暴露在互联网上,攻击者能够随时随地对关键基础设施控制系统发起攻击,而且难以判断和掌握攻击来源。有关研究显示,35%的工业网络故障是由网络攻击引发。如电力行业近年来遭到恶意攻击的严重威胁,据国家电网外网边界检测统计,遭受外网恶意攻击次数逐年上升,近几年依次为3013、4045、6520、9000多次/日,G20峰会期间最高876800次/日,全部被阻断。2.攻击手段多样化。攻击者可能来自多个方面,可以通过互联网和无线网发起攻击,采用的攻击方式也是多样,如用扫描目标使用的工控设备、协议、截获数据包、注入数据更改设备行为、修改控制器的配置、篡改控制器的数据、修改或删除全部文件、窃取敏感信息、欺骗或胁迫操作人员做出错误操作等攻击方式,进行简单或复杂的恶意响应注入攻击,恶意状态命令注入攻击,恶意功能码注入攻击,拒绝服务攻击等,并在攻击时会使用为特定目标和应用定制的勒索病毒、木马病毒、震网病毒等各种病毒,不仅能够窃取敏感信息,也能够瘫痪关键基础设施的运行。3.攻击过程持续化。由于地缘政治的加剧,针对关键基础设施的网络攻击是有组织有预谋的,发生的时间、行业、采取的方式都有很大的概然性,而且很多攻击的背后都有国家的影子。其过程一般从搜集信息情报开始,搜集范围包括商业秘密、军事情报、经济情报、科技情报等,为后续攻击服务。攻击可能会持续几天、几周、几个月、甚至更长。据专家判断,2011年伊朗导弹爆炸事件,是因为导弹电脑控制系统遭“震网病毒”感染所致,而该事件据“震网病毒”爆发一年以上。4.勒索病毒是主流攻击手段。勒索病毒是最常见最重要的攻击手段。是一种发展最快,流行最广的病毒,是工控系统最危险,威胁最大的安全隐患。除了传统意义上的程序病毒外,各种新型的恶意代码层出不穷,如逻辑炸弹、特洛伊木马、蠕虫等,它们往往具有更强的传播能力和破坏力。特别是一些变种病毒,比以往任何时候都更暴力、更复杂,针对性更强。5.电力系统成为定向攻击的重要目标。电力系统是基础设施的核心,是关乎国际民生的重点目标。近年来,随着电力系统安全面临高危漏洞不断暴露,电力网络安全威胁与风险不断加大。电力能源行业一旦遭受攻击,会带来巨大的损失,攻击者只需成功进入一次,就可能导致生产瘫痪,交通瘫痪,设备损坏等一系列电力供应链的瘫痪,后果将是灾难性的,这是相当可怕的。按以往的事件,易受攻击的系统多为金融等商业信息系统,以往攻击者多为黑客或黑客组织,由于地缘政治因素,网络对抗持续增加,以往不被黑客重视的关键基础设施网络系统成为了攻击的新目标,而且攻击背后某些机构甚至国家的影子越来越明显。因此,实施电力网络攻击实际是一场战争,其中归属问题更加复杂,更加模糊。自前几年乌克兰电网遭攻击被视为实际出现的首例针对供电系统的恶意行为,标志着第一次转折性恶意行为已经出现。针对电力系统的定向攻击模式主要以邮件、木马程序、网页挂马等形式传播,攻击方式更加隐蔽,攻击范围高度扩散,攻击的手段无所不用,如在2020年的时候出现了直击电网工控系统的武器“LNDUSTYOYER”和“BIACKNEYGY”的恶意软件,不仅能关闭电力设施中的关键系统,还能让黑客远程控制目标系统,专门攻击重点基础设施和战略目标,对电力行业的网络安全威胁极大。二、工业信息安全发展前景近年来,新一轮科技革命和产业变革加速演进,5G、工业互联网、人工智能、大数据、云计算、边缘计算、密码、区块链等新兴技术加快向经济社会各领域渗透,为经济社会发展注入强劲动力的同时,也使工业控制系统信息安全威胁和风险严峻复杂,对关键信息基础设施,网络数据和信息安全带来新挑战。现有的工业信息安全企业普遍缺乏具有市场竞争力的产品,技术实力和创新能力都显不足,尚未形成产品竞争力强,行业影响力大,引领产业发展的骨干龙头企业,整体工业信息安全产业发展规模还处于低位。随着国家对工业互联网以及工业信息化安全等产业的重视,关键基础设施的安全保障不断提高,工业信息安全日益受到重视,必将进一步促进和加快我国工业信息化安全的优化升级,推动我国信息安全行业的快速发展。工业信息安全也进入加速发展时期,工业网络安全将迎来新一轮发展机遇和巨大的发展空间。1.全球工业信息安全产业规模不断扩大。近年来,全球制造业数据化转型进程加速,以大数据、云计算、人工智能为代表的新一代信息技术向制造业领域全面渗透,全球工业信息安全产业将持续蓬勃发展,我国工业信息安全产业迎来快速增长期。随着工业互联网得到国家和各级政府的政策支持,主管部门对工业互联网的安全问题的配套法律法规也在逐渐建立,企业工业信息安全制度不断完善,随着工业信息安全产业政策红利将近一步释放,我国工业互联网信息安全产业规模将保持高速增长,据中国通信研究院测算,2020年我国工业互联网产业经济增值规模约为3.1万亿元,占GDP比重为2.9%,对数字经济增长的贡献超过16%。2.新技术的不断发展,促使工业信息安全产业快速发展。随着云计算、物联网、人工智能等新技术、新模式的应用发展,信息的获取方法、存储形态、传输渠道和处理方式等都发生了新的变化,网络结构的复杂化,用户的爆炸性增长,数据的快速碰撞,增加了信息安全防护的难度。企业面临日趋复杂和不断涌现的网络环境,对信息安全提出了新的要求。应用环境变化而不断产生新的要求,新一代信息技术促进新型业态研发,为促进威胁情报、态势感知、安全可视化、大数据处理等新技术在工业信息安全领域的创新突破,也为信息安全行业产品和服务的升级与拓展带来了新的增长点。3.能源和公用事件仍为工业信息安全的重要领域。据行业应用方面的数据表明,能源和公用事件(市政)领域仍然是工业信息安全的“主战场”,由于控制系统和物联网设备的广泛应用,交通运输行业工业信息安全需求也显著增强,成为增速最快的垂直行业,由于制造业间谍活动等网络威胁加剧,预计未来增速将进一步加快。4.工业信息安全产业链联动发展。工业信息安全保障的重要性、复杂性和及时性是一项系统工程,产品定制化越来越明显,需要工业企业、工控系统厂商、安全企业、研究机构、行业主管部门等参与方上下游联动,产业生态由小变大,进行紧密配合,加快开展多层次、多维度的合作,形成有效的业务安全实践,共同打造协同发展的生态系统。目前我国工业互联网产业联盟聚集了1600多家企业、高校、研究机构开展技术、标准、产业合作创新。总体而言,工控安全,将会打破现有的技术形态和管理体系,在面对工控安全的极大脆弱性,可能爆发大量安全事件的情况下,通过持续的监管工作机制,基于企业的业务特点,建立数据资产为核心的安全保障技术体系,通过安全产品+运营服务的动态模式保障工控安全,同时,加大工控系统本体安全的研究和工程化,从架构安全、被动防御、积极防御到威胁情报,整体建设、完善工控安全保障体系,是未来工控安全的发展方向。
一、概述工业企业网络环境主要由工业控制网络和信息网络组成。通常企业信息网络会接入互联网,因此会受到互联网环境中勒索软件的攻击。如果企业信息网与工业控制网络直接或间接连接,勒索软件可能会通过企业信息网络或摆渡方式传播到工控网络中,从而感染工业控制系统。勒索软件加密计算机磁盘中的文件,就会影响到工业企业中信息系统和工业控制系统的正常运行,最终造成企业企业经济层面和信誉上的损失。所以工业企业应当重视对勒索软件的防护。近年来,针对工业控制系统的勒索软件增长迅速,其中以Sodinokibi、Ryuk和Maze为首的勒索软件家族最为猖獗。近日,安天CERT发现一起入侵工业控制系统并最终投放勒索软件的攻击事件,此次事件影响了欧洲一些国家的工业企业,其工业控制环境的服务器被加密,导致工控业务系统临时关闭。经过分析,该起攻击事件归属于一个新的勒索软件家族Cring(也被称为Crypt3r,Vjiszy1lo,Ghost,Phantom等)。该勒索软件最早出现于2020年末,使用AES256+RSA8192算法加密受害者的数据,要求支付2个比特币作为赎金才能恢复数据。攻击者利用CVE-2018-13379漏洞进行攻击,一旦获取系统中的访问权限后,会下载Mimikatz和Cobalt Strike进行横向移动和远程控制,最终下载Cring勒索软件并执行。工业控制系统是国家基础设施的重要组成部分,也是工业基础设施的核心,被广泛用于炼油、化工、电力、电网、水厂、交通、水利等领域,其可用性和实时性要求高,系统生命周期长,一旦受到勒索软件的影响,不仅会导致大面积停产,也会产生更广泛的负面社会效应。二、Cring勒索软件对应的ATT&CK的映射图谱该勒索软件技术特点分布图:图 2‑1技术特点对应ATT&CK的映射具体ATT&CK技术行为描述表:表 2‑1 ATT&CK技术行为描述表三、样本分析1. 样本标签表3‑1二进制可执行文件2.攻击流程攻击者利用FortiGate VPN服务器中的CVE-2018-13379漏洞获取访问工控网络的权限,如未打补丁的FortiGate VPN设备会受到目录遍历攻击,攻击者可以利用该遍历攻击访问FortiGateSSL VPN设备上的系统文件。未经身份验证的攻击者可以通过互联网连接到该设备,从而远程访问文件“sslvpn_websession”,该文件中包含用于访问VPN的用户名和密码(均以明文形式存储)。在攻击者拿到访问VPN的用户名和密码并获取工控网络的第一个系统权限后,会下载Mimikatz工具并使用该工具窃取以前登录的Windows用户的账户凭据 。通过此种方法可以获取到域控管理员的凭据,然后通过该凭据将Cobalt Strike框架的PowerShell脚本分发到其他系统中。PowerShell脚本解密有效载荷为Cobalt Strike Beacon后门,该后门为攻击者提供了对受感染系统的远程控制能力。在获得对受感染系统的控制后,攻击者使用cmd脚本将Cring勒索软件下载到系统中,并使用PowerShell启动加密整个系统。图 3‑1攻击流程3. 样本分析该样本首先会使用名为“kill.bat”的批处理脚本执行一系列系统命令,其中包括暂停BMR Boot和NetBackup BMR服务,配置SQLTELEMETRY和SQLWriter等服务为禁用状态,结束mspub.exe、mydesktopqos.exe和mydesktopservice.exe进程,删除特定扩展名的备份文件,并且如果文件和文件夹的名称以“Backup”或“backup”开头,则还会删除位于驱动器根文件夹中的文件和文件夹,该脚本在执行后会删除自身。图 3‑2 kill.bat文件表3‑2结束相关进程和服务样本检测带参数执行,如未带参数执行,则执行完kill.bat后退出。如带参数“cc”执行,则开始全盘遍历文件并加密,最后释放勒索信并使用批处理脚本删除自身。图 3‑3样本带参数执行加密以下扩展名文件:.vhdx、.ndf、.wk、.xlsx、.txt、.doc、.xls、.mdb、.mdf、.sql、.bak、.ora.pdf、.ppt、.dbf、.zip、.rar 、.aspx、.php 、.jsp、.bkf、.csv。全盘遍历目录获取文件。图 3‑4全盘遍历使用AES算法加密受害者系统上的文件。图 3‑5 AES算法加密文件使用RSA公钥加密AES私钥。图 3‑6加密文件RSA公钥大小为8192位,具体公钥值如下。图 3‑7 RSA公钥被加密的文件会在原文件名后追加后缀".cring"。图 3‑8追加后缀名创建名为“deReadMe!!!.txt”的勒索信,大致内容为需要支付2个比特币才能解密文件,攻击者在勒索信中还提供了邮箱作为联系的唯一手段。图 3‑9创建勒索信勒索后使用名为“killme.bat”批处理文件删除自身。图 3‑10删除自身四、IoCsMD5c5d712f82d5d37bb284acd4468ab3533(Cring可执行程序)317098d8e21fa4e52c1162fb24ba10ae(Cring可执行程序)44d5c28b36807c69104969f5fed6f63f(downloader脚本)
一、服务降级的目的为什么服务降级?当对业务的请求超过业务系统预设的上限阈值时,为了保证基本和重要的业务模块正常运行,1.拒绝部分请求2.不重要的业务模块暂停服务或延迟提供服务。二、服务降级的实现手段服务降级的手段有两大类:第一类是关闭部分非核心服务。例如双12当天,京东暂时关闭退货服务。第二类是拒绝部分请求。这里面又分成三个手段(1)根据RPC队列方式,把旧的请求丢弃。我们还是想想双12买东西。在业务逻辑层pendding的旧的请求,或许客户端已经取消了,因此要舍弃请求,一定先舍弃最久的。但这种方式有个问题,旧的请求可能是核心请求,新的可能是非核心请求的。(2)根据请求报文CMD的优先级。在CMD列表的请求保留,不在列表中的CMD舍弃。实际应用中,需要前两种相结合,即(1)决定什么时候开启、关闭丢弃 (2)决定丢弃谁(3)随机拒绝方式:这种不靠谱,实际环境没人用。三、服务降级的设计我们将服务降级设置在什么位置?网关还是全链路?1.在网关层做服务降级: 这样做不靠谱的地方是,因为一个网关后面可能有多个业务逻辑层。2.全链路降级。也就是使用上上个图中两种方法结合的方式。让网关、业务逻辑层、数据访问层都有降级的机制。每一层能处理多少请求自己说了算。和方案1比,方案2更靠谱。那么,有一个小疑问,在方案2中,DB层是否需要做降级?在上图的模型中,读同步写异步。读的时候,DAO层已经做了限流,就不用在DB层限流。在写请求时,会先写到MQ,所以只要是MQ没有超限,DB就不会出现问题。四、熔断的实现熔断的实现有两种方式:组件级、平台级:1.组件级解决方案Neflix的Hystrix熔断组件是个jar包。Hystrix的熔断机制是API颗粒度的。如下图所示:前面说过,Hystrix是组件级的熔断,好处是使用的时候,直接引入Jar包就可以。坏处是,任何要做熔断的微服务,它的上上游都需要引入jar,而且Hystrix限制哪个API,是需要硬编码的。2.平台级解决方案如果上下游调用是RPC。我们能否把熔断的功能写入到RPC Client。这样上游引入RPC Client客户端就可以,而不需要引入单独的jar包。此外,哪些API需要熔断,最好写在配置中心。如下图所示,我们在dashboard写入要限制API的名称以及参数,然后通过服务管理平台将配置规则推送给网关。网关上的RPC Client(RPC Over TCP)可以解析这些配置,并其下游的业务逻辑层对应的API进行熔断。服务管理平台的本质如下图所示,即服务数据平台是控制面板。服务治理平台实现熔断的逻辑图,图示比较清楚,不再赘述:在构建服务治理平台时,可以参照现在市面上新型的熔断器框架,例如Resilience4j,会有服务器模式和嵌入模式。前者会有一个独立的 Resilience4j server,后者还是引入jar包。前者性能会好不少。
通用的微服务中的解决方案如下图所示:通过配置管理平台下发恢复发布策略给网关层。我们知道,一个RPC传输协议的请求报文中,会包含很多字段:灰度发布策略要放在定长的header里组,可以根据上图红框标识字段做。如果我们要做多层的灰度发布,就需要使用数据协议中的tag。也就是说,通过网关层上层的NGINX做Header的过滤来转发流量,那么,NGINX怎么过滤呢?规则按优先顺序进行如下排序:canary-by-header - > canary-by-cookie- > canary-weight也就是说,我们通过请求header中的tag进行匹配。将请求转发到对应版本的网关层。在实际项目中,灰度发布还需要考虑数据库。即灰度和正常流量的数据,应该都是完整的两份。这样当灰度上线时,旧版本才能整套下线。如下图所示,我们可以在新版数据访问层前面放一个MQ。当应用向旧的数据访问层写入数据时,数据也向MQ写入一份,保证新版数据访问层是数据是全量的。在实际项目中,我不建议过度依赖代码实现灰度发布。原因很简单:客户的应用系统很多,不太可能把代码都改一遍。此外,微服务的环境本身是跨语言的,有Java,JS,python,go等。此外,可以的应用还可能跨物理机、VM、容器,全通过该代码是比较费劲的。这里,我推荐使用Ansible这种“外科手术式”、“代码无侵入”的方式来实现。通过Ansible发布NGINX的yaml配置文件(提前把配置写好,归类成不同的文件)、控制业务逻辑层到数据访问层的关系。例如在SpringBoot的application.properties中可以其访问的DB:当然,这就还牵扯一个Ansible操作容器云平台的问题。Ansible调用K8S、OpenShift有以下两种方式。我们知道,在K8S中,通过使用不同deployment或者修改一个deployment中的image,可以发布指定版本的应用。如果在OpenShift中,我们用ImageStream控制容器镜像的版本,就更方便了,还能结合S2I的技术,实现从源码构建应用。最后,在介绍一个通过Ansible做混合云应用发布的场景。也就说说,开发环境是容器云,生产环境有VM on AWS和容器云,需要一键式发布应用。解决的方法就是:对于生产环境容器云,发布容器镜像,通过Jenkins Pipeline部署过去。对于生产环境是AWS VM,将开发环境的war包拷贝到VM的tomcat对应目录中。拷贝war包到tomcat的范例如下:
一、C应用的基础镜像容器云上C很少,最大的原因是C语言是本地编译的。今天,我们分析一下如何在容器云上运行C应用。容器云上C应用第一个需要考虑的点是基础镜像。红帽提供基于RHEL的轻量级容器镜像UBI,大小为几十M。谈到这里,很多人会有一个朴素的疑问:如果开发环境是SUSE,那应用在上OpenShift的时候,使用红帽基于RHEL提供的镜像,运行是否完全一致?解决这个问题不难,也就是说,对于C应用容器化时,我们使用比UBI更为基础的容器镜像,使用Alpine Linux。这样我们将C的编译和运行的环境,做到容器镜像里。Alpine Linux是一个由社区开发的基于musl和BusyBox的Linux操作系统,该操作系统以安全为理念,面向x86路由器、防火墙、虚拟专用网、IP电话盒及服务器而设计。我们查看Alpine Linux的版本和Linux Kernel。我们在写dockerfile的时候,就得选对应kernel版本的Alpine Linux。我们在后面的实验使用Alpine 3.12。Alpine的基础层只有6MB的大小。Alpine使用BusyBox提供外壳程序,根据MUSL C库而不是glibc构建的。MUSL是一个最小的,符合POSIX的C标准库。Alpine镜像中有诸如cp和wget之类的命令可以正常工作。BusyBox有其自己的方式来执行系统设置任务,例如添加用户和组。Glibc glibc = GNU C Library是GNU项(GNU Project)目,所实现的C语言标准库(C standard library)。广泛存在于目前最常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。它实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。如果出现漏洞也影响巨大,如 glibc 幽灵漏洞等。Musl是一个轻量级的C标准库,设计作为GNU C library (glibc)、 uClibc或Android Bionic的替代用于嵌入式操作系统和移动设备。它遵循POSIX 2008规格和 C99 标准,采用MIT许可证授权,使用Musl的Linux发行版和项目包括sabotage,bootstrap-linux,LightCube OS等等。我们知道构建容器涉及将某些依赖项导入到映像中。Alpine有自己的存储库和自己的安装命令(apk add)。需要注意的是,Alpine存储库中的某些库是针对glibc构建的,因此使用apk add会导入大量其他二进制文件。但从源构建大多数依赖关系要比从存储库导入更容易。二、C应用的测试程序solunar_ws组件是基于REST的Web服务,可在指定日期提供特定城市的日出和日落时间并设置信息。使用以下形式的URL通过CURL调用它:solunar_ws是用C实现的基于REST的Web服务的demo,容器的总大小约为10Mb。此10Mb包括操作系统层、应用程序二进制文件和相关性,以及(在此特定情况下)完整的世界时区数据库。即使在负载下,应用程序在容器中使用的RAM也不会超过几Mb。solunar_ws组件只有两个重要的依赖项:libmicrohttpd和tzdata(全局时区数据库)。libmicrohttpd 是 GUN 下开源的一个小型的 HTTP 库,能够方便的嵌入到系统中。支持 HTTP 1.1 可以同时侦听多个端口,具有 select, poll, pthread, thread poo 等多种模式。tzdata软件包,全称time zone and daylight-saving time(DST) data,供各个Linux系统安装以读取Time Zone Database中数据。三、Alpine使用注意事项Alpine的核心应用程序都与MUSL链接,而不是glibc,并且Alpine默认不包含其他C库。对于我们中的那些在Linux开发中已经习惯于glibc扩展的人来说,使用MUSL会遇到一些问题。让我们仅举几个例子。首先,MUSL没有与glibc qsort_r()函数等效的函数,该函数用于对任意数据结构进行排序。老实说。其次,MUSL在实现某些功能方面存在一些无法解释的差距。例如,用于格式化时间数据的strftime()函数缺少glibc实现所具有的说明符。如果您需要对微服务的HTTP通信进行加密,则需要决定是在OpenShift集群中还是仅在OpenShift集群中对HTTP通信进行加密。加密到群集的流量很简单,因为我们可以配置OpenShift路由进行边缘终止。在此配置中,OpenShift路由器与微服务之间的内部流量将为纯文本。另一方面,如果即使在OpenShift集群中也要对流量进行加密,则需要为微服务提供自己的传输层安全性(TLS)支持。libmicrohttpd库支持TLS,但是要启用该支持,我们需要使用许多GNU TLS库的开发版本来构建它。当然,这些库也必须在运行时可用于容器。此外,您需要提供服务器证书,并为客户的管理员提供一种获取该证书的方法。您可以在OpenShift机密或ConfigMap中提供证书,然后将其作为文件挂载到pod的文件系统中。这种技术相对普遍,与C一起使用与从Java或其他任何语言使用在原理上没有什么不同。四、运行Alpine镜像查容器镜像构建过程:[root@helper c]# docker build -t davidwei/capp:1.0 .镜像构建成功后,可以通过podman -it运行,则容器中会有一个交互式会话,可用于编辑和构建代码。当然生产上我们不会用这种方式在容器云上开发C应用,意义不大。本小节只是验证我们可以基于alpine去做镜像定制化。五、编译并实现C应用的容器化查看如下Dockerfile,我们将C应用的编译和容器化1.第一阶段构建基于Alpine 3.12这个base image下载libmicrohttpd的源代码并进行构建,然后对solunar_ws进行相同操作。这些来源来自不同的地方,但是它们都是以相同的方式编译的。在此示例中,请注意,在构建Web服务之前,我们必须先构建libmicrohttpd。那是因为Web服务依赖它。本阶段镜像构建完以后,镜像大小约为210MB。2.第二阶段构建第二阶段从相同的Alpine 3.12基础层开始,仅安装运行时所需的软件包,即tzdata。然后,它从先前的版本中复制容器在运行时所需的两个文件:二进制solunar_ws和库libmicrohttpd.so.12。我们查看镜像构建过程:可以使用如下命令本地运行:#docker run -d -p 8080:8080 davidwei/capp:1.0# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES87c1cf607a10 davidwei/capp:1.0 "/solunar_ws" 9 seconds ago Up 8 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp zealous_dhawan六、在OpenShift上部署镜像在OCP中,我们可以:1.从dockerfile部署应用,自动生成deployment。2.部署容器镜像,自动生成deployment3.手工书写deployment,部署容器镜像。如下图所示,基于dockerfile部署应用可以自动生成deployment和route,这是第一种方法:如果C应用的源码发生了变更,那么在OpenShift中就再次直接从dockerfile部署。本文我做手工docker build主要是为了方便读者理解。为了更好地控制,执行oc create创建dc和service,如下所示(推送镜像的步骤省略)。这是第三种方法:为应用创路由,并通过浏览器访问应用:http://route_name/day/london/jun%2020七、总结从本文我们可以看出,在OpenShift上运行C应用是安全没问题的。但是,由于C无法像java那样实现外部构建(mvn),因此我们不建议让C应用参与到OpenShift的CI/CD中。我们在书写dockerfile的时候,需要以alpin Linux为基础镜像,把C应用编译和运行所依赖的环境都做到容器镜像中。
随着IT和OT网络数字化转型和融合的加速,物联网(IoT)和工业物联网(IIoT)设备正成为石油和天然气、能源、公用事业、制造业、制药、食品和饮料等行业公司的重要工具。无论是优化单个流程还是整个工厂和其他关键基础设施生态系统,这些设备都有助于提高生产效率,提高可靠性、响应性、质量和交付。然而,随着公司引入更多的工业物联网设备,这些设备在设计时通常没有考虑到安全性,它们也给环境带来了风险。四年前,NotPetya对医疗、能源和交通等领域的众多跨国公司造成了影响,许多公司的运营陷入停顿,造成的损失估计达100亿美元。多年来,我们已经看到了黑客如何破坏联网汽车,篡改关键系统,如引擎和刹车的例子。不难想象,攻击者也可能会扰乱顶级制药公司的生产,造成食品和饮料公司的资源短缺或篡改产品质量。对关键基础设施的一些最新威胁包括seigeware,黑客破坏了每个企业赖以运行其办公室基础设施的系统——灯、电梯、空调和供暖,以及物理安全系统。GPS欺骗可以让攻击者干扰导航系统,欺骗车辆操作员偏离轨道。攻击者可以通过多种方式使用联网设备采取大胆行动,或在幕后操纵,破坏我们的经济系统,更糟糕的是造成身体伤害,这些风险是真实存在的。Gartner将这些网络和资产的组合称为信息物理系统(cyber-physicalsystems, CPSs),并预测到2023年,对CPSs造成致命影响攻击的财务将超过500亿美元。即使不考虑人命的实际价值,企业在赔偿、诉讼、保险、罚款和名誉损失等方面的成本也将是巨大的。Gartner预计,到2024年,75%的首席执行官将为CPS事件承担个人责任,这为解决这一问题增加了紧迫感。所以,该如何处理呢?一、追踪跨IT/OT便捷的设备威胁关键基础设施公司需要能够识别和跟踪来自跨越IT和OT边界的物联网/工业物联网设备的威胁。但现实是,对于IT安全专业人士来说,OT网络几十年来一直是一个盲点。越来越多的传统OT资产面向互联网,以及工业公司在其环境中添加更多的互联网连接设备,以推动自动化和现代化,如何降低风险的难题只会增加。由于缺乏可见性和遥测技术,OT和IT安全团队常常处于黑暗之中,不知道已经部署在他们环境中的CPSs及其行为。二、主动的风险管理主动的风险管理要求能够从不同但互补的角度来检查和处理风险,从而保障OT环境的整体安全。实现这一点的关键是清楚地了解组织的资产、风险状况和网络流量。1.资产审计了解资产风险态势,首先要了解工业控制系统(ICS)网络和端点的可见性,并在不需要额外连接的情况下集中IT、OT、物联网和工业物联网资产信息。这样,人机界面(HMIs)、工程工作站(EWs)就可以通过有关IT威胁和漏洞的信息来丰富,从而在不影响生产率或停机时间的情况下提高这些资产的安全性。在面临风险时,能够及时在生产流程中定位受影响的资产以及相关各种设备,从而加速响应,降低损失。2.流量监控/追踪与网络流量相关的上下文安全信息也是识别和跟踪IT/OT边界威胁的关键。许多影响OT环境的攻击都是从IT网络开始的,所以防御者除了为IT系统构建威胁签名外,还需要构建ICS设备和OT网络的威胁签名。例如建立独立的ICS设备数据库,细分所涉及的资产以及设备型号。同时,若拥有一项技术可以不需要手动更新或重新配置签名来保护CPSs, 就会大幅加速检测和响应。总之,工业物联网设备正迅速成为现代OT环境的标志和竞争优势的加速器。OT和IT的边界随着IIOT的兴起正在逐渐模糊,我们必须要意识到OT与IT并不再是完全隔离独立的。ICS所面临的风险在OT环境和IT网络连通的一刻起,就已经极大超出了以往人们认知的范围。让我们从对风险和成本的洞察中学习,从新法规中提出的指导方针中学习,以领先于工业物联网设备可能给工业环境带来的风险。
一、VxLAN技术发展的背景数据中心网络中存在的几个问题(1)VLAN数量不足4094个VLAN在云计算数据中心有可能是不够的(2)虚拟化部署带来的大二层需求虚拟机的动态迁移一直限定在二层网络中,无法在不同网段之间迁移大二层的需求带来了的问题防环路问题,原有的STP显然不能满足数据中心大二层的需求,从而出现了TRILL、SPB等新数据中心技术,落地情况一般(3)多租户IP地址冲突问题云数据中心通过主机虚拟化需要为不同的用户提供服务,而用户可能使用相同的IP地址,为了隔离用户流量,需要添加额外网关、地址翻译、vpn等技术,增加了组网的复杂性(4)基于IP子网区域划分极大限制了虚拟机动态迁移功能在传统基于IP子网区域划分,虚拟机如果跨三层迁移后,网关需要发生变化必然会导致较长时间的业务中断,这个在传统的组网中是无法调和的矛盾二、VxLAN的几个概念1.overlay网络叠加技术overlay网络overlay网络是建立在已有网络上的虚拟网络,逻辑节点和逻辑链路构成了overlay网络,overlay网络是为了解决传统网络无法提供的功能和服务。Overlay分为主机overlay、网络overlay、混合overlay2. VxLAN技术(1)VxLAN虚拟可扩展局域网(virtual extensible lan),是overlay技术的一种,通过隧道机制在现有网络上构建一个叠加的网络从而绕过现有VLAN标签的限制(2)VNIVxLAN Network Identifier 虚拟扩展本地网络标示符VNI取代VLAN用来表示不同的VxLAN网络VNI是一个24位进制表示,可以扩展到2的24次方个网段(3)VTEPVxLAN Tunnel End Point 虚拟扩展本地网络隧道终结节点上行方向将虚拟机(服务器)产生的数据封装到UDP包头内发送出去,下行方向将收到的VxLAN报文解封装后发给虚拟机(服务器)VTEP之间建立了两点之间的隧道(VTEP可以为软件、硬件服务器或者网路设备、隧道是无状态的)3. VxLAN的报文封装(1)VxLAN标签标志位(8bits),一个有效的VxLAN网络ID(VNI),第5个bit的I标志位必须设置为1;余下的7个bit的标志位是保留的,必须设置为0。VxLAN网络ID(VNI),长24bit,用于标识一个单独的VxLAN网络(2)UDP包头标准UDP包头,目的端口号为IANA分配的4798,源端口是数据帧本身的二层桢头的哈希结构,可以用作为流量负载分担的依据(3)外层三层包头外层ip包头的ip地址为隧道两端的VTEP设备地址,如果Hypervisor承担了VTEP工作则了服务器网卡地址,如果VTEP为接入交换机,则IP地址为出端口上的 IP地址或者三层接口地址、loopback地址(4)外层二层包头外层二层包头为报文在普通网络中做二、三层转发的MAC地址(目的mac为目的VTEP设备的 硬件mac或者三层网关的MAC)4.报文举例5.VxLAN GW和VxLAN IP GWVxLAN IP GW网络设备支持VXLAN报文的封装与解封装,并根据内层报文的IP头部进行三层转发VxLAN GW支持VXLAN报文的封装与解封装,并根据内层报文的MAC头部进行二层转发,实现VxLAN与VLAN的互通三、VxLAN技术原理1.VxLAN的控制平面VxLAN的控制平面实现方式分为3类(1)自学习模式利用泛洪/广播机制来实现VxLAN网络的建立(2)基于SDN Controller的集中式模式SDN Controller作为控制平面,通过下发流表指导VTEP的转发(3)路由协议扩展模式通过扩展isis(类EVI)、bgp协议来实现VxLAN网络的建立2.VxLAN的控制平面—自学习模式指定VxLAN ID映射到一个IP组播组,此VxLAN的VTEP都加入该组播组,通过flooding和learning机制完成学习如图VM server属于同一个VxLAN 10 加入特定组播组239.1.1.13.VxLAN的控制平面—基于controller方式基于sdn controller方式的控制平面和地址学习SDN controller与所有VxLAN ED设备建立连接(通过openflow协议),通过SDN controller给各VxLAN ED部署下发流表来进行VxLAN的转发4.VxLAN的控制平面—基于isis协议基于isis扩展协议的控制平面和mac地址学习基于EVI邻居发现协议,通过isis扩展协议来实现控制平面和mac地址学习VxLAN网络启用ENDP协议,核心设备作为ENDS设备、接入设备作为ENDC设备,ISIS扩展协议来完成mac的发布和回收Core设备作为ENDS设备、接入设备(VTEP)作为ENDC设备,ENDC设备向ENDS设备发起注册(包括VxLAN ID、VTEP ID、network ID),ENDS发送应答包括所有ENDC设备信息,建立VxLAN控制平面5. VxLAN的数据平面隧道机制源和目的VTEP之间建立隧道,负责报文的VxLAN封装和解封装VTEP为虚拟机数据包分装了层层包头,这些新包头只会在报文到目的VTEP时才会解封装,中间路径网络设备只会根据外层包头的目的地址进行转发,对于转发路径上的网络设备,一个VxLAN报文就是一个普通IP报文在VTEP设备上进行VxLAN的封装解封装,根据MAC地址表(对应有对端的VTEP IP地址)转发,以虚拟机的二层转发/同一个VxLAN为例6. VXLAN如何解决数据中心网络中的问题(1)VLAN数量不足VNI取代VLAN用来表示不同的VxLAN网络,VNI是一个24位进制表示,可以扩展到1600万+个网段(2)虚拟化部署带来的大二层需求虚拟机可以跨三层网络迁移,不在需要大二层(3)多租户IP地址冲突问题在VxLAN网络中根据VM mac地址表转发(对应VTEP地址的),并非根据VM IP转发只需要控制不同VxLAN的互通即可解决(4)基于IP子网区域划分极大限制了虚拟机动态迁移功能VxLAN实现了计算资源与物理网络的无关性和二层网络在三层网络的扩展VM迁移后Ingress方向上寻址问题通过控制平面(扩展协议、SDN controller或者GARP来更新MAC表(对应VTEP地址的)VM迁移后egress方向上的网关不变问题VM的IP GW的VTEP IP和GW VMAC 相同,VM在迁移前后无感知网络的变化,对应的网关MAC没发生变化。
随着业务发展,很多系统需要经历服务拆分的过程。微服务化过程踩坑也是很正常的事。如果在服务拆分之前做好充分准备,能帮我们少走很多弯路。本文主要从服务依赖,接口版本,隔离,数据一致等方面说说微服务化过程应该注意的点。一、循环依赖问题微服务化之后服务之间会存在各种依赖关系,不过依赖需要遵循一定的规则,不能太随意。否则,就会出现循环依赖的问题,而且会让调用关系变得错综复杂难于维护。下面是服务依赖的几条规则:1,上层服务可以调用下层服务。2,同级服务之间不能产生依赖关系,及不能产生调用关系。3,下层服务不能调用上层服务。4,服务之间的调用关系只能是单向的。例如,在电商系统里包括支付服务(Pay),库存服务(Inventory),订单服务(Order)。支付服务和库存服务属于基础服务,订单服务属于上层服务。支付服务和库存服务是同级的服务,他们之间不能存在调用关系。订单服务属于上层服务,订单服务可以调用支付服务和库存服务,但是支付服务和库存服务不能调用上层的订单服务。 假设我们不管这些规则,让Order和Pay可以互相调用。这样就会产生循环依赖,Order调用Pay,Pay也调用Order,这样彼此都会依赖对方。循环依赖导致哪些问题?1,无限递归调用假如,Order调用Pay的A方法,Pay调用Order的B方法。然后,A方法里又调用了Order的B方法,B方法里又调用了Pay的A方法。这样就会产生无限的递归调用,后果自然不言而喻了。 2,部署依赖问题假设Order,Pay,Inventory彼此之间都可以通过API互相调用。当API接口发生变更时,为了让其他服务能够正常调用,API需要重新编译。如果Order和Pay的API都有变化,上线发布时就需要特别小心。为了保证发布成功,就需要根据服务间API的依赖关系,详细考虑先打包部署哪个服务,后打包部署哪个服务,才不至于发布失败。如果有更多的服务呢?比如10几个,梳理依赖关系都会把人搞疯的。 3,另外,循环依赖会让服务间的调用关系变得错综复杂,系统难于维护。二、接口版本兼容一些初中级程序员往往会忽略接口变更的问题,经常会因为接口变更导致线上问题。比如某个小型电商平台的订单服务调用支付服务的某个接口,产品突然提了一个需求,这个需求需要在这个支付接口上加一个参数。开发这个需求的是个新手,他直接在原来的接口方法上实现了需求并加上了参数,联调测试通过后就发布上线了。结果刚上线订单服务就开始报错,因为方法变了,加了参数,订单服务找不到老的方法了。所以就会一直报错,直到订单服务上线为止。所以我们一定要注意接口版本问题。我们可以新加一个方法去重载老的方法,在新方法里实现新的功能,新方法的定义除了多一个参数外,其他的和老方法一样。也就是给老方法加了一个新版本。这样在支付服务上线后,订单服务上线之前就不会报错了,因为老方法仍然可用。订单服务上线后就直接切到了新版本的方法。如果我们服务框架选用的是Dubbo,当一个接口的实现,出现不兼容升级时,可以用Dubbo的版本号过渡,版本号不同的服务相互间不引用。可以按照以下的步骤进行版本迁移:1. 在低压力时间段,先升级一半提供者为新版本2. 再将所有消费者升级为新版本3. 然后将剩下的一半提供者升级为新版本老版本服务提供者配置:新版本服务提供者配置:老版本服务消费者配置:新版本服务消费者配置:三、关于隔离的考虑1.数据隔离:实际上,服务化的其中一个基本原则就是数据隔离,不同服务应该有自己的专属数据库,而不应该共用相同的数据库,数据访问可以通过服务接口或者消息队列的方式。很多公司微服务化后,只做了代码工程的拆分,不同服务对应的数据仍然存放在同一个数据库中。这样做至少存在四个问题:(1)数据安全问题。别人的服务不但可以访问你的数据,而且还能修改和删除你的数据。(2)导致数据库连接耗尽。一旦某个服务的开发者写了一个慢SQL,并且这个服务也没有合理限制连接数。可能会消耗掉所有的数据库连接,进而造成访问相同数据库的其他服务拿不到数据库连接,无法访问数据库。(3)表关联查询。无法避免其他服务的开发者,为了快速上线某些需求。直接查询其他服务的表,或者跨服务做表关联查询。这样会造成服务间的耦合越来越严重。(4)表结构变化的影响。如果某个服务直接依赖于其他服务的数据,一旦表结构发生任何变化,比如修改表名或者字段。很可能会产生灾难性后果。2.部署隔离:我们经常会遇到秒杀业务和日常业务依赖同一个服务,以及C端服务和内部运营系统依赖同一个服务的情况,比如说都依赖支付服务。而秒杀系统的瞬间访问量很高,可能会对服务带来巨大的压力,甚至压垮服务。内部运营系统也经常有批量数据导出的操作,同样会给服务带来一定的压力。这些都是不稳定因素。所以我们可以将这些共同依赖的服务分组部署,不同的分组服务于不同的业务,避免相互干扰。3.业务隔离:以秒杀为例。从业务上把秒杀和日常的售卖区分开来,把秒杀做为营销活动,要参与秒杀的商品需要提前报名参加活动,这样我们就能提前知道哪些商家哪些商品要参与秒杀,可以根据提报的商品提前生成商品详情静态页面并上传到CDN预热,提报的商品库存也需要提前预热,可以将商品库存在活动开始前预热到Redis,避免秒杀开始后大量访问穿透到数据库。 四、数据一致性问题做了微服务拆分后,还可能会出现数据不一致的问题。比如支付服务中,支付状态发生变更后要通知订单服务修改对应订单的状态。如果支付服务没有正常通知到订单服务,或者订单服务接到通知后没能正常处理通知,就会导致支付服务的支付状态和订单服务的支付状态不一致,也就是数据会不一致。1.那么如何避免数据不一致的问题产生呢?我们通常所说的服务间数据一致性,主要包括数据强一致性和最终一致性。对于强一致性,使用的业务场景很少,而且会有明显的性能问题。所以这里我们主要讨论最终一致性。一般我们可以采用如下几种方式来保证服务间数据的最终一致:2.定时任务重试,同步调用接口这种方式,采用定时任务去扫表,每次定时任务扫描所有未成功的记录,并发起重试。注意,要保证重试操作的幂等性。这种方式的优点是:实现简单。缺点是:需要启动专门的定时任务,定时任务存在一定的时间间隔,实时性会比较差。而且同步接口调用的方式,耦合较重,有时无法避免循环依赖的问题。比如,Order服务可以调用Pay,Pay做为基础服务不应该调用Order。当Pay的某笔交易状态发生变更后,需要通知Order。如果采用定时任务的方式就需要Order提供一个接口,定时任务扫描过程中同步调用这个接口去更新Order的订单状态。这样又违反了单向依赖的原则,形成了循环依赖。异步消息队列,发送事务型消息 如上图,以电商下单流程为例。下单流程最后一步,通知WMS捡货出库,是异步消息走消息队列。 按上面代码,大家不难发现问题!如果发送捡货出库消息失败,数据就会不一致!有人说我可以在代码上加上重试逻辑和回退逻辑,发消息失败就重发,多次重试失败所有操作都回退。这样一来逻辑就会特别复杂,回退失败要考虑,而且还有可能消息已经发送成功了,但是由于网络等问题发送方没得到MQ的响应。还有可能出现发送方宕机的情况。这些问题都要考虑进来!幸好,有些消息队列帮我们解决了这些问题。比如阿里开源的RocketMQ(目前已经是Apache开源项目),4.3.0版本开始支持事务型消息(实际上早在贡献给Apache之前曾经支持过事务消息,后来被阉割了,4.3.0版本重新开始支持事务型消息)。先看看RocketMQ发送事务型消息的流程:(1)发送半消息(所有事务型消息都要经历确认过程,从而确定最终提交或回滚(抛弃消息),未被确认的消息称为“半消息”或者“预备消息”,“待确认消息”)(2)半消息发送成功并响应给发送方(3)执行本地事务,根据本地事务执行结果,发送提交或回滚的确认消息(4)如果确认消息丢失(网络问题或者生产者故障等问题),MQ向发送方回查执行结果(5)根据上一步骤回查结果,确定提交或者回滚(抛弃消息)看完事务型消息发送流程,有些读者可能没有完全理解,不要紧,我们来分析一下!问题1:假如发送方发送半消息失败怎么办?半消息(待确认消息)是消息发送方发送的,如果失败,发送方自己是知道的并可以做相应处理。问题2:假如发送方执行完本地事务后,发送确认消息通知MQ提交或回滚消息时失败了(网络问题,发送方重启等情况),怎么办?没关系,当MQ发现一个消息长时间处于半消息(待确认消息)的状态,MQ会以定时任务的方式主动回查发送方并获取发送方执行结果。这样即便出现网络问题或者发送方本身的问题(重启,宕机等),MQ通过定时任务主动回查发送方基本都能确认消息最终要提交还是回滚(抛弃)。当然出于性能和半消息堆积方面的考虑,MQ本身也会有回查次数的限制。问题3:如何保证消费一定成功呢?RocketMQ本身有ack机制,来保证消息能够被正常消费。如果消费失败(消息订阅方出错,宕机等原因),RocketMQ会把消息重发回Broker,在某个延迟时间点后(默认10秒后)重新投递消息。结合上面几个同步调用hmily完整代码如下:如果执行到TransactionListenerImpl.executeLocalTransaction方法,说明半消息已经发送成功了,也说明OrderService.makePayment方法的四个步骤都执行成功了,此时tcc也到了confirm阶段,所以在TransactionListenerImpl.executeLocalTransaction方法里可以直接返回LocalTransactionState.COMMIT_MESSAGE 让 MQ提交这条消息,同时将该订单信息和对应的消息状态保存在共享map里,以备确认消息发送失败时MQ回查消息状态使用。3.采用TCC,SAGA,Seata等框架以上就是微服务化后需要注意的几点。、
一、背景前后端分离是Web架构基础上的进一步演化,是Web应用程序交互逻辑和业务复杂度背景下的一种趋势,前后端必然需要去解耦。针对前后端的耦合点来说,主要集中在数据接口和HTML渲染。数据接口随着ajax的发展,已经可以现在前后端分离,不需要在进入页面的时候后端去调接口渲染页面。而针对HTML渲染,回顾之前的Web架构,我们过去有SSR方案,这个是完全由后端完成渲染,耦合程度很高,不适合现在的开发方式。随着React,Vue框架的发展,采用CSR的SPA是一种极端的实施成本最低的完全解耦方式,这种方式的html,css,js等静态资源可以放到静态服务器上,接口是唯一的前端和后端交互的媒介,这种方案也存在着一些问题。最后是node作为中间层为前后端同构JavaScript编程提供可行性,可以补充SPA的一些不足和缺陷。二、前后端分离架构对比1.基于SPA的架构设计首先我们通过一个流程图来看一下SPA的工作流程SPA工作流程通过上图,我们可以看出SPA的设计基本上前端和后端的耦合点就是接口。因为这样的设计,所以导致整个架构师完全和后端解耦的,极大地提高了开发效率。第一点,对于一个项目而言,前后端只需要在开发前约定一个接口的规范和数据格式,就可以单独的去开发各自的功能,最后只需要联调一下接口的数据就可以各自的上线,将渲染完全从服务端进行剥离。第二点,与每个页面都需要同服务端获取数据的传统web网站对比,SPA的开发方式可以建立前端路由策略来对子页面进行统筹的管理,路由的跳转可以转化成不同的组件渲染和不同函数的调用,后端只需要考虑接口的设计,不需要管理页面的路由。这种架构设计同样有不可避免的两大缺点:(1)采用SPA就需要舍弃SEO,SEO爬虫软件通过分析网站的HTML文档抓取信息,从开始就没有吧JavaScript考虑在内,即使现在的SPA的网站日趋流行,也仅有谷歌爬虫初步支持了SPA,但是也需要在编写时进行特殊处理。(2)因为SPA需要等待静态资源的加载完成再请求服务器的接口获取首屏数据,最后再渲染HTML,这段时间用户看到的也都是白屏的页面,这样也需要开发者从性能上需要花费更多的精力。针对上面两个缺陷,下面在项目实践中给出解决方案:白屏时间过长,首先我们可以不需要渲染整屏的数据,只需要渲染首屏的数据就可以,那针对不是首屏的页面,我们可以采用懒加载。针对首屏的页面,我们可以采用骨架屏来设计。通过页面的“骨架”来取代空白的页面,让用户优先得到视觉反馈,减少用户耐心的消耗。骨架屏图解针对SEO,业界也有一套适合的解决方案,但是针对实施成本,需要综合考虑。SEO解决方案总结:SPA的设计架构在不需要关注SEO的情况下,还是很方便,便捷开发,快速迭代,前后端完全解耦,在专题页以及现在的Hybrid应用,等场景是特别适用的。2.以Node作为中间层的架构设计在Web服务端与浏览器客户端之间搭建Node中间渲染层也是一种前后端分离架构设计,这种架构方案,与SPA模式相同的是,接口仍然是前端和服务端的唯一的媒介,但是这种架构可以在node层做接口的代理和整合,以及路由的设计和HTML的渲染。以二手车达尔文项目为例:Node作为中间层的架构设计针对上面这样的架构设计,可以发现几个优点:(1)由之前的前端到服务端发起请求可以转成前端通过node发起服务端请求,因为接口是node发起的,可以不用服务端做跨域的设置了,另外,我们对于一些不同部门的不同接口,但是在前端来说都是来处理同一个功能的话,我们可以在node端做一层封装,暴露给前端的也只是整合之后的接口。(2)因为HTML的渲染和模板都是由node来处理,所以也完成了前后端的解耦,后端只需要负责接口的编写。缺点也同样明显:因为这样的架构设计,对node中间层来说,所有的功能其实也可以由服务端来完成,我们把模板放到服务端,只是处理页面的内容。总结:针对独立项目来说,类似于后台管理系统,我们可以通过这样的架构来完成前后端的解耦。a) 开发阶段,我们只需要和后端完成接口的联调,路由和页面的渲染都是前端进行处理节省了沟通成本,提高了开发效率。b)后续维护阶段,如果前端更改了模板文件路径,或者要增加第三方库文件,也不需要找后端来上线,我们只需要自己上线node服务就可以,对于后续的迭代来说也是一个更好的架构设计。c) 这种设计同样只适用于不注重SEO的网站,比较适合用户中心,后台管理系统等。3.基于Node同构JavaScript的架构设计同构js的目的是为了能让js编写的代码既可以在浏览器端渲染又可以在服务器端工作。对于之前的js来说很难去脱离对DOM以及BOM的操作,这样很难去让js的代码去运行在浏览器端。而对于现在的React、Vue框架来说视图层是由数据层来控制的,被浏览器解析前的HTML文档实际上是没有平台属性的文本,Node层可以去拿到js解析后的字符串去处理,完成和客户端的同构。以React框架来说,具体的方案如下:基于React的同构图解这种架构的设计让Node作为中间层并非让Node去替代Java去渲染HTML,而是作为同构JavaScript作为支持,这种方案的好处在于既可以对于SEO友好,把HTML渲染到模板上,便于SEO爬虫软件的分析。对于首屏渲染来说,也是不错的体验,让用户能直接看到首屏的信息。总结:对于这样的一个同构方案来说很适合构建一些用户体验高,有SEO要求的页面,例如我们二手车的M端一些主要站点,很适合这样的一个架构。对于这样既可以兼顾SEO,又可以采用现在主流的前端开发框架来说,是一个不错的选择。1)这样的架构使用react或者vue可以提高我们的开发效率,,减少dom操作的频率,提高页面性能。2)开发出来的项目不仅支持SEO,同样有很好用户体验。4.搭建服务端渲染会面临的问题如果我们自己去搭建这样一套服务端渲染框架会面临着以下几个问题:a) 我们需要自己去处理前后端路由相同匹配的问题b) 需要去处理客户端以及服务端在同构时,redux数据统一的问题c) 当如果有首屏数据需要去拿服务端的数据来进行页面的渲染,如果服务端发起请求拿到数据后直接渲染页面,而不用等到客户端来加载之后才渲染页面,对于用户来说可以很大的提高用户体验,也不会出现白屏现象,这样同样需要我们自己搭建服务端框架需要考虑的问题.5.解决方案:基于Next.js的CarNext架构设计对于前端项目来说,如果能使用前后端同构这样的架构设计的话,是一个很合适的方案,通过调研,Next.js是基于react的ssr解决方案,解决了ssr同构方面的问题,我们只需要简单的二次封装就定制符合业务的服务端渲染框架。6.Next.js会有以下特点:(1)后端数据通信处理Next.js的数据处理(2)路由处理Next.js内置了路由组件,并进行了路由的封装,会读取 /pages目录下面的文件来动态生成路由。(3)提供了丰富扩展性,可以扩展Bable, Webpack ,express ,koa 等有了这样一个成熟的服务端框架,基于Next.js基础上设计了一个CarNext框架,更好的帮助我们业务进行开发。1) 数据管理:对于react组件间数据通信来说,通常是采用redux来管理数据。基于Next.js可以通过HOC来封装redux作为数据管理 Redux处理采用HOC这种设计模式:a)可以简化App组件的代码,把需要处理redux相关的逻辑放到HOC里面,实现组件的逻辑分离。b)如果前端和后端共同需要维护全局数据的状态,这个时候就需要在redux里面维持同一个数据状态。下图依照登录逻辑来说明一下:同步store通过上图的例子,当客户端同构的时候,直接可以从store拿到服务端处理的登录信息,不需要客户端来处理登录这部分逻辑,但是客户端只是使用登录信息,完成应用的其他模块的开发。这样打通了数据方面的共享。代码如下:2)proxy接口处理,在我们开发项目中可能会遇到跨域以及其他前后端通信的 问题,CarNext内置了一个代理方案,可以把客户端对服务端的请求转成CarNext来转发客户端的请求,来避免跨域等问题。代码如下:通过上图,可以看出,如果以api为开头的请求可以通过CarNext来转发,不是的话直接执行next。3)CarNext错误日志处理,我们在CarNext里面使用了koa-json-error中间件,通过联通mongodb,把项目中的一些错误日志都存到数据库里面,当遇到服务出现问题的时候能够及时的定位到问题。代码如下:同样定义路由来查询错误日志:4)其他的一些css,sass的设置,直接配置样式 可以通过下面来看出CarNext整体设计框架: 框架组成7.CarNext在项目中的应用:(1)在线上项目中,使用CarNext对首页的渲染比使用客户端开发提高了1倍的渲染速度。(2)线上项目中,在安卓的webview里面跨域请求后端接口存在丢失cookie情况,当时可以使用CarNext提供的接口代理来使用,因为CarNext是不会有跨域问题,并且还是直接node去访问。(3)项目中当时项目组同学使用node去请求服务端内网地址而代替去请求外网大大的减少了整个数据通信时间。内外网请求的对比(4)通过查询错误日志当时很快的去定位到错误情况三、总结与规划通过上文所述,如果是活动页或者Hybrid功能页,SPA这样的设计来说是一个合适的方案选择,如果是后台管理系统可以选择以node作为中间层来渲染,对于注重SEO和首屏渲染速度来说,JS的同构设计方案则更加适合。
数据作为一种现代信息社会不可或缺的新兴资源,从产生伊始就面临着被各方篡改的风险。遭到篡改的数据在可用性与真实性方面都会大打折扣。而区块链因其不可篡改、去中心化、防止单点故障的特性天然契合数据完整性保护的要求。本文从单点故障入手,主要讲述区块链在保护数据完整性的一些方法以及展望。一、问题简介随着大数据时代的到来,数据本身逐渐成为基础性的国家战略资源和社会生产要素,也因其蕴藏的价值成为各种网络攻击的核心目标。数据在其流转传输甚至整个生命周期中因数据处理环节和所涉参与方的多样性和复杂性,其完整性易受到来自各方篡改的威胁。在信息系统中,单点故障(single point of failure,SPOF)是指在整个系统中,如果某个信息点发生数据篡改或者数据丢失从而导致该点发生故障,将会使整个系统停止工作。区块链技术的诞生给信息系统单点故障提供了一种新思路。其链上数据采用分布式副本存储,每一个参与区块链的节点都保存有一份数据副本,因此可有效避免集中化存储的单点故障问题1;且区块链自身的链式哈希指针结构可确保其上数据无法被任意删改,是对数据完整性的有效保证。区块链结构如下图一所示:图1 区块链结构二、区块链技术简介区块链技术自 2009 年第一个举世闻名的数字货币比特币诞生以来迅速步入工业界和学术界的视野,近几年更是出现了大批与区块链技术结合的去中心化应用。区块链技术的发展大致分为以下3个阶段:1. 区块链 1. 0:数字货币的诞生。标志性事件是比特币问世,其最初的应用范围聚焦于货币领域。2. 区块链2. 0:标志性事件是以太坊以及运行在其上的智能合约的问世。智能合约可以自动化地执行、验证合同,全程不需要第三方仲裁机构的参与,是解决互不信任的安全多方计算的有效手段。区块链由此从货币领域扩大到整个金融领域。3.区块链 3. 0:区块链与各行各业甚至城市基础设施的结合,形成各种各样的去中心化应用,最终目标是形成可编程、去中心化社会。区块链的本质是一个拜占庭环境下交易驱动的副本状态机2,宏观上表现为一种去掉了删除和更新操作的分布式数据库。常见区块链的数据结构如下所示:图2 区块链成员信息三、现有方法总结在实施任何区块链技术之前,许多组织已经着手将其工作负载分布在多个环境和网络中,以提高弹性并最大程度地保证数据完整性并减少单点故障。尽管这些努力在很大程度上开始获得回报,但仍然存在有关可用度量的效率的问题,这些度量可用于提供一定程度的信心,以确保端到端工作流程正在正确执行。简而言之,如果所使用的一个或多个网络资源出现故障,如何实时或近实时地捕获,分析,传达和缓解故障?更重要的是,信息泄露程度是多少?最终,由于必须根据分布式网络体系结构的实现来衡量集中式IT系统体系结构设计的收益和成本,因此区块链技术在该领域既带来挑战,也带来机遇。区块链应用于数据完整性保护而后解决信息单点故障问题的方法按其类型可分为基于公有链的、基于联盟链的、基于私有链的三大类型,其中每个类型按应用场景和数据特性又分为溯源与确权数据保护、日志数据保护、物联网数据保护等,下面分别讨论各场景下将区块链技术应用于数据保护各个方案相较传统数据保护方法的优势以及自身的一些不足之处。在溯源数据保护以及溯源链建立方面,当前数据溯源的主要传统方法有数据引证技术3、标注法4、反向查询法5等。然而这些传统方法对溯源数据本身的保护不足,往往需要依赖中心化的第三方存储或验证溯源数据。如何安全可靠地存储溯源数据成为溯源领域的难点。区块链在溯源和确权中应用的核心思想是将溯源数据上链保存达到溯源数据不可篡改的目的。但区块链只能保证链上数据的完整性,不能保证溯源数据来源的可靠性与数据本身的真实性,需要在链下结合其他数据真实性审计与校验手段。在日志数据保护方面,区块链应用于日志数据完整性保护可以确保日志数据不被篡改,提升日志可靠性,加强系统的安全性。但由于链上存储空间开销大,因而大多数区块链日志应用仅存储日志数据的摘要或哈希而不是完整数据。虽然能检测篡改,但那些数据损坏的节点想要恢复日志数据仍然要依靠链下手段,并且智能合约应用不足,应深度研究结合智能合约的日志自动化验证方法。在物联网数据保护方面,应根据要保护的数据所在的物联网设备特性对所用区块链进行定制化设计。比如物联网设备的普遍特点是设备小而多,单个设备并不具备很强的算力,这就不太适合采用工作量证明这种算力要求高的共识算法。而且设备数据存储能力也有限,需结合链下专门的存储设备存储数据。近年来新型分布式账本 (IOTA) 是物联网区块链应用数据保护的一个可选项,其目标就是应用于物联网设备并建立机器经济,使交易无需手续费且数据上链速度高。在区块链技术用于其他非 IT 行业数据保护方面的应用处于初步探索与试点应用阶段,共性思路是将需要保护的数据存储到区块链上以达到数据保护的目的。近几年来区块链技术越来越多与各行业结合,出现了去中心化应用(Decentralized Applications,DAPP)、去中心化组织(Decentralized Autonomous Organizations,DAO)、去中心化公司(Decentralized Autonomous Companies,DAC)甚至去中心化社会(Decentralized Autonomous Society,DAS)的概念,但与各行业结合前应该探索本行业哪些数据适合去中心化上链存储,因为链上存储空间开销大,所以那些需要频繁更新且规模庞大的数据就不太适合存储在区块链中。区块链更适合存储凭证、证书以及摘要或哈希等无需经常改动的数据。另外,那些必须受到第三方监督的领域应该采用联盟链或私有链这种中心化程度较高的区块链类型以满足监管要求,而不是完全去中心化的公有链。四、总结与展望本文首先对区块链和数据完整性保护的相关概念进行了阐述,然后对于相关保护方法简要介绍。区块链因其自身去中心化、区块中数据不可篡改的特性,在数据保护领域中有着天然的优势,是未来分布式环境下数据保护的一大可行方向。区块链技术在数据完整性保护领域的完整性验证效率、数据恢复能力、数据历史版本回溯能力以及防止单点故障和抗删改方面都有较好的表现;但现有数据完整性保护应用较少且处于初创阶段,亟待学者们研究。
服务热线:
4006-75-4006(7*24小时在线)
总机直拨:
0871-63886388(工作日9:00-18:00)
售前咨询
售后咨询
备案咨询
电话
二维码
TOP