当前位置: 首页 > news >正文

苏州园区做网站开源购物商城

苏州园区做网站,开源购物商城,吉安市建设技术培训中心网站,电商运营工资和前景目录 前言阅读对象阅读导航前置知识一、什么是服务雪崩1.1 基本介绍1.2 解决方案 二、什么是Sentinel2.1 基本介绍2.2 设计目的2.3 基本概念 三、Sentinel 功能和设计理念3.1 流量控制3.2 熔断降级3.3 系统负载保护 四、Sentinel 是如何工作的 笔记正文一、简单整合Sentinel1.1… 目录 前言阅读对象阅读导航前置知识一、什么是服务雪崩1.1 基本介绍1.2 解决方案 二、什么是Sentinel2.1 基本介绍2.2 设计目的2.3 基本概念 三、Sentinel 功能和设计理念3.1 流量控制3.2 熔断降级3.3 系统负载保护 四、Sentinel 是如何工作的 笔记正文一、简单整合Sentinel1.1 添加maven依赖1.2 接入限流埋点定义Sentinel资源1.3 配置限流规则定义Sentinel规则1.4 设置熔断规则1.4.1 Dubbo整合Sentinel 1.5 设置系统负载保护 二、概念补充Sentinel规则2.1 规则的种类2.1.1 流量控制规则 (FlowRule)2.1.2 熔断降级规则 (DegradeRule)2.1.3 系统保护规则 (SystemRule)2.1.4 访问控制规则 (AuthorityRule)2.1.5 热点规则 (ParamFlowRule) 学习总结感谢 前言 相对来说Sentinel的学习难度比之之前的Dubbo要低了不少。不过在学习过程中也遇到了一些认知局限带来的困难。比如虽然还是学习了Sentinel但是不知道生产环境该如何配置才是最佳的状态。 说到底Sentinel还是没有提供很好的文档支持。比如生产最佳实践方案。 官方也确实提供了一个但是总感觉不太完备。 另外在学习的过程中再次提醒了我不要盲目的添加中间件中间件的引入势必会造成系统复杂度上升也带来了一定的运维成本。所以若非有必要的还是不要特定地去引入某个中间件吧。 最难受的是文档资料的缺失不少问题官网没解释百度没答案难受死了。 当然这里是以学习目的出发的就算是引入也无所谓。 阅读对象 阅读导航 系列上一篇文章《【分布式微服务专题】从单体到分布式三、SpringCloud整合Dubbo》 前置知识 一、什么是服务雪崩 1.1 基本介绍 在一个高度服务化的系统中我们实现的一个业务逻辑通常会依赖多个服务。比如订单服务会依赖用户服务、商品服务等。此时若其中一个服务不可用就会导致订单服务的所有线程都因等待而引起阻塞最终导致没有线程可用进而引起整个服务不可用这就是服务雪崩 导致服务不可用的可能有很多比如程序BUG、流量激增、缓存击穿甚至是硬件故障。 在服务提供者不可用的时候会出现大量重试的情况用户重试、代码逻辑重试这些重试最终导致进一步的流量激增所以归根结底导致雪崩效应的最根本原因是大量请求线程同步等待造成的资源耗尽。当服务调用者使用同步调用时, 会产生大量的等待线程占用系统资源。一旦线程资源被耗尽服务调用者提供的服务也将处于不可用状态于是服务雪崩效应产生了 1.2 解决方案 服务雪崩常用的解决方案如下 超时机制设定接口超时时间不做无休止的等待。属于一种缓解手段只要流量足够大依然有击穿的可能性服务限流限制QPS避免流量突增而故障。属于一种预防手段服务熔断降级类似保险丝。如果某个服务调用慢或者本身短时间内就有大量超时那后续的请求再进来其实已经没有意义了不如快速返回一个失败答复避免拥挤参考以前你抢小米手机的时候 二、什么是Sentinel Sentinel官方文档传送门传送门 2.1 基本介绍 随着微服务的流行服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件主要以流量为切入点从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 2.2 设计目的 流量 流量 流量 面向分布式、多语言异构化服务架构的流量治理组件主要以流量为切入点从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 2.3 基本概念 资源 资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容例如由应用程序提供的服务或由应用程序调用的其它应用提供的服务甚至可以是一段代码。在接下来的文档中我们都会用资源来描述代码块。 意思是粒度可以为进程、组件、方法甚至是一段代码 只要通过 Sentinel API 定义的代码就是资源能够被 Sentinel 保护起来。大部分情况下可以使用方法签名URL甚至服务名称作为资源名来标示资源。 规则 围绕资源的实时状态设定的规则可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。 三、Sentinel 功能和设计理念 Sentinel主要的功能有流量控制、熔断降级、系统负载保护 3.1 流量控制 流量控制在网络传输中是一个常用的概念它用于调整网络包的发送数据。然而从系统稳定性角度考虑在处理请求的速度上也有非常多的讲究。任意时间到来的请求往往是随机不可控的而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器可以根据需要把随机的请求调整成合适的形状如下图所示 流量控制有以下几个角度: 资源的调用关系例如资源的调用链路资源和资源之间的关系运行指标例如 QPS、线程池、系统负载等控制的效果例如直接限流、冷启动、排队等。 Sentinel 的设计理念是让用户自由选择控制的角度并进行灵活组合从而达到想要的效果。 3.2 熔断降级 什么是熔断降级 除了流量控制以外降低调用链路中的不稳定资源也是 Sentinel 的使命之一。由于调用关系的复杂性如果调用链路中的某个资源出现了不稳定最终会导致请求发生堆积。这个问题和 Hystrix 里面描述的问题是一样的。 Sentinel 和 Hystrix 的原则是一致的当调用链路中某个资源出现不稳定例如表现为 timeout异常比例升高的时候则对这个资源的调用进行限制并让请求快速失败避免影响到其它的资源进而产生雪崩的效果。 熔断降级设计理念 在限制的手段上Sentinel 和 Hystrix 采取了完全不一样的方法。 Hystrix 通过线程池的方式来对依赖(在我们的概念中对应资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本还需要预先给各个资源做线程池大小的分配。 Sentinel 对这个问题采取了两种手段: 通过并发线程数进行限制 和资源池隔离的方法不同Sentinel 通过限制资源并发线程的数量来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗也不需要您预先分配线程池的大小。当某个资源出现不稳定的情况下例如响应时间变长对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源上堆积到一定的数量之后对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。 通过响应时间对资源进行降级 除了对并发线程数进行控制以外Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后所有对该资源的访问都会被直接拒绝直到过了指定的时间窗口之后才重新恢复。 3.3 系统负载保护 Sentinel 同时提供系统维度的自适应保护能力它的最终目的是保证系统不被拖垮的同时进而保证系统的吞吐量。 防止雪崩是系统防护中重要的一环。当系统负载较高的时候如果还持续让请求进入可能会导致系统崩溃无法响应。在集群环境下网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边缘状态的时候这个增加的流量就会导致这台机器也崩溃最后导致整个集群不可用。 针对这个情况Sentinel 提供了对应的保护机制让系统的入口流量和系统的负载达到一个平衡保证系统在能力范围之内处理最多的请求。 四、Sentinel 是如何工作的 Sentinel 的主要工作机制如下 对主流框架提供适配或者显示的 API来定义需要保护的资源并提供设施对资源进行实时统计和调用链路分析根据预设的规则结合对资源的实时统计信息对流量进行控制。同时Sentinel 提供开放的接口方便您定义及改变规则Sentinel 提供实时的监控系统方便您快速了解目前系统的状态 从一般性流程来说我们想要使用Sentinel来进行资源保护主要分为几个步骤 定义资源 主流框架都提供了默认的支持。例如使用SpringBoot开发的web应用会自动定义所有http接口为Sentinel的资源 定义规则 这个就需要好好了解一下规则是什么都有哪些了 检验规则是否生效 这个根据我目前的测试情况看来我有点不确定官方提供的校验手段是否有效你们看我【1.5 设置系统负载保护】内容就知道我意思了 先把可能需要保护的资源定义好之后再配置规则。也可以理解为只要有了资源我们就可以在任何时候灵活地定义各种流量控制规则。在编码的时候只需要考虑这个代码是否需要保护如果需要保护就将之定义为一个资源。 笔记正文 我当前项目结构 ├── shenadmin // 整个服务的顶级父项目├── shen-common // 项目公共模块├── shen-dependencies // 项目依赖模块├── shen-provider-apis // 项目对外暴露接口apis列表。provider直译供应商├── shen-order-provider-api // 订单服-对外暴露接口apis列表├── shen-product-provider-api // 商品服-对外暴露接口apis列表├── shen-user-provider-api // 用户服-对外暴露接口apis列表├── shen-wallet-provider-api // 钱包服-对外暴露接口apis列表└── shen-servers // 项目微服务列表└── shen-product // 商品服└── shen-order // 订单服└── shen-user // 用户服└── shen-wallet // 钱包服 一、简单整合Sentinel 我学习整合的教程来自SpringCloud Alibaba整合Sentinel的sample传送门 另外整合之前需要做一些工具准备。 安装Sentinel控制台我在【1.3 配置限流规则定义Sentinel规则】中有提到安装JMeter压测工具 1.1 添加maven依赖 显然只有我的微服务项目才会用到Sentinel所以我只需要在shen-servers下直接添加即可。而我早先已经添加了Spring Cloud Alibaba的管理所以我只需要添加依赖即可版本由前者兼容了。 !-- sentinel-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency1.2 接入限流埋点定义Sentinel资源 【资源与规则】官方介绍传送门基本使用 - 资源与规则 在此之前需要给大家介绍并解释一下【埋点】这个概念。 Q1什么是埋点 埋点是一种数据采集技术主要用于收集用户在应用或网站中的行为数据。通过在特定的页面或按钮上植入代码可以监听用户的行为并进行收集上报。这样开发者或数据分析师就能获取用户在使用产品过程中的具体行为数据以进行数据分析、用户行为研究或产品优化等。简而言之埋点是一种数据采集技术实质是先监听软件应用运行过程中的事件当需要关注的事件发生时进行判断和捕获。 翻译一下【埋点】这个操作其实在Sentinel里面就是【定义资源】的过程。讲人话就是设置哪些个url甚至是方法需要被Sentinel管控。 可别刚说完就忘了Sentinel里面【资源】是什么东塞喔。我在【1.3 基本概念】中提到过这是Sentinel里面一个核心概念 那么如何设置埋点呢两种方式 默认的HTTP。在Spring Cloud Alibaba里面默认会为所有HTTP请求埋点所以对我们Web开发用户来说就不需要操心那么多了自定义埋点。具体如何操作可以参考官网的链接基本使用资源与规则。不过自定义埋点操作我稍微看了下都是一些静态的、硬编码的方式反正我是不喜欢这么干的。 1.3 配置限流规则定义Sentinel规则 可得注意了啊这里又是一个Sentinel核心概念噢。【资源与规则】官方介绍传送门基本使用 - 资源与规则 Sentinel 的所有规则都可以在内存态中动态地查询及修改修改之后立即生效。同时 Sentinel 也提供相关 API供您来定制自己的规则策略。Sentinel 支持以下几种规则流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。 Sentinel 提供了两种配置限流规则的方式【代码配置】和 【控制台配置】。根据官方《在生产环境中使用 Sentinel》的指引还是建议在【控制台】中集中管理规则会比较合适并且将规则推送之配置中心中。 本示例使用的方式为通过控制台配置。具体操作步骤如下 1下载安装Sentinel控制台 下载并启动Sentinel控制台。官方传送门Sentinel 控制台 注意控制台默认启动端口是8080如果需要修改启动的时候可以新增命令参数-Dserver.port端口。比如我就修改为8090端口 java -Dserver.port8090 -jar sentinel-dashboard.jar2增加Sentinel配置 在所有的微服务应用中添加如下配置 spring:cloud:sentinel:transport:# 下面的端口dashboard: localhost:8090因为我已经引入了Nacos配置中心然后这个配置在我的实验环境中应该是共享的所以我就配置到了我在Nacos的application-conf.yaml文件中。如下所示 3重启所有微服务 4验证安装 上述步骤完成之后就可以打开http://localhost:8090/尝试访问了。如下所示 注意如果您在控制台没有找到应用请调用一下进行了 Sentinel 埋点的 URL 或方法因为 Sentinel 使用了【懒加载】策略。 5配置限流规则 我在我的实验环境这种选择了shen-wallet然后点击流控规则新增流控规则内容如下 为了让效果更明显我做了如上的配置意思是当前/wallet/list接口1秒内最大访问次数。 6简单验证 快速刷新访问http://localhost:9032/wallet/list会出现如下所示的结果 正常结果 限流结果Blocked by Sentinel (flow limiting) hold on hold on我当然是比较建议下载JMeter来测试的我自己就简单测试了 1.4 设置熔断规则 啊很尴尬的一个点。如果你们的PRC使用的是OpenFeign那么可以直接参考这个官方示例我截图给大家看吧。 但是我在我的整合方案中RPC使用的是Dubbo框架的Dubbo协议所以我得另外配置才能实验这个特性了。 1.4.1 Dubbo整合Sentinel Dubbo整合Sentinel很简单就是引入一个maven依赖就好了 dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-dubbo-adapter/artifactIdversion版本/version /dependency通过引入这个项目所有Dubbo接口也会被自动【埋点】。后面的所有规则设置跟上面介绍的操作基本是一样的。给你们看看我的效果 1Dubbo接口被Sentinel管理 2对Dubbo资源做降级处理 1.5 设置系统负载保护 这一点我暂时搁置一下MD卡了我一天了从昨天到现在我不知道自己哪里没有设置对。 反正就是没效果。不知道是不是版本的问题我百度别人的Sentinel Admin跟我的不是很像。为了校验我的规则是否生效我采用了如下方式 通过端点信息查看规则是设置成功的Endpoint我设置了最简单的入口QPS限制通过压测工具发送N多条请求发现调用是成功的反过来证明我的系统负载设置失败通过实时监控发现b_qps指标又是正常的证明系统负载设置成功根据秒级监控日志看每个指标也是合理的证明系统负载设置成功自定义了BlockedException想要捕获异常日志但是没有发现系统保护异常SystemBlockException 暂时性放弃了xdm 二、概念补充Sentinel规则 我在学习的过程中发现Sentinel的规则还是非常重要的只有熟练的掌握了这些规则我们才能在实际的生产中做更丰富的流控策略。 2.1 规则的种类 Sentinel 的所有规则都可以在内存态中动态地查询及修改修改之后立即生效。同时 Sentinel 也提供相关 API供您来定制自己的规则策略。 总的来说Sentinel 支持以下几种规则流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。 2.1.1 流量控制规则 (FlowRule) 重要属性 PS同一个资源可以同时有多个限流规则 通过代码定义流量控制规则 理解上面规则的定义之后我们可以通过调用 FlowRuleManager.loadRules() 方法来用硬编码的方式定义流量控制规则比如 private static void initFlowQpsRule() {ListFlowRule rules new ArrayList();FlowRule rule1 new FlowRule();rule1.setResource(resource);// Set max qps to 20rule1.setCount(20);rule1.setGrade(RuleConstant.FLOW_GRADE_QPS);rule1.setLimitApp(default);rules.add(rule1);FlowRuleManager.loadRules(rules); }2.1.2 熔断降级规则 (DegradeRule) 重要属性 PS同一个资源可以同时有多个降级规则 通过代码定义熔断降级规则 理解上面规则的定义之后我们可以通过调用 DegradeRuleManager.loadRules() 方法来用硬编码的方式定义流量控制规则。 private static void initDegradeRule() {ListDegradeRule rules new ArrayList();DegradeRule rule new DegradeRule(resource);.setGrade(CircuitBreakerStrategy.ERROR_RATIO.getType());.setCount(0.7); // Threshold is 70% error ratio.setMinRequestAmount(100).setStatIntervalMs(30000) // 30s.setTimeWindow(10);rules.add(rule);DegradeRuleManager.loadRules(rules); }2.1.3 系统保护规则 (SystemRule) Sentinel 系统自适应限流从整体维度对应用入口流量进行控制结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标通过自适应的流控策略让系统的入口流量和系统的负载达到一个平衡让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。 重要属性 通过代码定义系统保护规则 理解上面规则的定义之后我们可以通过调用 SystemRuleManager.loadRules() 方法来用硬编码的方式定义流量控制规则 private void initSystemProtectionRule() {ListSystemRule rules new ArrayList();SystemRule rule new SystemRule();rule.setHighestSystemLoad(10);rules.add(rule);SystemRuleManager.loadRules(rules); }2.1.4 访问控制规则 (AuthorityRule) 很多时候我们需要根据调用方来限制资源是否通过这时候可以使用 Sentinel 的访问控制黑白名单的功能。黑白名单根据资源的请求来源origin限制资源是否通过若配置白名单则只有请求来源位于白名单内时才可通过若配置黑名单则请求来源位于黑名单时不通过其余的请求通过。 授权规则即黑白名单规则AuthorityRule非常简单主要有以下配置项 resource资源名即限流规则的作用对象limitApp对应的黑名单/白名单不同 origin 用 , 分隔如 appA,appBstrategy限制模式AUTHORITY_WHITE 为白名单模式AUTHORITY_BLACK 为黑名单模式默认为白名单模式 2.1.5 热点规则 (ParamFlowRule) 热点规则的配置略显麻烦一点。首先需要理解什么是热点 热点 何为热点热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据并对其访问进行限制。比如 商品 ID 为参数统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数针对一段时间内频繁访问的用户 ID 进行限制 热点参数限流会统计传入参数中的热点参数并根据配置的限流阈值与模式对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制仅对包含热点参数的资源调用生效。 限流原理 Sentinel 利用 LRU 策略统计最近最常访问的热点参数结合令牌桶算法来进行参数级别的流控 在我们项目中如果想要使用改规则还需要额外引入maven依赖 dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-parameter-flow-control/artifactIdversionx.y.z/version /dependency重要属性 学习总结 感谢 感谢Alibaba Sentinel的文章《在生产环境中使用 Sentinel》
文章转载自:
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn
http://www.morning.wyrkp.cn.gov.cn.wyrkp.cn
http://www.morning.lssfd.cn.gov.cn.lssfd.cn
http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn
http://www.morning.pabxcp.com.gov.cn.pabxcp.com
http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn
http://www.morning.klwxh.cn.gov.cn.klwxh.cn
http://www.morning.dsmwy.cn.gov.cn.dsmwy.cn
http://www.morning.txrkq.cn.gov.cn.txrkq.cn
http://www.morning.gsjfn.cn.gov.cn.gsjfn.cn
http://www.morning.csxlm.cn.gov.cn.csxlm.cn
http://www.morning.lzzqz.cn.gov.cn.lzzqz.cn
http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn
http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn
http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn
http://www.morning.jfcbs.cn.gov.cn.jfcbs.cn
http://www.morning.cplym.cn.gov.cn.cplym.cn
http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn
http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn
http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn
http://www.morning.kklwz.cn.gov.cn.kklwz.cn
http://www.morning.rsnd.cn.gov.cn.rsnd.cn
http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn
http://www.morning.wknjy.cn.gov.cn.wknjy.cn
http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn
http://www.morning.lgmgn.cn.gov.cn.lgmgn.cn
http://www.morning.lylkh.cn.gov.cn.lylkh.cn
http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn
http://www.morning.hdnd.cn.gov.cn.hdnd.cn
http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn
http://www.morning.chfxz.cn.gov.cn.chfxz.cn
http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn
http://www.morning.ygth.cn.gov.cn.ygth.cn
http://www.morning.jrplk.cn.gov.cn.jrplk.cn
http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn
http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn
http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.zfyfy.cn.gov.cn.zfyfy.cn
http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn
http://www.morning.cbnxq.cn.gov.cn.cbnxq.cn
http://www.morning.lsnnq.cn.gov.cn.lsnnq.cn
http://www.morning.qgjwx.cn.gov.cn.qgjwx.cn
http://www.morning.wmfny.cn.gov.cn.wmfny.cn
http://www.morning.yhywr.cn.gov.cn.yhywr.cn
http://www.morning.rhwty.cn.gov.cn.rhwty.cn
http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn
http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn
http://www.morning.klltg.cn.gov.cn.klltg.cn
http://www.morning.mynbc.cn.gov.cn.mynbc.cn
http://www.morning.sryyt.cn.gov.cn.sryyt.cn
http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn
http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn
http://www.morning.rpzth.cn.gov.cn.rpzth.cn
http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn
http://www.morning.mzkn.cn.gov.cn.mzkn.cn
http://www.morning.mfltz.cn.gov.cn.mfltz.cn
http://www.morning.ntffl.cn.gov.cn.ntffl.cn
http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn
http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn
http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn
http://www.morning.npmx.cn.gov.cn.npmx.cn
http://www.morning.fwcjy.cn.gov.cn.fwcjy.cn
http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn
http://www.morning.bpkqd.cn.gov.cn.bpkqd.cn
http://www.morning.mrnnb.cn.gov.cn.mrnnb.cn
http://www.morning.dwwbt.cn.gov.cn.dwwbt.cn
http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn
http://www.morning.brtxg.cn.gov.cn.brtxg.cn
http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn
http://www.morning.xnnxp.cn.gov.cn.xnnxp.cn
http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn
http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn
http://www.morning.dpbdq.cn.gov.cn.dpbdq.cn
http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn
http://www.morning.kxymr.cn.gov.cn.kxymr.cn
http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn
http://www.morning.ydhck.cn.gov.cn.ydhck.cn
http://www.morning.yldgw.cn.gov.cn.yldgw.cn
http://www.tj-hxxt.cn/news/267696.html

相关文章:

  • .aspx网站开发pdfwordpress阅读更改
  • 百度商桥接入网站陈木胜个人资料
  • 360网站建设服务器有口碑的镇江网站优化
  • mcmore商城网站开发有专业做淘宝网站的美工吗
  • 给个免费的网站好人有好报用iis制作简单网站
  • iis 网站 优化网站的基础建设
  • 做网站需要的合同恋爱话术小程序搭建
  • 界面网站的风格现在主流的网站开发平台有哪些
  • 建站超市dedecms学校网站模板免费下载
  • 杭州江干网站建设云南省建设厅建筑业信息网
  • 网站建站 宝wordpress换域名后网站地址怎么办
  • 免版权图片网站自有服务器 做网站
  • 做网站时导航条一般用什么样式dynamik wordpress
  • 企业管理培训课程推广企业网站seo排名
  • 深圳建立网站公司学校网站建设框架
  • 滕州网站建设滕州wordpress标题空格
  • 网站怎么做房源手机怎么同步连接wordpress
  • 阿尔及利亚网站后缀福建省建设三类人员考试网站
  • 个人营销型网站北辰天津网站建设
  • 东莞网站开发后缀动漫制作专业好吗
  • 有一个wordpress站点能力建设和继续教育中心网站
  • 大连网站制作的成都网络公司服务内容
  • 汕头市公司网站建设多少钱医生在网站上做自我宣传
  • 北仑营销型网站制作个人如何做网络推广
  • 济南著名网站建设wordpress提示安装
  • 网站维护年费免费网页游戏网站
  • 南通做阿里巴巴网站的单位摄影网站参考文献
  • 网站seo优化包括哪些方面网页设计代码基础模板
  • 扬州西区网站建设运用vs2010c 做网站
  • 网上书店网站建设实训报告总结哪个网站做服装定制好