欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DotNetCore 注册使用SpringCloud实现微服务负载高可用

程序员文章站 2022-07-09 17:16:49
...

以下是netcore 如何注册eurake和通过zuul进行调用的教程方法。以及springcloud-eurake和springcloud-zuul的centos7安装教程。

引用包:Steeltoe.Discovery.ClientCore

注册包:

public void ConfigureServices(IServiceCollection services)

{

services.AddDiscoveryClient(Configuration);

}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)

{

// Add Steeltoe Discovery Client service

app.UseDiscoveryClient();

}

增加配置:

"spring": {

"application": {

"name": "TestUserApi"

}

},

"eureka": {

"client": {

"serviceUrl": "http://192.168.86.129:9000/eureka/",

"shouldFetchRegistry": false,

"shouldRegisterWithEureka": true

},

"instance": {

"port": 11002,

"preferIpAddress": true,

"instanceId": "192.168.86.129:11002"

}

}

如果开启日志:

"Logging": {

"IncludeScopes": false,

"LogLevel": {

"Default": "Information",

"Microsoft": "Warning",

"Microsoft.Hosting.Lifetime": "Information",

//打开日志

"Steeltoe": "Debug"

}

}

结果:打开地址 http://192.168.86.129:9000/ 如下图,如果服务已经被注册则完成

 

DotNetCore 注册使用SpringCloud实现微服务负载高可用

调用zuul地址:ip:9999/[服务名]/接口地址

如:http://192.168.86.129:9999/testuserapi/User/Login?user=123&pwd=5675676

DotNetCore 注册使用SpringCloud实现微服务负载高可用

注: 应用名称 servicehall 必须为小写才能被调用,如果大写或者驼峰均返回404


zuul 配置文件application.properties:

如:

spring.application.name=service-gateway

server.port=9999

ribbon.eureka.enabled=true

ribbon.listOfServers=http://localhost:9107

#ribbon的时间的四倍要小于hystrix-->timeoutInMilliseconds

#处理超时时间 默认5秒

ribbon.ReadTimeout=3000

#链接超时时间 默认2秒

ribbon.ConnectTimeout=3000

eureka.client.serviceUrl.defaultZone=http://localhost:9000/eureka/

zuul.host.socket-timeout-millis=60000

zuul.host.connect-timeout-millis=10000

zuul.sensitive-headers=true

#断路切换超时

feign.hystrix.enabled=true

hystrix.command.default.execution.timeout.enabled=true

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000

#zuul.routes.order.path=/order/**

#zuul.routes.order.serviceId=order

----------------------------------------------------------------------------------------------------------------

如果是zuul(网关)的超时时间需要设置zuul、hystrix、ribbon等三部分:

 

zuul超时设置

#zuul超时设置

#默认1000

zuul.host.socket-timeout-millis=2000

#默认2000

zuul.host.connect-timeout-millis=4000

 

hystrix超时设置

#熔断器启用

feign.hystrix.enabled=true

hystrix.command.default.execution.timeout.enabled=true

#断路器的超时时间,下级服务返回超出熔断器时间,即便成功,消费端消息也是TIMEOUT,所以一般断路器的超时时间需要大于ribbon的超时时间,ribbon是真正去调用下级服务

#当服务的返回时间大于ribbon的超时时间,会触发重试

#断路器的超时时间默认为1000ms,太小了

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000

#断路器详细设置

#当在配置时间窗口内达到此数量的失败后,进行短路。默认20个)

#hystrix.command.default.circuitBreaker.requestVolumeThreshold=20

#短路多久以后开始尝试是否恢复,默认5s)

#hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5

#出错百分比阈值,当达到此阈值后,开始短路。默认50%)

#hystrix.command.default.circuitBreaker.errorThresholdPercentage=50%

 

ribbon超时设置

#ribbon请求连接的超时时间,限制3秒内必须请求到服务,并不限制服务处理的返回时间

ribbon.ConnectTimeout=3000

ribbon.SocketTimeout=5000

#请求处理的超时时间 下级服务响应最大时间,超出时间消费方(路由也是消费方)返回timeout

ribbon.ReadTimeout=5000

# 单独设置某个服务的超时时间,会覆盖其他的超时时间限制,服务的名称以注册中心页面显示的名称为准,超时时间不可大于断路器的超时时间

#service-a.ribbon.ReadTimeout=50000

#service-a.ribbon.ConnectTimeout=50000

 

重试机制

#重试机制

#该参数用来开启重试机制,默认是关闭

spring.cloud.loadbalancer.retry.enabled=true

#对所有操作请求都进行重试

ribbon.OkToRetryOnAllOperations=true

#对当前实例的重试次数

ribbon.MaxAutoRetries=1

#切换实例的重试次数

ribbon.MaxAutoRetriesNextServer=1

#根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由MaxAutoRetries配置),

#如果不行,就换一个实例进行访问,如果还是不行,再换一次实例访问(更换次数由MaxAutoRetriesNextServer配置),

#如果依然不行,返回失败信息。


linux系统JDK离线安装

系统环境为centos7.5 亲测有效。

1.把安装包拷贝到(/usr/local/software)目录下(目录自定义)

2.解压缩

tar -zxvf jdk-8u171-linux-x64.tar.gz

3.配置环境

vi /etc/profile

4.编辑profile文件,在末尾添加

export JAVA_HOME=/usr/local/software/jdk1.8.0_171

export JRE_HOME=/usr/local/software/jdk1.8.0_171/jre

export PATH=$PATH:/usr/local/software/jdk1.8.0_171/bin

5.使修改生效

source /etc/profile