spring cloud的常用配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenrushui/article/details/90211375

 

#注意组件的常用配置,网上有的
server.port=11101
server.context-path=/doctor
spring.application.name=${server.port}-pica-cloud-doctor
spring.application.hospital.name=11501-pica-cloud-hospital

#config server settings
spring.cloud.config.name=com.pica.cloud.base.doctor
spring.cloud.config.profile=dev
spring.cloud.config.label=publish
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server

#eureka配置,以后必须配置完整
#实例名称
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
#注册中心集群地址
eureka.client.service-url.defaultZone=http://192.168.100.200:7891/eureka/,http://192.168.100.200:7891/eureka/
#把当前添加到注册中心,还有单点配置.
#eureka.client.serviceUrl.defaultZone=http://localhost:7000/eureka/
#通过swagger暴露当前微服务的接口信息
eureka.instance.status-page-url=http://${spring.cloud.client.ipAddress}:${server.port}/swagger-ui.html
#定义服务续约任务(心跳)的调用间隔,单位:秒
eureka.instance.lease-renewal-interval-in-seconds=10
#定义服务失效的时间,单位:秒
eureka.instance.lease-expiration-duration-in-seconds=10
#设置当前实例的主机名称
eureka.instance.hostname=${spring.cloud.client.ipAddress}
#设置显示ip地址
eureka.instance.prefer-ip-address=true

#feign settings
feign.hystrix.enabled=true
#使用httpclient进行网络请求
feign.httpclient.enabled=true
#feign调用默认是1000毫秒=1秒 应该设置成更长时间1000 * 60 * 5  = 5分钟
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
#重试机制,半开试探休眠时间
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=300000
#熔断器强制关闭
hystrix.command.default.circuitBreaker.forceClosed=true
#hystrix.command.default.execution.timeout.enabled=false

#ribbon settings
#请求处理的超时时间
ribbon.ReadTimeout=300000
ribbon.SocketTimeout=300000
#请求连接的超时时间
ribbon.ConnectTimeout=30000

#zipkin的配置
#zipkin服务器的地址
spring.zipkin.base-url=http://192.168.100.100:7895
#即100%的概率将链路的数据上传给Zipkin Server
spring.sleuth.sampler.percentage=1.0

#配置映射规则
#映射的url,#被映射的微服务
zuul.routes.test1.path=/api-a/**
zuul.routes.test1.service-id=ROBBIN-CLIENT
zuul.routes.test2.path=/api-b/**
zuul.routes.test2.service-id=CLIENT9001

#rabbitmq的配置
spring.rabbitmq.host=192.168.100.200
spring.rabbitmq.port=5672
spring.rabbitmq.username=app
spring.rabbitmq.password=AqLfvyWO

#jackson settings
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false

#mybatis settings
mybatis.configuration.map-underscore-to-camel-case=true

#local settings
logging.config=classpath:log4j2-dev.xml

management.security.enabled=false


#服务端使用
#eureka配置 
#todo:这行是什么意思? 当前eureka注册到哪台主机上,访问地址直接是#http://${eureka.instance.hostname}:${server.port}/
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#eureka注册中心的地址,其他微服务要进行配置的
#eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
#eureka集群配置
eureka.client.service-url.defaultZone=http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/

#git仓库地址
spring.cloud.config.server.git.uri=https://github.com/chenrushui/config.git
#哪个分支
spring.cloud.config.label=master

https://note.youdao.com/ynoteshare/index.html?id=331e5c692595b422cd2656c0087f6482&type=note

 

实例别名(不是微服务的名称,包含了微服务的名称),显示ip地址。

#如何让eureka中显示ip地址和端口?实例名称是ip地址+端口号
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port}
eureka.instance.hostname=${spring.cloud.client.ipAddress}
eureka.instance.ip-address=true

如何建立Eureka Server集群?高可用的注册中心。有什么注意事项?

当前Eureka Server节点注册到其他Eureka节点。就是说集群中的Eureka Server节点相互注册。

eureka.client.service-url.defaultZone=http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/

注意域名与主机的映射。

 

如何建立微服务集群?

微服务的名称属性一样,端口属性不一致。微服务的名称一样,才能进行负载均衡;通过微服务的名称进行调用。

微服务的名称,会转成ip,然后通过ip进行调用。同一个微服务名称在Eureka Server上有多个实例

 

Eureka Server

管理后台地址:http://localhost:8000/

注册中心的地址:http://localhost:8000/eureka/

这两个地址有什么区别? eureka的,感觉忘了好多。

客户端:地址必须要一模一样才行,否者连接不到Eureka Server。

 

如何调用微服务,微服务之间如何通讯? restful api进行微服务之间的通讯

RestTemplate类+微服务的名称,注意参数

 

如何通过Robbin实现负载均衡?

使用注解@LoadBalanced,默认的负载均衡策略是轮询。

可以自定义负载均衡算法。

 

如何通过Feign调用微服务?

1)提供方:对外提供feign接口,并且开启Feign注解。

2)把微服务打包,上传到私服。

3)添加依赖包,实例化Feign接口,直接调用即可。

feign通过服务的名称调用微服务,所以只要把被调用的微服务运行起来,即可实现负载均衡。

 

如何搭建配置中心config server?

1)从配置中心读取到配置文件后,不用做其他处理即可。

2)读取的配置是一个环境的配置文件,比如dev环境,pro环境。

3)如何一个仓库中有多个配置文件怎么区分?多个微服务的多个配置文件在一个仓库里面。

application-doctor-dev.properties

application-doctor-test.properties

application-hospital-dev.properties

application-hospital-test.properties

 

前瞻性和预见性

1、微服务的依赖层级:依赖关系,解决单个微服务集群的性能瓶颈。

2、微服务的重要级别:进行熔断处理,防止整个服务雪崩。

 

微服务启动的两个过程:

微服务启动的时候,从配置中心读取配置;启动成功后,向Eureka Server中心注册自己。

 

微服务服务治理

其实要想服务化,服务治理是关键。dubbo就是一个带有服务治理功能的RPC框架。

1、要达到什么目的?

2、使用什么手段实现?

3、服务文档,关键路径分析,

调度中心:服务容量评估。

监控中心:服务调用统计。

治理中心:管理服务呀,比如服务如何注册、如何被发现、如何序列化、如何监控、如何负载均衡等。

注册中心:服务注册与发现。  

 

微服务容器化:

1、对各服务模块进行打包后编写DockerFile。

2、在Docker上进行容器化部署。

3、运行和管理docker服务。

 

微服务集群:所有的微服务都在一个EurekaServer里面注册。先搭建一个注册中心。

配置服务部署多份,通过负载均衡,从而高可用。cluster,微服务集群。

如果想建立微服务集群,必须用到EurekaServer。

 

如何搭建高可用的分布式配置中心

1、一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件。

2、当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用。

项目结构:config Server------>eureka Servet<------config Client.

什么是eureka-client?

什么是eureka-server? 一定要区别清楚

config server 变成eureka-client,向eureka-server进行注册;

config client页 变成eureka-client,向eureka-server进行注册;

步骤:

1)为了实现config集群,需要搭建Eureka Server注册中心。

spring-cloud-starter-eureka-server

2)创建config server微服务,配置git仓库信息;

Config Server常用配置:

spring.cloud.config.server.git.uri=https://github.com/forezp/SpringcloudConfig/

spring.cloud.config.label=master

spring.cloud.config.server.git.username= your username

spring.cloud.config.server.git.password= your password

3)把config server当做Eureka client,向Eureka Server进行注册

spring-cloud-starter-eureka

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

即是config server 优势eureka client。

4)config client的常用配置,从Eureka Server中获取配置信息,从注册中心获取可用的微服务实例。

spring.cloud.config.label=master spring.cloud.config.profile=dev

注册中心的地址

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

spring.cloud.config.discovery.enabled=true

config server的微服务名称

spring.cloud.config.discovery.serviceId=config-server

 

Eureka依赖名称:

spring-cloud-starter-eureka

spring-cloud-starter-eureka-server

 

云压测

保障高并发:企业必须从传统性能测试转向云压测。

保障系统能够承担高并发请求。

性功测试: 负载测试,压力测试。

很多公司的分布式CDN节点已经超过4000个,用户的对外服务带宽突破10Gbps。

云压测平台,传统性能测试工具。

如果数据库连接数到达上限,用户请求无法及时处理,也会给企业发展造成无法估量的损失。

越来越多的企业开始重视性能测试,必须将各种潜在的性能问题,提前扼杀在摇篮中。

 

CDN加速

CDN的全称是Content Delivery Network,即内容分发网络。

CND加速主要是加速静态资源,如网站上面上传的图片、媒体,以及引入的一些Js、css等文件。

CND加速需要依靠各个网络节点,例如100台CDN服务器分布在全国范围,从上海访问,会从最近的节点返回资源,这是核心。

CND服务器通过缓存或者主动抓取主服务器的内容来实现资源储备。

加速静态资源的响应。

 

1、在pom.xml中使用distributionManagement将项目打包上传到nexus私服

2、< repository >节点下的< id >对应setting.xml文件中的server的id

3、maven连接nexus需要验证用户名和密码,一般来说,分发构件到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配置认证信息。

distributionManagement标签(id,name,url),server标签

快照版本,发行版本,install与deploy命令。

    <distributionManagement>
        <repository>
            <id>nexus</id>
            <name>releases</name>
            <url>http://192.168.100.00:8082/repository/maven-public/</url>
        </repository>
    </distributionManagement>

 

如何配置maven项目连接私服(nexus)?

maven连接私服的配置分为两步

1、配置maven可以连接私服打包上传项目(maven的deploy指令)(打包上传)

2、配置maven可以从私服上下载jar包 (下载jar包和仓库)

repositories可以配置多个仓库,仓库id和仓库地址.repositories,pluginRepositories。

插件仓库,maven的运行依赖插件,也需要从私服下载插件 。从远程仓库下载镜像。

 

如何搭建私服,如何登陆私服? url+用户名密码

[ˈneksəs]

上传jar包文件,Maven仓库,库文件搜索

核心理念:所有的依赖都从nexus上获取,如果nexus上没有则从maven中央仓库获取。

创建微服务的项目模板。

从私服下载插件。

核心理念:私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

公司一般都有个自己的私服来管理各种jar包。

本地仓库----->私服----->远程仓库。

在配置文件中修改端口号,统一账号   admin  admin123。

如何进行私服仓库配置?

私服中仓库的分类:仓库组,宿主仓库,代理仓库,远程仓库。

如何新建仓库?仓库id,仓库民称,远程仓库地址。

如何将仓库添加到仓库组中?

为了使用nexus的索引查找功能,将所有的代理仓库的远程索引打开。

注意:仓库中不需要其他的配置,只需要远程仓库的配置即可,地址和登陆信息。

 

所有的微服务都注册到同一个eureka Server,包含config server;整个项目只需要一个eureka Server集群就好。

微服务cluster:微服务名称相同;注册到同一个eureka server。

 

如何显示微服务信息?进行服务发现设置。

如果服务提供者和zuul网关在同一台机器上,大家都是localhost的域名,那就没问题,能发现服务;

如果服务提供者和zuul网关不在同一台机器上,会报一个没找到服务的异常,原因是根据localhost和端口没有找到相应的服务。

此时,一种解决方法是让服务提供者上报自己的 ip地址,并显示在Eureka的注册列表中。

只需要在服务者的配置文件application.properties上添加两个配置:

eureka.instance.prefer-ip-address=true

eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

 

Feign的调用过程

1、feign的调用分两层,ribbon的调用和hystrix的调用,高版本的hystrix默认是关闭的,所以在application.properties配置文件中设置ribbon即可。

2、Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。半开试探休眠时间,重试机制,查看是否服务恢复调用。

 

spring cloud sleuth 特别好的一篇博客

https://www.cnblogs.com/xingzc/p/9413860.html

 

展开阅读全文

没有更多推荐了,返回首页