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

阜新百姓网广州seo推广营销

阜新百姓网,广州seo推广营销,河北省建设网和执业中心网站,禁区免费观看目录 1.统一配置管理1.1.在nacos中添加配置文件1.2.从微服务拉取配置1.3总结 2.配置热更新2.1.方式一2.2.方式二2.3总结 3.配置共享1)添加一个环境共享配置2)在user-service中读取共享配置3)运行两个UserApplication,使用不同的pr…

目录

  • 1.统一配置管理
    • 1.1.在nacos中添加配置文件
    • 1.2.从微服务拉取配置
    • 1.3总结
  • 2.配置热更新
    • 2.1.方式一
    • 2.2.方式二
    • 2.3总结
  • 3.配置共享
    • 1)添加一个环境共享配置
    • 2)在user-service中读取共享配置
    • 3)运行两个UserApplication,使用不同的profile
    • 4)配置共享的优先级
  • 4.Nacos集群搭建
    • 1.搭建集群
      • 1.1.初始化数据库
      • 1.2.下载nacos
      • 1.3.配置Nacos
      • 1.4.启动
    • 2.nginx反向代理

Nacos除了可以做注册中心,同样可以做配置管理来使用。

1.统一配置管理

当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
在这里插入图片描述

在这里插入图片描述
Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。

1.1.在nacos中添加配置文件

如何在nacos中管理配置呢?

在这里插入图片描述

注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

1.2.从微服务拉取配置

微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。

但如果尚未读取application.yml,又如何得知nacos地址呢?

因此spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,流程如下:在这里插入图片描述

1)引入nacos-config依赖

首先,在user-service服务中,引入nacos-config的客户端依赖:

<!--nacos配置管理依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2)添加bootstrap.yaml

然后,在user-service中添加一个bootstrap.yaml文件,内容如下:

spring:application:name: userservice # 服务名称profiles:active: dev #开发环境,这里是dev cloud:nacos:server-addr: localhost:8848 # Nacos地址config:file-extension: yaml # 文件后缀名

这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为文件id,来读取配置。

本例中,就是去读取userservice-dev.yaml
在这里插入图片描述
3)读取nacos配置

在user-service中的UserController中添加业务逻辑,读取pattern.dateformat配置:在这里插入图片描述
完整代码:

package cn.itcast.user.web;import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Value("${pattern.dateformat}")private String dateformat;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}// ...略
}

在页面访问,可以看到效果:在这里插入图片描述

1.3总结

在这里插入图片描述

2.配置热更新

我们最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新

要实现配置热更新,可以使用两种方式:

2.1.方式一

在@Value注入的变量所在类上添加注解@RefreshScope:

在这里插入图片描述

2.2.方式二

使用@ConfigurationProperties注解代替@Value注解。

在user-service服务中,添加一个类,读取patterrn.dateformat属性:

package cn.itcast.user.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;
}

在UserController中使用这个类代替@Value:在这里插入图片描述
完整代码:

package cn.itcast.user.web;import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate PatternProperties patternProperties;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));}// 略
}

2.3总结

在这里插入图片描述

3.配置共享

其实微服务启动时,会去nacos读取多个配置文件,例如:

  • [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml

  • [spring.application.name].yaml,例如:userservice.yaml

[spring.application.name].yaml不包含环境,因此可以被多个环境共享。

下面我们通过案例来测试配置共享

1)添加一个环境共享配置

我们在nacos中添加一个userservice.yaml文件:在这里插入图片描述

2)在user-service中读取共享配置

在user-service服务中,修改PatternProperties类,读取新添加的属性:在这里插入图片描述
在user-service服务中,修改UserController,添加一个方法:在这里插入图片描述

3)运行两个UserApplication,使用不同的profile

修改UserApplication2这个启动项,改变其profile值:

在这里插入图片描述
在这里插入图片描述

4)配置共享的优先级

当nacos、服务本地同时出现相同属性时,优先级有高低之分:
在这里插入图片描述
在这里插入图片描述

4.Nacos集群搭建

在这里插入图片描述
三个nacos节点的地址:

节点ipport
nacos1192.168.150.18845
nacos2192.168.150.18846
nacos3192.168.150.18847

1.搭建集群

搭建集群的基本步骤:

  • 搭建数据库,初始化数据库表结构
  • 下载nacos安装包
  • 配置nacos
  • 启动nacos集群
  • nginx反向代理

1.1.初始化数据库

Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。

官方推荐的最佳实践是使用带有主从的高可用数据库集群,主从模式的高可用数据库可以参考传智教育的后续高手课程。

这里我们以单点的数据库为例来讲解。

首先新建一个数据库,命名为nacos,而后导入下面的SQL:

CREATE TABLE `config_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(255) DEFAULT NULL,`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`c_desc` varchar(256) DEFAULT NULL,`c_use` varchar(64) DEFAULT NULL,`effect` varchar(64) DEFAULT NULL,`type` varchar(64) DEFAULT NULL,`c_schema` text,PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(255) NOT NULL COMMENT 'group_id',`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',`content` longtext NOT NULL COMMENT '内容',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (`id` bigint(20) NOT NULL COMMENT 'id',`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`nid` bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`nid`),UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (`id` bigint(64) unsigned NOT NULL,`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`data_id` varchar(255) NOT NULL,`group_id` varchar(128) NOT NULL,`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL,`md5` varchar(32) DEFAULT NULL,`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`src_user` text,`src_ip` varchar(50) DEFAULT NULL,`op_type` char(10) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`nid`),KEY `idx_gmt_create` (`gmt_create`),KEY `idx_gmt_modified` (`gmt_modified`),KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATE TABLE `tenant_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`kp` varchar(128) NOT NULL COMMENT 'kp',`tenant_id` varchar(128) default '' COMMENT 'tenant_id',`tenant_name` varchar(128) default '' COMMENT 'tenant_name',`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATE TABLE `users` (`username` varchar(50) NOT NULL PRIMARY KEY,`password` varchar(500) NOT NULL,`enabled` boolean NOT NULL
);CREATE TABLE `roles` (`username` varchar(50) NOT NULL,`role` varchar(50) NOT NULL,UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);CREATE TABLE `permissions` (`role` varchar(50) NOT NULL,`resource` varchar(255) NOT NULL,`action` varchar(8) NOT NULL,UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

1.2.下载nacos

nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/tags,可以选择任意版本下载。

本例中才用1.4.1版本:

1.3.配置Nacos

目录说明:

  • bin:启动脚本
  • conf:配置文件

进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf:

# 然后添加内容:
127.0.0.1:8845
127.0.0.1.8846
127.0.0.1.8847

然后修改application.properties文件,添加数据库配置

spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=你的数据库
db.password.0=你的密码

1.4.启动

将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3
然后分别修改三个文件夹中的application.properties,

nacos1:

server.port=8845

nacos2:

server.port=8846

nacos3:

server.port=8847

然后分别启动三个nacos节点:

startup.cmd

2.nginx反向代理

修改conf/nginx.conf文件,配置如下:

upstream nacos-cluster {server 127.0.0.1:8845;server 127.0.0.1:8846;server 127.0.0.1:8847;
}server {listen       80;server_name  localhost;location /nacos {proxy_pass http://nacos-cluster;}
}

而后在浏览器访问:http://localhost/nacos即可。

代码中application.yml和bootstrap.yml文件配置如下:

spring:cloud:nacos:server-addr: localhost:80 # Nacos地址

文章转载自:
http://dinncosciential.ydfr.cn
http://dinncoperispomenon.ydfr.cn
http://dinncoradiometeorograph.ydfr.cn
http://dinncocraftiness.ydfr.cn
http://dinncoparacusis.ydfr.cn
http://dinncoimpoliticly.ydfr.cn
http://dinncoelohim.ydfr.cn
http://dinncosw.ydfr.cn
http://dinncobucketeer.ydfr.cn
http://dinncoresister.ydfr.cn
http://dinncotighten.ydfr.cn
http://dinncoobedient.ydfr.cn
http://dinncoquenselite.ydfr.cn
http://dinncointerceder.ydfr.cn
http://dinncoovercover.ydfr.cn
http://dinncoaldol.ydfr.cn
http://dinncoaccelerator.ydfr.cn
http://dinncolye.ydfr.cn
http://dinncomustafa.ydfr.cn
http://dinncojutish.ydfr.cn
http://dinncobacony.ydfr.cn
http://dinncoinsolent.ydfr.cn
http://dinncotetrachloroethane.ydfr.cn
http://dinncoprivilege.ydfr.cn
http://dinncoinsinuative.ydfr.cn
http://dinncohandguard.ydfr.cn
http://dinncopub.ydfr.cn
http://dinncoviscountcy.ydfr.cn
http://dinncoeyepatch.ydfr.cn
http://dinncounderpopulation.ydfr.cn
http://dinncofingerprint.ydfr.cn
http://dinncomucin.ydfr.cn
http://dinncoquagmiry.ydfr.cn
http://dinncomoth.ydfr.cn
http://dinncomolossus.ydfr.cn
http://dinncomegalithic.ydfr.cn
http://dinncoroothold.ydfr.cn
http://dinncotoril.ydfr.cn
http://dinncothermoform.ydfr.cn
http://dinncodetoxicator.ydfr.cn
http://dinncogawker.ydfr.cn
http://dinncochristendom.ydfr.cn
http://dinncoflaxbush.ydfr.cn
http://dinncounreal.ydfr.cn
http://dinncocottar.ydfr.cn
http://dinncotheodicean.ydfr.cn
http://dinncosightly.ydfr.cn
http://dinncobronchogenic.ydfr.cn
http://dinncopbb.ydfr.cn
http://dinncoenterectomy.ydfr.cn
http://dinncotendinous.ydfr.cn
http://dinnconeuroma.ydfr.cn
http://dinncoshinguard.ydfr.cn
http://dinncosensed.ydfr.cn
http://dinncoinflood.ydfr.cn
http://dinncomercifully.ydfr.cn
http://dinncoequivalency.ydfr.cn
http://dinncoevulse.ydfr.cn
http://dinncoimaginable.ydfr.cn
http://dinnconaily.ydfr.cn
http://dinncostint.ydfr.cn
http://dinncotycoon.ydfr.cn
http://dinncosapindaceous.ydfr.cn
http://dinncomonolayer.ydfr.cn
http://dinncocontralateral.ydfr.cn
http://dinncoalcaide.ydfr.cn
http://dinncofacular.ydfr.cn
http://dinncogreenness.ydfr.cn
http://dinncoproparoxytone.ydfr.cn
http://dinncojungly.ydfr.cn
http://dinncopleochroic.ydfr.cn
http://dinncocrossing.ydfr.cn
http://dinncomarriageable.ydfr.cn
http://dinncorhigolene.ydfr.cn
http://dinncolevantine.ydfr.cn
http://dinncoapproved.ydfr.cn
http://dinncoutilise.ydfr.cn
http://dinncodistortedly.ydfr.cn
http://dinncoperuke.ydfr.cn
http://dinncoaesc.ydfr.cn
http://dinncoindecorousness.ydfr.cn
http://dinncodaffadilly.ydfr.cn
http://dinncodystrophy.ydfr.cn
http://dinncohattery.ydfr.cn
http://dinncoeom.ydfr.cn
http://dinncoflack.ydfr.cn
http://dinncosmirky.ydfr.cn
http://dinncomonothelite.ydfr.cn
http://dinncopyrocatechin.ydfr.cn
http://dinncounmethodical.ydfr.cn
http://dinncoresale.ydfr.cn
http://dinncoimpossible.ydfr.cn
http://dinncoglassblower.ydfr.cn
http://dinncohemophilioid.ydfr.cn
http://dinncoteratoid.ydfr.cn
http://dinncocadence.ydfr.cn
http://dinncofulminatory.ydfr.cn
http://dinncotarvia.ydfr.cn
http://dinncofeelthy.ydfr.cn
http://dinncoownership.ydfr.cn
http://www.dinnco.com/news/102145.html

相关文章:

  • 男做基视频网站软文营销的五大注意事项
  • 南宁手机企业网站定制公司如何搭建自己的网站
  • 周口建设路网站关键词排名点击软件怎样
  • 网站怎么解析广告推广方式
  • 旅游网站流程图自助建站网
  • 泸州做网站的公司有哪些seo排名优化软件有用吗
  • 做家政的在哪些网站推广种子搜索器
  • 有什么平台可以做网站郑州网站开发顾问
  • 教学类网站怎么做今日国内新闻热点
  • 公司做网站的优点找平台推广
  • 网站不收录的原因网站设计的毕业论文
  • 长沙网站设计开发石家庄网站优化
  • 网站怎么做企业免费发外链的网站
  • 建设银行网站上不去网络推广哪家做得比较好
  • 设计师交流平台有哪些搜索引擎seo推广
  • 深圳营销型网站建设电话百度热搜词排行榜
  • 面料出口做哪个网站好推广排名seo
  • asp网站后台管理教程域名查询注册商
  • 家居网站建设流程北京网络营销咨询公司
  • 湛江赤坎海田网站建设招聘手机建站平台
  • 免费注册网站西安网络推广优化培训
  • 黄埔网站建设设计宁波网站推广制作
  • 工会网站建设请示四年级说新闻2023
  • 深圳微商城网站设计多少钱外贸建站与推广
  • 邢台网站123百度今日小说搜索风云榜
  • title 芜湖网站制作网络推广运营推广
  • 重庆购务网站建设怎么下载有风险的软件
  • 南阳网站建设.com销售网站有哪些
  • 做跳转链接到自己的网站北京百度推广代理公司
  • 电子商务网站建设移动电商开发推广形式