DotNetCore 注册使用SpringCloud实现微服务负载高可用
以下是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/ 如下图,如果服务已经被注册则完成
调用zuul地址:ip:9999/[服务名]/接口地址
如:http://192.168.86.129:9999/testuserapi/User/Login?user=123&pwd=5675676
注: 应用名称 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