华为云用户手册
-
适用场景 Spring Boot、Spring Cloud广泛应用于构建微服务应用。使用ServiceComb引擎托管Spring Cloud应用,主要目的是使用高可靠的商业中间件替换开源组件,对应用系统进行更好地管理和运维,改造过程应尽可能降低对业务逻辑的影响。适用于如下场景: 基于Spring Boot开发的应用系统,不具备微服务基本能力。应用系统通过集成Spring Cloud Huawei,具备服务注册发现、动态配置管理等能力。 基于Spring Cloud开源技术体系开发的应用系统,例如已经采用Eureka实现注册发现、采用Nacos实现动态配置,应用系统通过集成Spring Cloud Huawei,使用高可靠的商业中间件替换开源中间件,降低维护成本。 基于Spring Cloud其他开发体系,例如Spring Cloud Alibaba、Spring Cloud Azure等构建的云原生应用,使用Spring Cloud Huawei迁移到华为云运行。
-
约束限制 Nacos对Eureka的兼容,主要是兼容Eureka服务端侧的API,将服务侧注册的客户端实例信息进行保存与刷新,因此如果您仅使用Eureka作为注册中心,那么Nacos的诸多特性如命名空间和配置管理是不能使用的。 使用Eureka作为客户端,仅能在Nacos的“服务管理”中进行查阅,Eureka服务均使用Nacos的默认属性进行展示,即: 默认命名空间:public。 默认分组名称:DEFAULT_GROUP。 在Nacos中在“服务管理”页面创建服务的“保护阈值”设置的值属于Nacos的特性,无法作用于Eureka服务。
-
前置条件 已创建云容器引擎(CCE),创建CCE请参考创建CCE集群。 CCE集群版本需要大于等于1.15。 应用的基础镜像中,需要安装JDK ( 版本为1.8及以上版本 )。 已安装kubectl命令,安装kubectl命令请参考通过kubectl连接集群中相关操作。 已创建ServiceComb引擎实例,详情请参考创建ServiceComb引擎。 CCE集群与ServiceComb引擎处于相同的VPC网络下。 给Sermant Injector预留200m左右的cpu资源和300Mi左右的memory资源。 Sermant Injector版本要求1.0.11及以上,Sermant Agent镜像版本要求1.0.9及以上。
-
概述 CS E提供Sermant Agent,支持Dubbo应用无需任何修改接入ServiceComb引擎,当前已支持应用注册发现、标签路由功能。 Sermant Agent是基于Sermant开源社区构建的、用于CSE微服务治理场景的Agent。 Sermant Agent基于Java Agent技术实现,应用通过Sermant Agent可实现无代理、非侵入方式接入ServiceComb引擎,并获得标签路由能力。 此功能目前处于公测阶段,当前仅在华东-上海一支持。 父主题: 通过Sermant Agent托管Dubbo应用
-
前提条件 已创建云容器引擎(CCE),创建CCE请参考创建CCE集群。 CCE集群版本需要大于等于1.15。 已安装kubectl命令,安装kubectl命令请参考通过kubectl连接集群中相关操作。 已创建ServiceComb引擎实例,详情请参考创建ServiceComb引擎。 CCE与ServiceComb引擎处于相同的VPC网络下。 下载Sermant-examples到本地并解压。 本地编译构建打包机器环境已安装了Java JDK、Maven,并且能够访问Maven中央库。 已在CCE集群上部署Sermant Injector,详情请参考通过模板管理页面部署Sermant Injector将应用接入ServiceComb引擎或者通过Helm客户端部署Sermant Injector。
-
部署Spring Cloud应用 打包Sermant-examples。 在“Sermant-examples”根目录下,打开cmd命令,执行mvn clean package命令,对项目进行打包编译。编译成功后,获取下表中的两个软件包。 表1 软件包列表 软件包所在目录 软件包名称 说明 Sermant-examples/registry-demo/spring-cloud-registry-demo/spring-cloud-registry-consumer/target spring-cloud-registry-consumer.jar 服务消费者 Sermant-examples/registry-demo/spring-cloud-registry-demo/spring-cloud-registry-provider/target spring-cloud-registry-provider.jar 服务生产者 把spring-cloud-registry-consumer.jar复制到“Sermant-examples/registry-demo/spring-cloud-registry-demo/deployment/images/consumer”中。 把spring-cloud-registry-provider.jar复制到“Sermant-examples/registry-demo/spring-cloud-registry-demo/deployment/images/provider”中。 制作镜像。 登录已安装kubectl命令且已部署Sermant Injector的CCE集群中的节点。 把“Sermant-examples/registry-demo/spring-cloud-registry-demo”中的“deployment”文件夹上传至已登录的CCE集群中的节点上。 请参考使用容器引擎客户端上传镜像制作docker镜像,其中,使用到的Dockerfile请参考“Sermant-examples/registry-demo/spring-cloud-registry-demo/deployment/images/consumer”与“Sermant-examples/registry-demo/spring-cloud-registry-demo/deployment/images/provider”目录下的Dockerfile文件按需修改。 部署spring-cloud-registry-consumer.yaml与spring-cloud-registry-provider.yaml。 修改镜像名。 将已上传deployment文件夹到CCE集群中的节点中的“deployment/k8s/spring-cloud-registry-consumer.yaml“与“deployment/k8s/spring-cloud-registry-provider.yaml“中的镜像名修改为您所制作的镜像名。 在已上传deployment文件夹到CCE集群中的节点中的“deployment/k8s“目录下,执行如下命令部署spring-cloud-registry-consumer.yaml与spring-cloud-registry-provider.yaml: kubectl create -f spring-cloud-registry-consumer.yaml kubectl create -f spring-cloud-registry-provider.yaml 若需配置APP名称(默认default)、版本(形如a.b.c的格式,其中a、b、c均为数字,默认为1.0.0)请在yaml中增加SERVICE_META_APPLICATION与SERVICE_META_VERSION环境变量进行配置。如下所示: 验证应用接入ServiceComb引擎。 参考查看微服务列表查看应用(服务名为spring-cloud-registry-consumer与spring-cloud-registry-provider)是否已接入ServiceComb引擎。
-
前置条件 已创建云容器引擎(CCE),创建CCE请参考创建CCE集群。 CCE集群版本需要大于等于1.15。 应用的基础镜像中,需要安装JDK ( 版本为1.8及以上版本 )。 已安装kubectl命令,安装kubectl命令请参考通过kubectl连接集群中相关操作。 已创建ServiceComb引擎实例,详情请参考创建ServiceComb引擎。 CCE集群与ServiceComb引擎处于相同的VPC网络下。 给Sermant Injector预留200m左右的cpu资源和300Mi左右的memory资源。 Sermant Injector版本要求1.0.11及以上,Sermant Agent镜像版本要求1.0.9及以上。
-
标签路由 标签路由版本支持: Spring Cloud Spring Boot Spring Cloud Openfeign RestTemplate Spring Cloud Loadbalancer Spring Cloud Netflix Ribbon Spring Cloud Gateway Spring Cloud Netflix Zuul Edgware.SR2+ 1.5.x 1.4.7.RELEASE 4.3.6.RELEASE - 1.4.7.RELEASE - 1.4.7.RELEASE Finchley.x 2.0.x 2.0.x 5.0.x - 2.0.x - 2.0.x Greenwich.x 2.1.x 2.1.x 5.1.x - 2.1.x - 2.1.x Hoxton.x 2.2.x、2.3.x 2.2.x 5.2.x 2.2.5.RELEASE+ 2.2.x 2.2.x 2.2.x 2020.0.x 2.4.x、2.5.x 3.0.x 5.3.x 3.0.x - 3.0.x - 2021.0.0 2.6.x 3.1.x 5.3.x 3.1.x - 3.1.x -
-
配置管理 Spring Boot Nacos Config Zookeeper Config 1.5.0.RELEASE - 2.6.2 1.5.0.RELEASE+ 1.2.0.RELEASE+ Nacos Config为maven依赖的spring-cloud-starter-alibaba-nacos-config。 Zookeeper Config为maven依赖的spring-cloud-starter-zookeeper-config。 配置管理能力需配合注解@RefreshScope、@Value、@ConfigurationProperties使用。
-
概述 CSE提供Sermant Agent,支持Spring Cloud应用无需任何修改接入ServiceComb引擎,当前已支持应用注册发现、配置、优雅上下线、标签路由等功能。 此功能目前处于公测阶段,当前仅在华东-上海一支持。 Sermant Agent是基于Sermant开源社区构建的、用于CSE微服务治理场景的Agent。 Sermant Agent基于Java Agent技术实现,应用通过Sermant Agent可实现无代理、非侵入方式接入CSE。 父主题: 通过Sermant Agent托管Spring Cloud应用
-
功能介绍 随着istio服务网格的发展,越来越多的应用都会接入服务网格,Sermant Agent提供了一种能让Spring Cloud应用也能访问服务网格中的应用的解决方案。 Spring Cloud应用访问istio应用的部署图如下: istio应用需要注册到istio中,不限制语言,Spring Cloud应用不必注册到istio中,Spring Cloud应用部署的环境可以是ECS/CCE/ASM。Spring Cloud应用会通过Sermant Agent进行istio中的服务发现,然后Spring Cloud应用便可以像调用其它Spring Cloud应用一样,通过服务名调用istio中的服务。 此功能目前处于公测阶段,当前仅在华东-上海一支持。 当ServiceComb引擎为2.x版本且未开启安全认证时,支持此功能。 Sermant Injector版本要求1.0.11及以上,Sermant Agent镜像版本要求1.0.9及以上。
-
设置服务路由策略 配置项:servicecomb.routeRule,配置内容: providerA: | - precedence: 2 match: headers: id: exact: '1' caseInsensitive: false route: - weight: 0 tags: group: base - weight: 100 tags: group: gray - precedence: 1 route: - weight: 100 tags: group: base - weight: 0 tags: group: gray providerB: | - precedence: 2 match: headers: id: exact: '1' caseInsensitive: false route: - weight: 0 tags: group: base - weight: 100 tags: group: gray - precedence: 1 route: - weight: 100 tags: group: base - weight: 0 tags: group: gray 服务路由策略设置说明: 请求头的id参数值精确匹配为1时,consumer的所有请求流量都是从providerA-gray流向providerB-gray。 请求头的id参数值为其他任意值,consumer的所有请求流量都是从providerA流向providerB。
-
Sermant Agent监听配置范围 Sermant Agent使用CSE作为配置中心时,监听的范围有以下三个: app=default&environment=&service={服务名} app=default&environment= public=default app对应为“应用”值; environment对应为“环境”; service对应为“微服务名称”; public为公共配置。 一般设置为app=default&environment=作为通用路由设置。
-
前提条件 已创建云容器引擎(CCE),创建CCE请参考创建CCE集群。 CCE集群版本需要大于等于1.15。 已安装kubectl命令,安装kubectl命令请参考通过kubectl连接集群相关操作。 已创建未开启安全认证的ServiceComb引擎实例,详情请参考创建ServiceComb引擎。 本地编译构建打包机器环境已安装了Java JDK、Maven,并且能够访问Maven中央库。 Sermant Agent开源版本要求1.0.6及以上。
-
操作步骤 为CCE集群安装sermant-injector,请参考CCE部署场景接入指南。 为工作负载(deployment)中的微服务配置版本号或标签。 在下图所示位置为工作负载(deployment)配置环境变量,配置环境变量后,应用注册时,会使用该环境变量进行注册。 apiVersion: app/v1 kind: Deployment metadata: name: dubbo-providerB labels: app: dubbo-providerB spec: replicas: 1 selector: matchLabels: app: dubbo-providerB template: metadata: labels: app: dubbo-providerB sermant-injection: enabled spec: containers: - name: dubbo-providerB image: dubbo-providerB:1.0.0 imagePullPolicy: IfNotPresent env: - name: "SERVICE_META_VERSION" value: "2.0.0" - name: "SERVICE_META_PA RAM ETERS" value: "group:gray" ports: - containerPort: 8004 imagePullSecrets: - name: default-secret 其中: 键SERVICE_META_VERSION,值为服务注册的版本号(如a.b.c的格式,其中a、b、c均为数字),标签应用需要修改为不同于正常应用的版本号。 键SERVICE_META_PARAMETERS,值为服务注册时的自定义标签(形如tag1:value1,tag2:value2),即标签名与标签值以英文冒号分隔,多个标签之间以英文逗号分隔。 当Sermant Agent为1.0.0及以下版本时,使用键为SERVICECOMB_INSTANCE_PROPS。 一般,如果用版本号进行路由,则只需配置SERVICE_META_VERSION,如果用自定义标签进行路由,则只需配置SERVICE_META_PARAMETERS。 为工作负载(deployment)打上标签并重启相关服务。 在下图所示位置为工作负载(deployment)打上标签sermant-injection: enabled。打上标签后,sermant-injector会在Pod重启时自动挂载Sermant Agent,从而通过Sermant Agent注册到CSE上。
-
下发路由规则配置 下发路由规则配置,详情请参考配置管理。 路由规则说明示例: --- - precedence: 2 # 优先级,数字越大,优先级越高。 match: # 请求匹配规则。0..N个,不配置表示匹配。 headers: # http header匹配 id: # 如果配置了多个header,那么所有的header规则都必须和请求匹配 exact: '1' # 配置策略,等于1,详细配置策略见配置策略表。 caseInsensitive: false # false:不区分大小写(默认),true:区分大小写。配置为false时,将统一转为大写进行比较 route: # 路由规则 - weight: 20 # 权重值 tags: version: 1.0.0 # 实例标记。满足标记条件的实例放到这一组。 - weight: 80 # 权重值 tags: version: 1.0.1 # 实例标记。满足标记条件的实例放到这一组。 - precedence: 1 route: - weight: 20 tags: group: red - weight: 80 tags: group: green
-
操作步骤 为CCE集群安装sermant-injector,请参考CCE部署场景接入指南。 为工作负载(deployment)中的微服务配置版本号或标签。 在下图所示位置为工作负载(deployment)配置环境变量,配置环境变量后,应用注册时,会使用该环境变量进行注册。 apiVersion: app/v1 kind: Deployment metadata: name: cloud-providerB labels: app: cloud-providerB spec: replicas: 1 selector: matchLabels: app: cloud-providerB template: metadata: labels: app: cloud-providerB sermant-injection: enabled spec: containers: - name: cloud-providerB image: cloud-providerB:1.0.0 imagePullPolicy: IfNotPresent env: - name: "SERVICE_META_VERSION" value: "2.0.0" - name: "SERVICE_META_PARAMETERS" value: "group:gray" ports: - containerPort: 8004 imagePullSecrets: - name: default-secret 其中: 键SERVICE_META_VERSION,值为服务注册的版本号(如a.b.c的格式,其中a、b、c均为数字),标签应用需要修改为不同于正常应用的版本号。 键SERVICE_META_PARAMETERS,值为服务注册时的自定义标签(形如tag1:value1,tag2:value2),即标签名与标签值以英文冒号分隔,多个标签之间以英文逗号分隔。 当Sermant Agent为1.0.0及以下版本时,使用键为SERVICECOMB_INSTANCE_PROPS。 一般,如果用版本号进行路由,则只需配置SERVICE_META_VERSION,如果用自定义标签进行路由,则只需配置SERVICE_META_PARAMETERS。 为工作负载(deployment)打上标签并重启相关服务。 在下图所示位置为工作负载(deployment)打上标签sermant-injection: enabled。打上标签后,sermant-injector会在Pod重启时自动挂载Sermant Agent,从而通过Sermant Agent注册到CSE上。
-
版本支持 Spring Cloud Version Spring Boot Version Spring Cloud Openfeign Version RestTemplate Version Spring Cloud Loadbalancer Version Spring Cloud Netflix Ribbon Version Spring Cloud Gateway Version Spring Cloud Netflix Zuul Version Edgware.SR2+ 1.5.x 1.4.3.RELEASE+ 4.3.6.RELEASE+ - 1.4.3.RELEASE+ - 1.4.3.RELEASE+ Finchley.x 2.0.x 2.0.x 5.0.x - 2.0.x - 2.0.x Greenwich.x 2.1.x 2.1.x 5.1.x - 2.1.x - 2.1.x Hoxton.x 2.2.x、2.3.x 2.2.x 5.2.x 2.2.5.RELEASE+ 2.2.x 2.2.x 2.2.x 2020.0.x 2.4.x、2.5.x 3.0.x 5.3.x 3.0.x - 3.0.x - 2021.0.0 2.6.x 3.1.x 5.3.x 3.1.x - 3.1.x - 通过Sermant Agent注册到ServiceComb引擎中的应用可以使用标签路由功能。
-
(可选)自定义优雅上下线配置 优雅上下线能力默认开启,若需自定义配置,请参考如下方式: 如果方式一与方式二同时配置,将以方式二为准。 方式一: 在启动Spring Cloud应用时通过环境变量或者-D参数的形式进行配置,配置参数如下: 参数项 说明 grace_rule_startDelayTime 注册延迟时间,默认0秒,若大于0,则开启注册延迟。 grace_rule_enableWarmUp 开启优雅上线能力,默认开启。 grace_rule_warmUpTime 优雅上线时间,单位秒,该配置生效需开启优雅上线功能,默认120秒。 grace_rule_enableGraceShutdown 配置优雅下线能力开关, 默认开启。 grace_rule_shutdownWaitTime 下线前的最大等待时间,默认30S。 grace_rule_enableOfflineNotify 开启下线通知,默认开启。 方式二: 通过配置管理进行配置,配置步骤如下: 登录微服务引擎控制台。 单击,选择区域。 选择“ServiceComb引擎”。 单击待操作的ServiceComb引擎。 选择“配置管理”。 单击右上角的“新建配置”进入新建配置页面。 输入“配置项”,命名为sermant.agent.grace。 此处名称固定为该值。 选择“配置范围”,这里以微服务级配置为例,选择您要配置的服务,如下图所示: “配置格式”选择“YAML”,并自定义优雅上下线配置, 如下: rule: startDelayTime: 0 # 注册延迟时间,默认0秒,若大于0,则开启注册延迟。 enableWarmUp: true # 开启优雅上线能力,默认为true(开启),如需关闭,请设置为fasle。 warmUpTime: 120 # 优雅上线时间,单位秒,该配置生效需开启优雅上线功能,默认120秒。 enableGraceShutdown: true # 配置优雅下线能力开关,默认为true(开启),如需关闭,请设置为fasle。 shutdownWaitTime: 30 # 下线前的最大等待时间,默认30S。 enableOfflineNotify: true # 开启下线通知,默认开启。 单击右下角的“立即创建”,然后重启对应服务实例即可。 下发配置时,请去掉注释,否则会导致下发配置失败。
-
验证优雅上下线能力 验证优雅上线能力。 图1 优雅上线验证部署图 如上图所示,该套nacos应用有nacos-rest-consumer、nacos-rest-provider(两个实例)以及nacos-rest-data服务,其中灰色的实例已关闭开启优雅上线,而绿色实例开启优雅上线功能。 若需关闭预热,请添加环境变量“grace_rule_enableWarmUp=false”进行指定。 而服务nacos-rest-consumer通过接口graceHot进行模拟调用。 下载demo应用并打包。 按照优雅上线验证部署图进行部署并将nacos-rest-provider的其中一个实例开启优雅上线能力。 查看应用是否已全部接入ServiceComb引擎。 参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。 待应用接入ServiceComb引擎后,使用以下脚本invoke-hot.sh模拟调用过程。 #!/bin/bash endpoint=127.0.0.1:31021 url=${endpoint}/graceHot while true do echo `curl -s ${url}` done endpoint为nacos-rest-consumer服务的调用地址,即ip:port。需根据实际nacos-rest-consumer地址进行替换。 查看服务调用情况。 使用脚本stat.sh查看服务调用情况,脚本如下: #!/bin/bash endpoint=127.0.0.1:31021 watch curl ${endpoint}/stat 下图为某个时刻统计的调用结果: 上图中实例x.x.0.55:8009关闭了优雅上线, 实例x.x.0.51:8004开启了优雅上线,观察请求数(requestCount)与QPS,可观察到开启优雅上线的实例的QPS与请求数都小于关闭优雅上线的实例。持续观察流量请求情况,直到两个实例QPS基本持平则结束验证。 验证优雅下线能力。 优雅下线验证部署图如下: 如上图,该套nacos应用有nacos-rest-consumer、nacos-rest-provider(两个实例)、nacos-rest-provider-close-grace(两个实例)以及nacos-rest-data服务,其中服务nacos-rest-provider-close-grace关闭了优雅下线,其他服务开启优雅下线。 服务说明。 nacos-rest-provider-close-grace与nacos-rest-provider同属于一个jar应用,nacos-rest-provider-close-grace请使用环境变量“spring_application_name=nacos-rest-provider-close-grace”进行指定。 关闭优雅下线的方法。 添加环境变量“grace_rule_enableGraceShutdown=false”进行指定。 nacos-rest-consumer通过调用接口graceDownOpen测试验证优雅下线能力;调用接口graceDownClose对比未开启优雅下线时请求处理情况。查看调用情况可使用nacos-rest-consumer接口的stat方法进行请求统计。 下载demo应用并打包。 按照优雅下线验证部署图进行部署,并关闭nacos-rest-provider-close-grace的优雅下线能力。 查看应用是否已全部接入ServiceComb引擎。 参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。 待应用接入ServiceComb引擎后,使用如下脚本invoke.sh模拟请求。 #!/bin/bash endpoint=127.0.0.1:31021 openUrl=${endpoint}/graceDownOpen closeUrl=${endpoint}/graceDownClose while true do echo `curl -s ${openUrl}` echo `curl -s ${closeUrl}` done endpoint为服务nacos-rest-consumer实例的请求地址,即ip:port。需根据实际nacos-rest-consumer地址进行替换。 openUrl为开启优雅下线能力的调用接口。 closeUrl为关闭优雅下线能力的调用接口。 查看应用的请求情况。 参考如下脚本stat.sh查看请求调用情况: #!/bin/bash endpoint=127.0.0.1:31021 watch curl ${endpoint}/stat endpoint为服务nacos-rest-consumer实例的请求地址,即ip:port。 对服务进行缩容,模拟下线。 分别对nacos-rest-provider-close-grace与nacos-rest-provider进行缩容,将实例缩容为1个。 使用4的脚本,查看服务调用情况。 上图中,graceDownClose为关闭优雅下线能力的请求统计,可以看到存在4个错误请求(errorCount), 而下方graceDownOpen为开启优雅下线能力的请求统计,可以看到未出现错误请求。
-
优雅下线实现机制 延迟下线是优雅下线的核心机制,且Sermant Agent还提供了流量统计机制,即服务处理完所有统计的请求后再下线,减少流量丢失,从而实现了优雅下线。 图1 优雅下线结构图 延迟下线 当服务提供者实例下线时,无法避免仍有业务请求还未处理完成,从而可能会出现请求丢失的现象。延迟下线即对下线的实例提供保护,优雅下线插件基于下线实时通知+刷新缓存的机制快速更新上游的实例缓存,服务消费者能尽早感知服务提供者实例下线的行为,同时基于流量统计的方式,确保即将下线的实例尽可能的将流量处理完成,最大程度避免流量丢失。 流量统计 当服务即将下线时,为确保当前请求已全部处理完成,Sermant Agent会尝试等待30s(可配置),定时统计和判断当前实例请求是否均处理完成,处理完成后最终下线。
-
版本支持 Spring Cloud Version Spring Boot Version Zookeeper Discovery Version Nacos Discovery Version Consul Discovery Version Eureka Client Version Edgware.SR2+ 1.5.x 1.x.x、2.0.x 1.5.x 1.x.x、2.0.x、2.1.x 1.4.x、2.0.x、2.1.x Finchley.x 2.0.x 2.x.x 1.5.x、2.0.x、2.1.x 1.3.x、2.0.x、2.1.x 1.4.x、2.0.x、2.1.x Greenwich.x 2.1.x 2.x.x 1.5.x、2.0.x、2.1.x 1.3.x、2.0.x、2.1.x 1.4.x、2.0.x、2.1.x Hoxton.x 2.2.x、2.3.x 2.x.x、3.0.0 - 3.1.0 2.x.x、2020.0.RC1、2021.1 1.3.x、2.0.x、2.1.x、2.2.x 1.4.4.RELEASE - 1.4.7.RELEASE、2.x.x、3.0.0 - 3.1.0 2020.0.x 2.4.x、2.5.x 3.0.0 - 3.1.0 2.x.x、2020.0.RC1、2021.1 3.0.0 - 3.1.0 2.1.x、2.2.x、3.0.0 - 3.1.0 2021.0.0 2.6.x 3.0.0 - 3.1.0 2.x.x、2020.0.RC1、2021.1 3.0.0 - 3.1.0 3.0.0 - 3.1.0
-
优雅上线实现机制 预热是优雅上线的核心机制,Sermant Agent还提供了延迟注册机制,减少流量丢失,从而实现优雅上线。 延迟注册 在服务启动成功之后不立刻注册,而是延迟一段时间再去注册,目的是虽然服务启动成功了,但可能还有一些框架或者业务的代码没有初始化完成,可能会导致调用报错,可以通过设置延迟注册,让服务充分初始化后再注册到注册中心对外提供服务。 预热 该方式主要用于解决当流量突然增加时,可能瞬间把实例压垮的问题。通过预热,让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,目的是采用少流量对服务实例进行初始化,防止服务崩溃。预热是基于客户端实现的,当流量进入时,Sermant Agent会动态调整流量,根据服务的预热配置,对流量进行动态分配。对于开启服务预热的实例,在刚启动时,会给该实例分配较少的流量,随后流量将以曲线方式逐渐增加至与其他实例近乎持平。
-
合理配置日志文件 查看错误日志是定位问题的重要手段,需要合理规划日志输出,并且尽可能降低对系统性能的影响。规划日志文件有如下建议: 使用log4j2或者logback输出日志。 将日志输出到文件,不要依赖于容器的stdout。 打开metrics日志,将metrics日志输出到独立的文件,比如“metrics.log”, 而将业务日志输出到另外的文件,比如“servicecomb.log”。metrics参数配置如下: servicecomb: metrics: window_time: 60000 invocation: latencyDistribution: 0,1,10,100,1000 Consumer.invocation.slow: enabled: true msTime: 3000 Provider.invocation.slow: enabled: true msTime: 3000 publisher.defaultLog: enabled: true endpoints.client.detail.enabled: true 打开access log, 将access log输出到独立的日志文件。 格式化打印业务日志,日志里面包含trace id,可以独立开发一个Handler,配置在Provider Handler的最前面,Handler在接收到请求后打印一条日志,处理完成了打印一条日志,对于问题界定,使用 AOM 快速检索相关日志等非常有帮助。 父主题: 托管Java Chassis应用
-
合理配置线程池参数 线程池是微服务的主要业务处理单元,合理的规划线程池不仅可以最大限度提升系统性能,还能防止异常情况导致系统无法给正常用户提供服务。线程池优化和业务自身的性能有很大关系,不同的场景参数设置不同,需要具体分析。下面分两种场景介绍。开始之前需要对业务的性能做一些基本的摸底,对常见的接口进行测试,查看时延。 业务性能很好的情况。 即非并发场景,接口的平均时延小于10ms。 业务性能很好的时候,为了让业务系统具备更好的可预测性,防止JVM垃圾回收、网络波动、突发流量等对系统的稳定性造成冲击,需要能够快速丢弃请求,并配合重试等措施,以保障波动情况下系统性能可预测,同时不会出现偶然的业务失败,影响体验。 连接数和超时设置 # 服务端verticle实例数,保持默认值即可。建议配置为8~10。 servicecomb.rest.server.verticle-count: 10 # 最大连接数限制。默认值为 Integer.MAX_VALUE。可以结合实际情况估算最大值,使系统具备更好的韧性。 servicecomb.rest.server.connection-limit: 20000 # 连接闲置时间。默认值60秒,一般不需要修改 servicecomb.rest.server.connection.idleTimeoutInSeconds: 60 # 客户端verticle实例数,保持默认值即可。建议配置为8~10。 servicecomb.rest.client.verticle-count: 0 # 一个客户端与服务器建立的最大连接数为 verticle-count * maxPoolSize,不要超过线程数。 # 这里是 10*50=500. 实例非常多的场景,要减小单个实例的连接数。 servicecomb.rest.client.connection.maxPoolSize: 50 # 连接闲置时间。默认值30 秒,一般不需要修改,要小于服务端的连接闲置时间。 servicecomb.rest.client.connection.idleTimeoutInSeconds 业务线程池配置 # 线程池组数,建议 2~4 servicecomb.executor.default.group: 2 # 建议 50~200 servicecomb.executor.default.thread-per-group: 100 # 线程池排队队列大小,默认值为Integer.MAX_VALUE。高性能场景不要使用默认值,以快速丢弃请求 servicecomb.executor.default.maxQueueSize-per-group: 10000 # 队列最大等待时间,如果超过,理解丢弃请求的处理并返回。默认值为0。 # 高性能场景配置小的排队超时时间,快速丢弃请求 servicecomb.rest.server.requestWaitInPoolTimeout: 100 # 设置比较短的超时时间,快速丢弃请求, 但是不建议这个值小于1秒,可能导致很多问题。 servicecomb.request.timeout=5000 业务性能不那么好的情况。 即非并发场景,接口的平均时延大于100ms。时延高通常是由于业务代码存在IO、资源等等待,CPU利用率上不去导致的。如果是由于计算复杂导致的,调优会变得复杂。 当业务性能不太好的时候,下面几个参数值需要调大,否则业务会大量阻塞。业务性能不好,通过调大参数能够保证系统的吞吐量,应对突发流量来临时带来的业务失败。不过这个是以牺牲用户体验为代价的。 # 服务端连接闲置时间。 servicecomb.rest.server.connection.idleTimeoutInSeconds: 120000 # 客户端连接闲置时间。 servicecomb.rest.client.connection.idleTimeoutInSeconds: 90000 # 线程池组数。 servicecomb.executor.default.group: 4 # 线程池大小。 servicecomb.executor.default.thread-per-group: 200 # 线程池排队队列大小,性能不好的情况下需要排队 servicecomb.executor.default.maxQueueSize-per-group: 100000 # 配置较大的超时时间 servicecomb.rest.server.requestWaitInPoolTimeout: 10000 servicecomb.request.timeout=30000 父主题: 托管Java Chassis应用
-
合理的规划系统架构 Java Chassis提供了丰富的组件,帮助搭建具备足够韧性的云原生系统。Edge Service具备通用网关的大部分能力,并且集成了Java Chassis的服务治理能力,可以实现Java Chassis多协议转发。一个典型的Java Chassis云原生架构如下: 该架构采用静态页面和服务分离,这样静态页面可以灵活的使用CDN、Nginx等形态部署。Edge Service屏蔽了内部微服务的结构,一般会搭配流量控制、安全认证等服务治理策略,使得内部服务能够灵活的进行拆分合并,降低内部服务直接面对流量攻击的风险。 父主题: 托管Java Chassis应用
-
问题描述 当使用Spring Cloud Huawei时,启动微服务时,当报错示例如下: send request to https://192.168.10.1:30100/v4/default/registry/microservices failed and retry to https://192.168.10.1:30100/v4/default/registry/microservices once. org.apache.http.conn.HttpHostConnectException: Connect to 192.168.10.1:30100 [/127.0.0.2] failed: Connection refused: connect at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156) ~[httpclient-4.5.13.jar:4.5.13] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]
-
解决方法 启动服务在本地部署 在本地机器上使用curl https://注册中心IP地址:30100/health命令检查注册中心工作状态,查看是否返回类似如下信息: curl: Failed to connect to xxx.xxx.xxx.xxx port 30100: Connection refused 如果是,请检查是否因注册中心IP地址错误、注册中心端口号错误或者网络被隔离,导致网络不通。 启动服务在云上微服务引擎部署 微服务通过ServiceStage部署在微服务引擎,注册中心地址可以通过环境变量自动注入。请检查注入的注册中心地址是否正确。如果注册中心地址错误,请修改为正确地址并重新部署服务。
-
动态配置的类型选择 微服务引擎2.0的配置中心支持text、yaml等多种格式。 简单的key-value配置项 可以使用text类型,配置中心的key对应于代码中的key。 大量的配置 使用yaml格式,配置中心的key会被忽略,全量的key-value在yaml文件中定义。 ServiceComb引擎1.x不支持yaml格式,可以通过Spring Cloud Huawei适配,来使用yaml,需要在微服务bootstrap中增加如下配置: spring: cloud: servicecomb: config: fileSource: consumer.yaml # 需要按照yaml解析的配置项列表,以逗号分隔 初次使用ServiceComb引擎2.x 建议选择Spring Cloud Huawei的最新版本,最新版本包含更多的特性并针对历史问题进行了较好的优化。
-
Mongo client升级变更 问题描述 MongoDbFactory的接口存在变更,需要调整为新版本的用法。 解决方案 @Bean public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) { DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory); MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context); mappingConverter.setCustomConversions(beanFactory.getBean(MongoCustomConversions.class)); // other customization return mappingConverter; } @Bean public MongoClientOptions mongoOptions() { return MongoClientOptions.builder().maxConnectionIdleTime(60000).socketTimeout(60000).build(); }
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- ...
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章