当前位置: 首页 > news >正文 昆山公司网站制作数据做图网站 news 2025/11/2 6:45:53 昆山公司网站制作,数据做图网站,wordpress小机巧,如何做全景素材网站作者 | 弘远君 导读 本文以百度垂类离线计算系统的演进方向为主线#xff0c;详细描述搜索垂类离线计算系统发展过程中遇到的问题#xff0c;以及对应的解决方案。架构演进过程中一直奉行“没有最好的架构#xff0c;只有最合适的架构”的宗旨#xff0c;面对不同阶段遇到的… 作者 | 弘远君 导读 本文以百度垂类离线计算系统的演进方向为主线详细描述搜索垂类离线计算系统发展过程中遇到的问题以及对应的解决方案。架构演进过程中一直奉行“没有最好的架构只有最合适的架构”的宗旨面对不同阶段遇到的问题给出了适合的解决方案。尤其是近10年来的超大规模系统架构的升级 一方面需要考虑系统本身的通用性和适配性以满足多个业务方的需求另一方面需要结合系统当前运行的特点在易用性、稳定性、智能化等不同方面进行提升。希望读者能在了解系统演进的过程中获得一些启发。 全文9127字预计阅读时间23分钟。 01 相关背景介绍 在过去用户通过“百度一下”得到的搜索结果是从互联网上抓取来的结果也被称为“自然结果”。随着网络信息日益丰富自然结果不能有效满足用户需求。为了解决自然结果无法满足搜索需求的问题提出了针对各个垂类深耕的搜索结果的解决方案一方面为用户带来的更优质的内容让用户体验即搜即得的便捷另一方面也可以帮助优质内容生产者提升访问量。 随着业务发展除了标准通用的业务处理需求变更之外越来越多的业务有自定义代码的更新需求。通过自定义数据处理一方面产品负责同学可以将原始传入的数据按照业务需求进行定制化处理将原始数据转化为最终搜索的结果数据。 另一方面通用默认的一些功能机制限制了少量垂类的发展业务希望引入更多的策略 模型逻辑 信号等处理以及打分机制提升排序召回的效果。 在这样的背景下业务对于数据加工计算的框架引擎的需求越来越强烈并且功能也逐渐成为整个垂搜离线处理过程中不可或缺的一部分。 02 计算系统演进过程 百度搜索系统离线数据处理从时间线的发展阶段来说一共经历如下几个阶段 a.原始离线处理系统: 本阶段主要是实现业务加工入口从0到1的构建。整体上还没有形成完备的框架体系并且开发成本较高并且所有业务逻辑混在一个公共服务中不同数据通过不同配置调用不同的策略逻辑。 b.业务离线处理架构: 本阶段初步形成一整套的业务服务处理框架有统一的服务框架和开发阶段实现了云原生和服务隔离的模式。 c.Serverless架构: 本阶段业务的接入效率上进一步提高业务从管理服务面向转向管理业务加工函数业务只需注册函数就可以快速测试上线同时支持容器实例的自动伸缩使得在业务的使用效率得到的极大提升的同时相应资源成本急剧压缩。 d.数据智能架构: 在原有服务部署的基础上同时实现了数据的管理从函数管理进一步升级成为需求管理实现多语言服务框架支持的基础上成本进一步压缩效率提升。 03 计算系统核心设计核心思路核心实现 下面详细阐述各个阶段的详细特点以及核心实现。 3.1 原始离线处理系统 这套架构应用于2018以前当时垂类的发展整体属于起步阶段。该阶段业务主要的需求就是可以将原始的业务数据直接上线。架构的主要精力聚焦于通用业务能力的建设。随着业务的逐步深耕发现有少量的业务慢慢演化出来自定义加工的需求。 根据当时的业务需求最终从原有的数据加工模块中衍生出业务数据加工系统。当前阶段的数据加工处理方式是使用统一Handler处理方式当然这个处理并非是必选项多数业务仍然不需要自定义加工处理。各业务之间也完全没有 数据 隔离这种架构最核心的意义就是从无到有提供业务的自定义加工能力。如下图所示此时计算系统只包含计算引擎部分其他系统完全没有建设。下面会对该系统的部分细节进行详细说明。 3.1.1 业务特点 这个时期的业务特点主要有两个 多数业务核心诉求最主要的是通用能力的建设。 个别业务有少量简单的自定义加工处理的需求。 所以这个时间点的核心主要是为了解决业务加工入口的问题。 3.1.2 核心设计 初版本的离线架构模块非常简单如下图所示蓝色部分。随着业务发展为了满足业务自定义加工的需求引入红色数据通路其中统一数据加工模块就是主要处理业务自定义加工逻辑。 如上图所示灰色部分是业务外层接入的数据系统最开始的时候只有XML、POST 和 数据队列的这种模式。蓝色部分就是业务没有自定义时候原始的数据框架代码。红色部分就是为了针对业务自定义需求引入的框架模块 用户数据代理主要是为了适配业务数据接入方式数据的协议打平主要是不同用户协议的RPC做建库层的数据转化。 用户通用需求主要是为用户共性需求做统一处理会根据不同业务的不同配置做功能处理比如业务图片视频的转化处理业务用户版本管理处理以及用户的核心机制等。 统一数据加工模块主要是为了统一用户数据的加工处理主要是给所有接入的业务的数据提供了一个可以数据加工的入口。 3.2 业务处理架构 如上文所述3.1架构核心价值是自定义加工能力的从0到1的建设然而随着业务的快速发展越来越多的业务需要自定义加工能力。业务自定义加工的需求从原来个位数迅速膨胀了10倍。因此为了满足业务在自定义开发上易用性和稳定性的诉求将原来3.1的中心化的处理模式升级成为服务框架的模式。总体上来说当前阶段的计算系统建设已经基本具备了服务层和业务层两层 业务层业务通过平台已经基本上可以实现基础的服务管理。 服务层对计算引擎进行重构让新的服务框架支持业务的高效开发。 下面会对该系统的部分细节进行详细说明。 3.2.1 业务特点 由于3.1中上一代系统数十个业务自定义需求统一在同一个模块里面开发统一线上运行遇到了主要如下几方面问题 效率业务在相同的模块里面开发导致业务开发上线的过程中经常遇到冲突以及上线排队的问题导致整体生效周期比较长。 稳定性由于这种业务流量混合的模式隔离性比较差导致单个业务出问题经常会影响所有的业务。 因此架构构建出完善的服务框架业务可以基于服务框架构建自己的业务代码从效率和稳定性两个方面解决上述问题 效率服务开发上线的过程是完全隔离的业务在开发上线的过程中完全没有业务阻塞整体服务上线周期从天级缩短到小时级别。 稳定性由于每个业务服务执行逻辑都有完全独立的app导致业务的稳定性大大提升不会存在业务之间的互相影响。 3.2.3 核心设计 业务处理框架建设一个数据处理框架业务可以基于这个框架来实现自己的业务处理功能。 任务平台每个任务注册、升级、管理都可以通过任务平台来进行管理。 统一网关所有数据的统一入口统一接收上游数据并且做数据的转发和分发。 业务APP每个业务都有自己独立服务的app每个业务开发是基于框架的独立分支开发上线是每个业务单独上线业务处理的服务流量也都是完全隔离的。 3.3 Serverless架构 如上文中3.2表述已经解决系统隔离性的问题业务快速发展从最开始的几十个发展到上百个业务应用。当业务发展到井喷状态后服务框架的形式已经完全不能满足业务的开发需求。 Serverless架构如下图所示此时计算系统整体版图已经相对完善相比上一代计算架构不仅仅业务层包含的全流程的优化提供了完整的工具功能服务层充分考虑的架构的设计和复用同时增加控制层增加智能调度的功能针对系统流量进行资源的动态调度。 下面会对该系统的部分细节进行详细说明。 3.3.1 业务特点解决问题 业务学习成本大量的新业务接入需要进行开发导致框架本身学习成本需要几天的时间新业务的接入和开发的时间基本上都在周级别。 资源如何节省大量的业务也带来app的高速膨胀原来接入的数百台机器已经用满到了资源瓶颈当前的资源量无法支持业务的快速膨胀。 3.3.3 核心设计 应用层针对于基础服务架构上面给业务开放的各种云服务从业务的 接入、开发到后面的调试、测试到服务上线后的监控。 服务层这部分是整体架构的基础应用层都是基于这里进行开发的这部分是整个系统的基石属于整体系统的核心框架。 调度层通过根据流量形式的扩缩容保证后续服务可以自动化的进行服务操作。 下面重点介绍一下 服务层的主要内容对业务来说主要包含两部分: 极致抽象的业务框架是核心框架基础中的基础提供新的开发范式同时为后续智能调度奠定良好基础。 高度复用的基础服务强大丰富的后端服务能力封装支持业务低成本复用降低开发成本同时提升稳定性。同时系统还提供强大的编排能力低成本支持业务从简单到复杂的发展。 极致抽象的业务框架 业务框架作为FaaS层和业务代码的载体是整个业务逻辑的代码框架。框架本身维护数据流语义面向有向无环图DAG的数据流调用业务函数代码。业务框架是面向有向无环图的数据流实时计算基于公司基础的数据流框架支持完备的流式计算语义结合业务场景需要功能构建出业务框架 如上图左边就是用户实际的执行代码对于函数的接口定义入参和返回值都是Dict类型。业务的代码逻辑直接在函数中实现需要变更的数据如上图所示业务在根目录下增加了一个时间戳字段然后把更新后的结果传递给下游。 业务端使用开发成本低的脚本语言进行开发例如Python基础服务框架使用C实现结合数据压缩、批处理、数据预分发等机制使得业务可以在简化服务框架开发同时优化服务运行性能。通过架构层面的优化策略来达到服务性能和开发成本的平衡。 高度复用的基础服务 业务依赖的后端服务包括多媒体长留服务数据存储服务策略计算等十项服务能力所有的服务架构的支持目标都是通过简单配置、少量代码的方式进行服务接入。 架构通用能力包括索引处理(倒排、正排、向量索引)数据审核(政治敏感数据/色情数据识别过滤)多路分发、数据建库等能力。 与业务联合研发的能力数据的低质过滤能力(实现数据清洗/归一化/数据去重/类目拼接)数据多元融合数据质量打分计算(质量打分/作弊识别/物料打分)。 基于公司强大基础能力: 多媒体处理服务(外链转内链/OCR/水印计算/重复图计算/主体识别/视频转储等)自然语言处理服务数据沉淀服务。 支持的基础服务(BaaS服务)主要是两个特点: 简单稳定 充分集成公司内其他优质能力。用户通过SDK调用、算子复用和数据流复用等方式直接进行能力复用完全不需要进行服务的部署和管理服务易用性、稳定性由搜索中台来处理。使用任何服务后端都可以收口在一个地方避免业务频繁跟多个服务团队进行交流处理极大降低业务使用成本。业务最开始接入通常只需要简单的少数功能例如修改部分字段的信息)多数业务直接用我们提供的平台化的开发模板即可完成开发。但是随着业务的逐步深耕业务逐步使用业务会向复杂逐步过渡例如搜索中台某业务通过复用数十种能力的组合使用建设出具有深度定制的数据系统。 3.4 数据智能架构 如上文中3.3 表述已经很大程度上解决业务接入效率的问题并且在资源的使用效率上实现根据流量的扩缩容实现的资源极大程度的节省业务的app的数量已经发展到上千个业务对于效率、成本、服务质量提出来更高的要求。至此已经构建出从业务层、逻辑层、服务层、控制层的四层架构实现离线计算系统从指令式计算系统到声明式计算系统的彻底转变。 3.4.1 业务特点 效率业务的迭代开发很多都是针对少数几个字段但是当前业务同学仍然需要了解服务全拓扑才能开发。 随着业务复杂深耕业务的开发迭代业务开发者出现多语言开发情况来提高服务的开发和执行效率。 业务如何实现新类目的快速接入、在不了解全面的情况下快速迭代。 计算引擎执行效率更高用更少的资源计算跑更多的服务资源。 业务问题能不能快速定位发现以及问题的自动处理。 3.4.2 核心思路 从设计思路来看当前系统架构是上一代架构的拓展 数据管理出了原始服务管理外引入数据全面管理为列计算奠定基础。 编排能力将原来业务手动编排的函数能力扩展成为需求声明式自动编排的能力。 服务处理极致高效的服务处理能力支持多种不同业务开发者的高效开发效率将整体的计算从行计算转向列计算提高整体的计算复用。 控制能力将原来自动伸缩的能力扩展成为智能控制能力做到问题的自动识别、自动分发、自动分析 和 自动处理。 整体架构的设计核心理念大致是多层抽象、分层复用。 3.4.3 核心设计 当前阶段的核心设计已经呈现出完整的四层架构的抽象能力 应用层业务直接可见的相关服务包括业务从开始数据接入到服务运行的全周期各阶段各种应用。 逻辑层也可以称之为编排层负责将原始的业务需求表达转化成为线上真实运行的服务 业务通过Codeless 平台化选择勾选自己的功能集合以及对应数据映射关系进行提交将用户提供的功能 数据的绑定关系转化为业务的自定义的功能 以及映射关系。 服务层计算系统的核心业务实际计算运行在这层主要包含计算引擎 和服务架构两部分。向上承接逻辑层的编排结果运行服务向下提供基础信号作为控制层的输入。 控制层包含智能调度和智能控制两部分智能控制主要是通过自动接受业务指标数据进行智能控制保证服务稳定而智能调度是除了根据数据流量进行进行自动伸缩以外还可以根据业务服务关系进行流量复用减少业务的重复计算。 下面我们针对部分核心系统如上图蓝色部分的设计作展开说明。 需求表达逻辑 需求逻辑的表达的核心就是如何把用户原始的功能需求转化成真是线上服务的算子、配置、关系的表达。用户最原始的输入包含两部分 业务数据业务数据需要功能的最小单位进行切割后续算子进行配置转化以及服务绑定的列式计算。这里说的有点绕口其实本质上就是把业务数据的原始Proto或者数据Schema注册一下就可以。 功能集合功能集合既可以用户直接使用的系统提供的默认模版的功能集合 也可以是用户通过平台自定义的集合值的注意的是每个功能都都有其指定的传入参数比如图片计算需要传入图片URL向量计算需要传入原始数据 向量参数等等。功能完成后也会有对应的输出结果业务可以指定。 获取完成用户的原始输入后架构通过两层逻辑映射的方式将原始用户需求转化成为线上服务部署信息 需求表达服务用户的原始需求转化为功能模版的组合。这个阶段会根据用户配置将原始算子和数据进行绑定原始用户抽象的需求实例化成带数据的算子集合。 需求编排服务通过业务算子的本身的依赖关系和数据依赖的血缘关系进行表达组合将带数据的算子构建出N个有向无环图。 整体需求表达都可以通过Codeless方式表达通过描述功能集合✖️数据集合描述方式加之两层逻辑映射的转化这样就可以将原始用户声明式需求直接转化线上服务关系和系统配置并且服务的算子的拓扑关系完全可以通过业务的数据关系表达自动化推导出来 实现了95%以上的功能可以完全自动化配置实现当然有个别服务无法低成本转化表达的也提供了人工接口。 计算引擎实现 计算引擎层的核心组件大致分成两部分图计算引擎 多语言算子的执行引擎 。 图计算引擎主要控制的业务拓扑的表达关系通过有向无环图来表达。 算子执行引擎主要控制业务真实业务函数的执行不同语言有不同的函数实现例如Python、GoLang、C/C都有自己的执行引擎。 下面针对两部分进行仔细说明 图计算引擎实现实现的核心功能就是实现支持表达有向无环图的框架使用C实现的图下图部分中蓝色部分就是有向无环图的框架实现当然我们这个框架的底层实现支持了多种数据的表达 本地队列表达如图左下角部分表达的就是一个简单的拓扑表达拓扑关系是通过本地的无锁队列进行串联的每个队列下面挂载一个业务算子业务算子处理完成数据后算子拓扑配置管理分发到下游的本地队列中如果是最后一个算子数据结果全部处理完成后输出到远程队列Producer中。左侧这边是框架内部的通用功能 线程管理每个业务算子默认都是多线程的分发模式如果业务算子只支持单线程可以把线程数设置成1。 分发模式数据消费分发模式默认是轮询分发固定KEY分发实现保序以及按消费能力分发。 数据压缩这个默认支持常见数据压缩方法是可选的吞吐优化手段支持LZ4、Gzip、Snappy等常见压缩算法。 远程队列表达每个蓝色大框表示一个具体实例实例之间使用远程队列交互如果每个实例里面只有一个业务算子这种的交互方式类似于远程队列的表达方式。 混合方式表达更多使用方式是混合使用一个巨型拓扑会拆分成多个子拓扑每个子拓扑使用本地队列的方式进行表达而子拓扑之间使用远程队列的方式进行表达。 多语言引擎执行层语言执行层整体框架整体根据不同的语言有不同实现模式大体上分成三部分编译型、解释型、原生C。 解释型最典型的就是Python实现方式这种方式也是过去同学最喜欢用的开发语言之一。图上图最上面左边灰色部分是C开发的部分最右边黄色部分是业务代码中间这部分就是C转Python的交互引擎调用。这种方式的本质就C的开发引擎使用PyBind实现指定接口服务解释器根据指定的数据序列化和反序列化方式进行操作在函数调用时再实时转化为python的Dict。 编译型典型是Golang的使用方式。与Python的实现类似左边灰色部分是C开发的部分最右边黄色部分是Golang业务代码中间是C转Golang的交互引擎。Golang的实现相比Python的方式有点复杂本质是通过原生CGO作为用户接口为了统一用户接口层其实分成两部分左半部分是直接跟C交互直接用C实现负责把原生C转化为基础的C类型的函数指针进行调用。右半部分使用Golang实现负责把原生序列化好的函数反序列化成业务结构体然后再进行真正调用。 原生C这里很多人可能觉得奇怪C不是也是编译型的么已经有编译型的实现模式何必画蛇添足增加这么一种实现模式其实本质不然golang虽然是编译型语言底层框架的实现由于尽量考虑通用性数据传递的过程中势必需要进行序列化和反序列操作而在原生的C的实现过程中我们在实现的过程完全摒弃所有的序列化和反序列操作数据在本地队列中的传递完全是业务的数据指针而非序列化数据而每个业务算子在处理数据过程中直接根据原始的数据指针通过反射机制实现方式有很多最简单的 map可以直接获取对应列的数据项整个过程无锁的超高效率。这里的核心优化思路数据链式处理过程。拉链上的每个算子都共享同一个输入和输出。 每个算子其实就是一个接口相同的函数这样就可以随意地调整函数指针的组合形成不同的处理链。比如一个请求走 A 模型排序一个请求要走 B 模型排序他们可以共享前序的算子只在最后一个算子有所不同。在链式处理基础上算子也可以是继承同一基类接口的派生类或者 lambda 表达式。结合工厂模式等一些编程技巧处理链的调整可以配置化、动态化、脚本化。实测执行业务单算子普通的纯数据项带分支的多节点的拓扑计算单机(单线程/算子)可以达到数十万的处理能力。 通过新计算引擎的实现从使用上完全兼容上一代计算系统的使用方式将不常使用的功能做精简同时优化复杂拓扑执行方式通过架构层也业务层解耦支持多语言高效执行方式对于老业务平迁的数据框架平均计算效率提高5~10倍同时业务由于针对性建设业务框架业务开发效率进一步提升。 智能控制实现 自动化问题分析引擎是整个智能控制系统的大脑。它上游接收观测提供的原始数据进行自动的分析决策后通过系统提供的自愈能力处理。自动化问题分析引擎的核心思路: 只要历史上出现过的问题RD同学能找到问题和解决方案就可以转化为系统规则和后置函数梳理。那当下一次遇到问题则无需人工干预。规则引擎的核心分析过程是2段式的: 阶段1: 传统配置化的规则引擎的配置上图中右上角黄色部分配置多个采集指标项的逻辑关系与或交非 这里主要是针对问题的基础分析功能,判定规则是否触发。 阶段2: 基于这个基础分析的结果进行后置Function的执行分析这个主要是针对复杂问题的分析补充 最终执行引擎根据这个返回结果进行函数执行。 下面针对问题分析引擎的执行结果如下: 前提: 开发者需要配置好处理逻辑规则以及规则依赖的数据项必填 回调函数选填。 数据解析器: 数据解析器主要承担的数据的原始抽取的工作一共分成如下3步 a.配置解析: 逻辑执行根据开发者配置的数据信息解析 b.数据抽取: 根据解析出来的配置通过数据接口进行获取可以从统一接口根据配置的信息从不同的介质充抽取所需求的信息 c.数据归一化: 将不同介质的原始数据归一化成为统一的数据格式供规则管理器使用。 规则管理器: 规则管理器主要承担核心的逻辑分析工作一共分成如下几步: a.规则解析: 根据开发者配置的规则逻辑将原始配置信息解释成原始的规则树。 b.执行计算: 根据数据解析器提供的数据结果和配置的函数规则分别执行计算。执行计算过程中最重要的就是基础分析器整体提供了5大基础能力数十种常见的逻辑计算来辅助规则配置。 c.规则逻辑运算: 根据上层解析出来的规则树 和 每个数据项执行完成的计算结果进行逻辑运算并根据执行的结果确定是否进行高级数据分析器如果判断结果为真则根据所配置的后置函数进行处理。 高级数据分析器: 如图所示有两种模式对于简单基础分析可以判断结果的直接给默认的处理函数进行数据拓传对于简单逻辑规则无法准确表达的开发者可以自定义后置分析函数 函数会将原始数据和基础计算的计算结果作为参数传出来开发者只需要通过处理后的数据描述清楚分析逻辑即可。 动作执行器: 就是这个分析器的真正的执行引擎根据规则运算的结果中包含的参数进行动态调整。 通过智能控制系统的建设月级别分析处理上万的异常问题自动恢复的比例占总数的95%以上绝大多数的问题几分钟内完成自动恢复 核心故障同比减少60% 由于预处理防止普通问题恶化成严重问题。 04 结论以及展望 本文全篇以离线计算系统的发展为主线贯穿全文讲解遇到的问题以及解决方案。尤其是当前新一代架构核心就是以数据功能为核心的声明式的设计配合高效计算引擎、配合智能化的设计把整体的离线计算系统的高度做了进一步提升。设计中其实还是虽然解决了过去的很多问题但是仍然有不完善的地方当然当前的效果还远没有达到最终的理想状态部分系统功能有待持续性的打磨升级。 ——END—— 推荐阅读 度加剪辑App的MMKV应用优化实践 百度工程师浅析解码策略 百度工程师浅析强化学 浅谈统一权限管理服务的设计与开发 百度APP iOS端包体积50M优化实践(五) HEIC图片和无用类优化实践 文章转载自: http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.qjmnl.cn.gov.cn.qjmnl.cn http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn http://www.morning.rxlck.cn.gov.cn.rxlck.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn http://www.morning.cniedu.com.gov.cn.cniedu.com http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.qwbls.cn.gov.cn.qwbls.cn http://www.morning.jqpq.cn.gov.cn.jqpq.cn http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.zplzj.cn.gov.cn.zplzj.cn http://www.morning.fdfsh.cn.gov.cn.fdfsh.cn http://www.morning.kqyyq.cn.gov.cn.kqyyq.cn http://www.morning.lclpj.cn.gov.cn.lclpj.cn http://www.morning.xpmhs.cn.gov.cn.xpmhs.cn http://www.morning.rlqqy.cn.gov.cn.rlqqy.cn http://www.morning.bypfj.cn.gov.cn.bypfj.cn http://www.morning.rfhm.cn.gov.cn.rfhm.cn http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn http://www.morning.lqffg.cn.gov.cn.lqffg.cn http://www.morning.kkjhj.cn.gov.cn.kkjhj.cn http://www.morning.dqrhz.cn.gov.cn.dqrhz.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.wflsk.cn.gov.cn.wflsk.cn http://www.morning.fwlch.cn.gov.cn.fwlch.cn http://www.morning.lbbrw.cn.gov.cn.lbbrw.cn http://www.morning.wmsgt.cn.gov.cn.wmsgt.cn http://www.morning.qpqb.cn.gov.cn.qpqb.cn http://www.morning.dfhkh.cn.gov.cn.dfhkh.cn http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn http://www.morning.rgxf.cn.gov.cn.rgxf.cn http://www.morning.nxfuke.com.gov.cn.nxfuke.com http://www.morning.gftnx.cn.gov.cn.gftnx.cn http://www.morning.bqnhh.cn.gov.cn.bqnhh.cn http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn http://www.morning.qhkx.cn.gov.cn.qhkx.cn http://www.morning.xsfg.cn.gov.cn.xsfg.cn http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn http://www.morning.brhxd.cn.gov.cn.brhxd.cn http://www.morning.dnmgr.cn.gov.cn.dnmgr.cn http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn http://www.morning.qydgk.cn.gov.cn.qydgk.cn http://www.morning.tclqf.cn.gov.cn.tclqf.cn http://www.morning.lhrxq.cn.gov.cn.lhrxq.cn http://www.morning.fhddr.cn.gov.cn.fhddr.cn http://www.morning.bnkcl.cn.gov.cn.bnkcl.cn http://www.morning.dfltx.cn.gov.cn.dfltx.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.ffhlh.cn.gov.cn.ffhlh.cn http://www.morning.cfynn.cn.gov.cn.cfynn.cn http://www.morning.rlkgc.cn.gov.cn.rlkgc.cn http://www.morning.kxqmh.cn.gov.cn.kxqmh.cn http://www.morning.qflwp.cn.gov.cn.qflwp.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn http://www.morning.ztcxx.com.gov.cn.ztcxx.com http://www.morning.qlpq.cn.gov.cn.qlpq.cn http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn http://www.morning.dpplr.cn.gov.cn.dpplr.cn http://www.morning.gybnk.cn.gov.cn.gybnk.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.zwyuan.com.gov.cn.zwyuan.com http://www.morning.pypqf.cn.gov.cn.pypqf.cn http://www.morning.jbctp.cn.gov.cn.jbctp.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.szoptic.com.gov.cn.szoptic.com http://www.morning.mhpmw.cn.gov.cn.mhpmw.cn http://www.morning.sbdqy.cn.gov.cn.sbdqy.cn http://www.morning.xczyj.cn.gov.cn.xczyj.cn http://www.morning.hxpsp.cn.gov.cn.hxpsp.cn http://www.morning.bmmhs.cn.gov.cn.bmmhs.cn 查看全文 http://www.tj-hxxt.cn/news/270193.html 相关文章: 南海建设局网站上海市区网站设计制作公司 wordpress前端用户惠州百度seo哪里强 做一个网站得做多少个页面网站开发常用的语言和工具 项城网站自助网站建设厦门网站制作 淮安专业网站建设网站关键词优化报价 meetsh网站建设顺昌网站建设 如何查看网站的建设者海口网站建设的开发方案 梅州建站网络深圳东门动漫城 如何做网站建设方案Wordpress主题里的幻灯片怎么设置 建设网站的风险分析湖南营销型网站建设价格 桂林北站到两江机场有多远WordPress免插件添加公告 网站建设asp百度手机助手app安卓版官方下载 c#如何做公司网站东莞企业推广网站制作 毕业设计代做的网站考幼师证去哪个网站做试题 网站设计方案案例深圳外贸招聘 室内设计可以做网站吗网站注册怎么注销 东莞网站开发找谁seo优化找行者seo 温州模板建站代理贵州网站开发流程 人力网站建设的建议下载网站备案的核验单 网站建设的行业代码是多少网站信息系统建设 网站开发都用什么网站seo诊断方案 那个网站的公众后推广做的好wordpress 3.2 峰峰做网站济南微信网站建设 蓬莱建网站安徽伟诚建设工程有限公司网站 有哪些做外贸网站国际新闻头条最新消息 深圳龙华网站开发厦门市机场建设招投标网站 溧阳建设集团网站wordpress如何上传附件 怎么注册网站的步骤html5的网站设计与实现是做什么 焦作市网站建设科技seo报告 网站建设自优化资源配置